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

Новые сообщения


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

Народ часто просить сделать, чтобы можно было просмотреть на наличие новых сообщений только в тех темах, в которых они отвечали.

есть ли мод?

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

не то, народ - зверь ленивый.

Подобие новых сообщений надо, только отображались бы только темы, в которых когда-то отвечал.

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

Song

в верху форума "Новые сообщения".

Это просмотр всех новых с момента последнего визита.

Есть act=Search&CODE=getreplied, но это просмотр новых в темах которые вы начали.

Можно по аналогии наверное сделать темы в которых вы отвечали...

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

urisoft

CiD

надо в запрос новых добавить and p.author_id='".$ibforums->member['id']."'"

и будет именно так как надо.

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

Song

надо в запрос новых добавить and p.author_id='".$ibforums->member['id']."'"

и будет именно так как надо.

Только этот p надо еще в where добавить... :D

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

urisoft

а там оно уже есть :D

Вот запрос из оригинального форума

$DB->query("SELECT topic_id FROM ibf_posts WHERE queued <> 1 AND forum_id IN($forums) AND post_date > '".$ibforums->member['last_visit']."'");

только не хватает буковки p

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

Song

Это в какой версии форума ? :D

 

В 2.0

$DB->simple_construct( array( 'select' => 't.*, t.title as topic_title',
								  'from'   => 'topics t',
								  'where'  => "t.approved=1 AND t.forum_id IN($forums) AND t.last_post > {$last_time}",
								  'order'  => "t.last_post DESC" ) );

 

В 1.3F

 

$DB->query("SELECT t.tid FROM ibf_topics t
				WHERE t.approved=1 AND t.forum_id IN($forums) AND t.last_post > '".$ibforums->member['last_visit']."'");

 

Добавлено в [mergetime]1098987389[/mergetime]

Может я не там смотрю ??? ;)

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

Song

в 1.2

Действительно... :D

 

CiD

Попробуй это:

 

Файл ./sources/Search.php

 

Для 1.2F:

 

Найти:

	$DB->query("SELECT topic_id FROM ibf_posts WHERE queued <> 1 AND forum_id IN($forums) AND post_date > '".$ibforums->member['last_visit']."'");

Заменить на:

	if ($ibforums->input['mypost'] and $ibforums->member['id'])
	{
		$DB->query("SELECT topic_id FROM ibf_posts WHERE queued <> 1 AND forum_id IN($forums) AND post_date > '".$ibforums->member['last_visit']."' AND author_id='".$ibforums->member['id']."' GROUP BY topic_id");
	}
	else
	{
		$DB->query("SELECT topic_id FROM ibf_posts WHERE queued <> 1 AND forum_id IN($forums) AND post_date > '".$ibforums->member['last_visit']."'");
	}

Для 1.3F:

 

