Перейти к контенту

Forums Visibility / Видимость Форумов / 2.1.x


Рекомендуемые сообщения

нет планов, но пока инструкция в виде мусора

ща соберу и выложу

 

инструкцию буду собирать в этой теме

 

1. запрос

ALTER TABLE ibf_members ADD invisible_forums VARCHAR(255) DEFAULT NULL

Если у вас на форуме больше 50 разделов, лучше сделать запрос

ALTER TABLE ibf_members ADD invisible_forums text

 

2. Изменение шаблона skin_ucp -- Menu_bar

найти

<{ITEM_START}> <a href="{ipb.script_url}act=UserCP&CODE=04">{ipb.lang['m_board_opt']}</a><br />

добавить после

<{ITEM_START}> <a href='{ipb.script_url}act=UserCP&CODE=333'>Видимость форумов</a><br />

у предыдущего автора код был 666))

если хотите, можете добавить "Видимость форумов" как языковую переменнную в lang_ucp.php

 

3. Добавить шаблон в skin_ucp

Название - forum_header

Переменные -

Содержание -

<form action="{ipb.vars['board_url']}/index.php" method="post" name='fview'>
                <input type='hidden' name='act' value='UserCP'>
                <input type='hidden' name='CODE' value='999'>
                <div class="formsubtitle">Выберите форумы, которые не хотите видеть</div>
                <div class="borderwrapm">
                <table class='ipbtable' cellspacing="1">
                <tr>
                  <th align='center' width='5%'>inVisible</td>
                  <th align='left' width='95%'>{ipb.lang['ft_forum']}</td>
                </tr>

языковая переменная аналогично

 

4. Добавить шаблон в skin_ucp

Название - forum_row

Переменные - $data=""

Содержание -

<tr>
                  <td class='row1' align='center' width='5%'><input name=invForums[] type="checkbox" value="{$data['id']}" {$data['checked']}></td>
                  <td class='row1' align='left'>
                      <b><a href='{ipb.script_url}act=SF&f={$data['id']}'>{$data['name']}</a></b>
                      <br><span class='desc'>{$data['description']}</span>
                  </td>
                </tr>

 

5. Добавить шаблон в skin_ucp

Название - forum_end

Переменные -

Содержание -

<tr>
<td align='right' class='titlemedium' valign='middle' colspan='5'><input type="submit" value="Поменять" class='forminput'></td></tr>
</table>
</div>
</form>

языковая переменная аналогично по желанию

 

6. изменение файла sources/action_public/boards.php

найти

			foreach( $this->ipsclass->forums->forum_cache[ $fid ] as $id => $forum_data )
		{

добавить после

				if (strpos(",".$this->ipsclass->member['invisible_forums'].",",",".$forum_data['id'].",") !== false) 	continue;

 

найти

						foreach( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ] as $id => $forum_data )
					{

добавить после

							if (strpos(",".$this->ipsclass->member['invisible_forums'].",",",".$forum_data['id'].",") !== false) continue;

 

7. изменение файла sources/action_public/usercp.php

найти

			case '50':
			$this->forum_tracker();
			break;
		case '51':
			$this->remove_forum_tracker();
			break;

добавить после

			case '333':
			$this->forums_view();
			break;
		case '999':
			$this->do_forums_view();
			break;

 

найти

}

?>

