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

Темы, в которых я отвечал


Вопрос

Господа,

 

В phpBB есть замечательная кнопочка "Темы, в которых я отвечал". Есть ли в IPB 2.3 такая опция (поисковый фильтр) или нет? И если нет - не встречал ли кто соответствующий мод?

 

Спасибо!

Изменено пользователем 2rough4u
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0

В тройке есть: http://forums.ibresource.ru/index.php?app=core&module=search&do=user_activity&mid=64897

 

В двойке - кажется мод такой кто-то писал, посмотрите в модах на этом форуме. Тут что-то есть :)

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

  • 0

В двойке - кажется мод такой кто-то писал, посмотрите в модах на этом форуме. Тут что-то есть :)

Спасибо! Сделал на основе того запроса (по ссылке) то, что мне нужно, получилось так:

 

1. Находим в sources/action_public/search.php:

		case 'gettopicsuser':
   			$this->get_topics_user();
   			break;

Добавляем ниже:

		case 'getmytopics':
   			$this->get_my_topics();
   			break;

 

2. Находим в sources/action_public/search.php:

/*-------------------------------------------------------------------------*/
// Get all posts by a member
/*-------------------------------------------------------------------------*/

	function get_topics_user()
	{

Добавляем выше:

/*-------------------------------------------------------------------------*/
// Get all topics I have joined
/*-------------------------------------------------------------------------*/

	function get_my_topics()
	{
	//-----------------------------------------
	// Do we have flood control enabled?
	//-----------------------------------------

	if ($this->ipsclass->member['g_search_flood'] > 0)
	{
		$flood_time = time() - $this->ipsclass->member['g_search_flood'];

		//-----------------------------------------
		// Get any old search results..
		//-----------------------------------------

		$this->ipsclass->DB->simple_construct( array( 'select' => 'id',
									  				  'from'   => 'search_results',
									  				  'where'  => "(member_id='".$this->ipsclass->member['id']."' OR ip_address='".$this->ipsclass->input['IP_ADDRESS']."') AND search_date > '$flood_time'" ) );
		$this->ipsclass->DB->simple_exec();

		if ( $this->ipsclass->DB->get_num_rows() )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'search_flood', 'EXTRA' => $this->ipsclass->member['g_search_flood']) );
		}
	}

	$this->ipsclass->input['forums'] = 'all';

	$forums = $this->get_searchable_forums();

	$mid    = intval($this->ipsclass->input['mid']);

	//-----------------------------------------
	// Do we have any forums to search in?
	//-----------------------------------------

	if ($forums == "")
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_search_forum') );
	}

	if ($mid == "")
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_search_results' ) );
	}

	//-----------------------------------------
	// Get the topic ID's to serialize and store into
	// the database
	//-----------------------------------------


	$this->ipsclass->DB->build_query( array( 'select' => 't.*, t.title as topic_title',
		'from' => array( 'posts' => 'p' ),
		'where' => 'author_id=' . $mid . ' AND approved=1',
		'add_join' => array( 0 => array( 'select' => 't.title',
		'from' => array( 'topics' => 't' ),
		'where' => 't.tid=p.topic_id',
		'type' => 'inner' )),
		'order' => 'tid DESC',
	)   );

	$query_to_cache = $this->ipsclass->DB->cur_query;

	$this->ipsclass->DB->simple_exec();

	$results = $this->ipsclass->DB->get_num_rows();



	//-----------------------------------------
	// Do we have any results?
	//-----------------------------------------

	if ( ! $results )
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_search_results' ) );
	}

	//-----------------------------------------
	// Cache query
	//-----------------------------------------

	$this->ipsclass->DB->flush_query();

	//-----------------------------------------
	// If we are still here, store the data into the database...
	//-----------------------------------------

	$unique_id = md5(uniqid(microtime(),1));

	$this->ipsclass->DB->do_insert( 'search_results', array (
											  'id'          => $unique_id,
											  'search_date' => time(),
											  'post_max'    => $results,
											  'sort_key'    => $this->sort_key,
											  'sort_order'  => $this->sort_order,
											  'member_id'   => $this->ipsclass->member['id'],
											  'ip_address'  => $this->ipsclass->input['IP_ADDRESS'],
											  'query_cache' => $query_to_cache
									 )        );

	$this->ipsclass->boink_it( $this->ipsclass->base_url."act=Search&nav=au&CODE=show&searchid=$unique_id&search_in=topics&result_type=topics" );
}

 

Сохраняем файл.

 

После этого список тем, в которых я отвечал, становится доступен по ссылке вида yourforum.ru/index.php?act=Search&CODE=getmytopics&mid=1, где в mid=1 надо поставить ID пользователя (например, mid={$this->ipsclass->member['id']})

Изменено пользователем 2rough4u
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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