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

InVisible forums / Невидимые форумы


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

Есть такая модификация для 1.1.... и для 2.1.x http://www.ibresource.ru/forums/index.php?showtopic=44225

Но для 2.3.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="{$this->ipsclass->base_url}act=UserCP&CODE=04">{$this->ipsclass->lang['m_board_opt']}</a><br />

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

				<{ITEM_START}> <a href='{$this->ipsclass->base_url}act=UserCP&CODE=333'>Видимость форумов</a><br />

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

Название - forum_header

Переменные -

Содержание -

<form action="{$this->ipsclass->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%'>{$this->ipsclass->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='{$this->ipsclass->base_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='center' class='row1' valign='middle' colspan='2'><input type="submit" value="Сохранить изменения" class='forminput'></td></tr>
</table>
</div>
</form>

(за этот фрагмент 10x Hugo Weaving)

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

 

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

Название - forum_cat_row

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

Содержание -

				<tr>
			   <td class='row1' align='left' colspan="2">
				   <b><a href='{$this->ipsclass->base_url}act=SF&f={$data['id']}'>{$data['name']}</a></b>
				   <br><span class='desc'>{$data['description']}</span>
			   </td>
			 </tr>

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

 

найти

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

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

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

найти

				foreach( $this->ipsclass->forums->forum_cache[ $root_id ] 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 $forum_data )
					{

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

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

 

8. изменение файла 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();

		foreach( $this->ipsclass->forums->forum_cache['root'] as $id => $forum_data )
		{
		$cat_data = $forum_data;
		$this->output .= $this->ipsclass->compiled_templates['skin_ucp']->forum_cat_row( $cat_data );

				if ( is_array( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ] ) )
				{
			$this->recursion_forum_view($this->ipsclass->forums->forum_cache[ $forum_data['id'] ]);
				}
		}
	$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>" );

	}

function recursion_forum_view($forums)
{
   		foreach( $forums as $id => $forum_data )
		{
		if ( $this->ipsclass->check_perms($forum_data['show_perms']) != TRUE ) continue;

		if (in_array($forum_data['id'], explode(",",$this->ipsclass->member['invisible_forums'])))
					  $forum_data['checked'] = 'checked="checked"';
				if ( $this->ipsclass->vars['forum_cache_minimum'] )
				{
					  $forum_data['description'] = "<!--DESCRIPTION:{$forum_data['id']}-->";
			$need_desc[] = $forum_data['id'];
			}
			$this->output .= $this->ipsclass->compiled_templates['skin_ucp']->forum_row( $forum_data  );

		if (is_array( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ]))
			$this->recursion_forum_view($this->ipsclass->forums->forum_cache[ $forum_data['id'] ]);

	}
}

	//*******************************************************************/
	//| 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
	//---------------------------------------------------------

	$invis_forums_list = implode(',',$this->ipsclass->input['invForums']);


	//---------------------------------------------------------
	//update user profile in DataBase
	//---------------------------------------------------------
		$this->ipsclass->DB->do_update( 'members', array( 'invisible_forums' => ''.$invis_forums_list.'' ), "id={$this->ipsclass->member['id']}" );

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

 

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

 

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

 

найти

		has_blog, has_gallery, members_markers, members_editor_choice, members_auto_dst, members_display_name, members_created_remote,
	members_cache, members_disable_pm

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

, invisible_forums

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

 

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

Если вы хотите отключить поиск - по этим разделам (В том числе и кнопкой "Новые сообщения" - тогда:

 

10. изменение файла sources/action_public/search.php

найти

			//-----------------------------------------
		// Not an array...
		//-----------------------------------------

		if ( $this->ipsclass->input['forums'] == 'all' )
		{
			foreach( $this->ipsclass->forums->forum_by_id as $data )
			{

 

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

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

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

  • 2 месяца спустя...

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

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

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