добавить перед, не промахнуться!

 	function forums_view() {

		$this->output .= $this->ipsclass->compiled_templates['skin_ucp']->forum_header();

	$permgids .= $this->ipsclass->member['g_perm_id'];
	if ($this->ipsclass->member['mgroup_others'])
	{
		$this->ipsclass->DB->query("SELECT g_perm_id from ibf_groups WHERE g_id IN (".substr($this->ipsclass->member['mgroup_others'],1,strlen($this->ipsclass->member['mgroup_others'])-2).")");
		while ($gid = $this->ipsclass->DB->fetch_row())
		{
			$permgids .= ",".$gid['g_perm_id'];
		}
	}
	if ($this->ipsclass->member['org_perm_id'])
	{
		$permgids .= substr($this->ipsclass->member['org_perm_id'],0,strlen($this->ipsclass->member['org_perm_id'])-1);
	}		

	//----------------------------------------------------------
		// Get all forums and categories data from database
		// and order it by forums and categories position
		//----------------------------------------------------------

	$ignore_me = array( 'redirect_url', 'redirect_loc', 'rules_text', 'permission_custom_error', 'notify_modq_emails' );

	if ( $this->ipsclass->vars['forum_cache_minimum'] )
	{
		$ignore_me[] = 'description';
		$ignore_me[] = 'rules_title';
	}


	$this->ipsclass->DB->query("SELECT *  FROM ibf_forums");
	//---------------------------------------------------------
	// Rendering categories 'n' forums list
	//---------------------------------------------------------
		if ( $this->ipsclass->DB->get_num_rows() )
		{

			$last_cat_id = -1;

			while( $forum = $this->ipsclass->DB->fetch_row() )
			{
			if ($forum['parent_id'] == -1)
			{
				continue;
			}

			$perms = unserialize(stripslashes($forum['permission_array']));

			$forum['read_perms']   = $perms['read_perms'];

				if ($last_cat_id != $forum['parent_id'])
				{
					$last_cat_id = $forum['parent_id'];

					$category_name = $this->ipsclass->compiled_templates['skin_ucp']->subs_forum_row($forum['cat_id'], $forum['cat_name']);
			}
			else
			{
				$category_name= "";
			}

			$allowed = explode(',',$permgids);

			$access = 0;
			foreach($allowed as $gid)
			{
				if (strpos(",".$forum['read_perms'].",",",".$gid.","))
				{
					$access = 1;
				}
			}

			if ($forum['read_perms'] == '*' or $access )
			{
				if (strpos(",".$this->ipsclass->member['invisible_forums'].",",",".$forum['id'].",") !== false) $forum['checked']="checked";
				$this->output .= $category_name . $this->ipsclass->compiled_templates['skin_ucp']->forum_row($forum);
			}

		}

	}
	else
	{
		$this->output .= $this->ipsclass->compiled_templates['skin_ucp']->forum_subs_none();
	}

	$this->output .= $this->ipsclass->compiled_templates['skin_ucp']->forum_end();

	$this->page_title = $this->ipsclass->lang['t_welcome'];
		$this->nav		= array( "<a href='".$this->ipsclass->base_url."act=UserCP&CODE=00'>".$this->ipsclass->lang['t_title']."</a>" );

	}

	//*******************************************************************/
	//| Forums Visibility Change function
	//|
	//| Change user inVisible forums list.
	//|
	//*******************************************************************/
	function do_forums_view()
	{

	//---------------------------------------------------------
	// If no inVisible forums then make default variable value
	//---------------------------------------------------------
	if (empty($this->ipsclass->input['invForums']))
		{
			$this->ipsclass->input['invForums'][] = '0';
		}

	//---------------------------------------------------------
	// Create string of inVisible forums id's
	//---------------------------------------------------------
	foreach($this->ipsclass->input['invForums'] as $val) $invis_forums_list .= $val.",";
	$invis_forums_list = substr($invis_forums_list,0,strlen($invis_forums_list)-1);

	//---------------------------------------------------------
	//update user profile in DataBase
	//---------------------------------------------------------
	$this->ipsclass->DB->query("UPDATE ibf_members SET invisible_forums='$invis_forums_list' WHERE id='".$this->ipsclass->member['id']."'");

	//---------------------------------------------------------
	//redirect to the Forums List
	//---------------------------------------------------------
	$this->ipsclass->print->redirect_screen( 'Видимость форумов изменена', 'act=UserCP&CODE=333' );
}

и тут тоже языковая переменная

 

8. изменение файла sources/classes/class_session.php

найти

id, name, mgroup, member_login_key, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track, rep_allow, rep_notify, qr_type,
															  mod_posts, language, skin, new_msg, show_popup, msg_total, time_offset, posts, joined, last_post, subs_pkg_chosen,
															  ignored_users, login_anonymous, last_visit, last_activity, dst_in_use, view_prefs, org_perm_id, mgroup_others, temp_ban, sub_end,
															  has_blog, members_markers, members_editor_choice, members_auto_dst, members_display_name, members_created_remote,
															  members_cache, members_disable_pm

добавить после

, invisible_forums

да так, с запятой

ии не спрашивайте потом, почему ругается

 

вот наверное и все

 

Jax

отправил в архив

правда могут быть глюки)

Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.