Найти:

	$DB->query("SELECT t.tid FROM ibf_topics t
				WHERE t.approved=1 AND t.forum_id IN($forums) AND t.last_post > '".$ibforums->member['last_visit']."'");

Заменить на:

	if ($ibforums->input['mypost'] and $ibforums->member['id'])
	{
		$DB->query("SELECT t.tid FROM ibf_topics t, ibf_posts p
					WHERE t.approved=1 AND t.forum_id IN($forums) AND t.last_post > '".$ibforums->member['last_visit']."' AND (p.topic_id=t.tid) AND p.author_id='".$ibforums->member['id']."' GROUP BY t.tid");
	}
	else
	{
		$DB->query("SELECT t.tid FROM ibf_topics t
					WHERE t.approved=1 AND t.forum_id IN($forums) AND t.last_post > '".$ibforums->member['last_visit']."'");
	}

Для 2.0F:

 

Найти:

	$DB->simple_construct( array( 'select' => 't.*, t.title as topic_title',
								  'from'   => 'topics t',
								  'where'  => "t.approved=1 AND t.forum_id IN($forums) AND t.last_post > {$last_time}",
								  'order'  => "t.last_post DESC" ) );

Заменить на:

	if ($ibforums->input['mypost'] and $ibforums->member['id'])
	{
		$DB->simple_construct( array( 'select' => 't.*, t.title as topic_title',
									  'from'   => 'topics t, ibf_posts p',
									  'where'  => "t.approved=1 AND t.forum_id IN($forums) AND t.last_post > {$last_time} AND p.topic_id=t.tid AND p.author_id='{$ibforums->member['id']}' GROUP BY t.tid",
									  'order'  => "t.last_post DESC" ) );
	}
	else
	{
		$DB->simple_construct( array( 'select' => 't.*, t.title as topic_title',
									  'from'   => 'topics t',
									  'where'  => "t.approved=1 AND t.forum_id IN($forums) AND t.last_post > {$last_time}",
									  'order'  => "t.last_post DESC" ) );
	}

 

Добавить кнопку типа "Новое в темах где я отвечал" ;) Ну имя сам придумай...

И ссылка вида index.php?act=Search&CODE=getnew&mypost=1

Должно работать...

Добавлено в [mergetime]1098993730[/mergetime]

Блин... в коде \$ заменить на $ - это тэг PHP так работает...

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

Я после того как посмотрел что в 1.3 этот запрос сделан более качественно, переделал его, т.к. обращение к ibf_topics происходит несомненно быстрей чем к ibf_posts

Вот мой кусок кода:

// Song * new and mine new messages
 if ( $mine ) 
 {
 	$query = "SELECT t.tid as topic_id, t.last_post, t.forum_id FROM ibf_topics t, ibf_posts p 
            WHERE p.queued<>1 and p.author_id='".$ibforums->member['id']."' and p.topic_id=t.tid and 
   	p.post NOT LIKE '[mod]%' and t.approved=1 AND t.forum_id IN ($forums) AND 
   	t.last_post > '".$ibforums->member['last_visit']."'";

//  	$query = "SELECT p.topic_id, t.last_post, p.forum_id FROM ibf_posts p, ibf_posts pp, ibf_topics t 
//             WHERE pp.queued<>1 and pp.author_id='".$ibforums->member['id']."' and pp.topic_id=t.tid and 
//        pp.post NOT LIKE '[mod]%' and p.queued<>1 AND 
//        p.topic_id=t.tid and p.forum_id IN(".$forums.") AND 
//        p.post_date > '".$ibforums->member['last_visit']."'";
 } else
 {
 	$query = "SELECT t.tid as topic_id, t.last_post, t.forum_id FROM ibf_topics t 
     WHERE t.approved=1 AND t.forum_id IN($forums) AND t.last_post > '".$ibforums->member['last_visit']."'";

//  	$query = "SELECT p.topic_id, t.last_post, p.forum_id FROM ibf_posts p, ibf_topics t 
//      WHERE p.queued <> 1 AND t.tid=p.topic_id and p.forum_id IN(".$forums.") AND 
//        p.post_date > '".$ibforums->member['last_visit']."'";
 }

// Song * new and mine new messages

 

Заременые строки - это старые.

на 'mod' я проверяю потому что если модератор написал в посте [mod]Хватит флеймить[/mod], то это не должно считаться, что он туда ответил и этот топик не должен выводится ему как топик где он отвечал.

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

Song

А где GROUP BY ?

Неужели с таким запросом если больше одного твоего ответа в теме, он тебе только одну ссылку выдает ? :D

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

urisoft одну конечно.

Ведь это запрос на сбор данных. Вывод осуществляется в другом месте (show_results), если ты его посмотришь то поймёшь почему нет повторов.

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

Song

одну конечно.

Ведь это запрос на сбор данных. Вывод осуществляется в другом месте (show_results), если ты его посмотришь то поймёшь почему нет повторов.

Да я знаю, что вывод в другом месте.

 

В 2.0 не все так радужно. :D

Выводит столько раз ссылку на тему, сколько раз в ней отвечал. Без GROUP BY

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

  • 2 недели спустя...

вообще в 2,0 такая фишка работает если в сеарч просто автора ввести, тогда показывает все темы , где отвечал.

Потом уже увидел как и что )

вот просто надо функцию теперь сделать отдельной

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

  • 1 месяц спустя...

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

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

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

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

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

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

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

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

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

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

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