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

Уведомления о сообщениях


ZYV

Вопрос

Всем привет.

 

Когда-то у IPB 1.2 Была такая система - если человек подписан на форум, то ему приходят уведомления только о новых темах в этом форуме. Если подписан на тему - то о новых сообщениях.

 

Мне показалась куда более логичной другая система - если человек подписан на форум ему идет вообще весь трафик, т.е. и новые темы, и новые сообщения из форума. Если на тему в конкретном форуме - то только на эту тему.

 

В новом IPB 2.1.4 очень много вариантов уведомлений, но, по-моему, чего-то отвечающего моей старой системе нету. Просто я уже привык ко всяким там Usenet'ам - подписался на конференцию - тебе весь трафик валится. С безлимитным мылом это кажется гораздо удобнее. Немогли бы пользователи подтвердить это или опровергнуть?

 

Если нету действительно, то кто-то реализовывал мою схему? Можете поделиться исходниками (yury кривулька shurup тчка com)? Если нет, придется самому мучать.

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

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

  • 0

В общем сделал я вроде тут че-то, кому-нибудь это нужно?

 

P.S. Ладно, всё понятно. В виде хака оформлять лень, а так, кому надо, тому поможет.

 

[b]class_post.php[/b]

	// ZYV  - get persons subscribed to the forum 
	$ps = array(); // init persons array

	$this->ipsclass->DB->cache_add_query( "post_forum_topic_tracker" , array( 'tid' => $tid, 'mid' => $this->ipsclass->member['id'], 'last_post' => $last_post ) );
	$outer = $this->ipsclass->DB->simple_exec();
	if ( $this->ipsclass->DB->get_num_rows($outer) ) {
		while ( $r = $this->ipsclass->DB->fetch_row($outer) ) {
			$ps[] = $r;
		}
	}

	// get persons subscribed to topic (original)
	$this->ipsclass->DB->cache_add_query( "post_topic_tracker" , array( 'tid' => $tid, 'mid' => $this->ipsclass->member['id'], 'last_post' => $last_post ) );
	$outer = $this->ipsclass->DB->simple_exec();
	if ( $this->ipsclass->DB->get_num_rows($outer) ) {
		while ( $r = $this->ipsclass->DB->fetch_row($outer) ) {
			$ps[] = $r;
		}
	}

	// /ZYV
	$trids = array();

		foreach ($ps as $psn => $r) {

			// if already sent to this guy...
			if (in_array($r["id"], $trids))
				continue;

			//-----------------------------------------
			// Test for group permissions
			//-----------------------------------------
....................................................................
			//-----------------------------------------
			// Add to mail queue
			//-----------------------------------------

			$this->ipsclass->DB->do_insert( 'mail_queue', array( 'mail_to' => $r['email'], 'mail_date' => time(), 'mail_subject' => $r["forum_name"] . " / " . $r["title"]. " / Новое сообщение ", 'mail_content' => $this->email->message ) );
		}

и тут надо убрать закрывающую }

 

[b]mysql_queries.php[/b]
function post_topic_tracker( $a )
{
	#post
	return "SELECT 

			tr.trid, tr.topic_id, 
			m.name, m.email, m.id, m.email_full, m.language, m.org_perm_id, m.mgroup, m.last_activity, 
			t.title, t.forum_id, t.approved, 

			f.name as forum_name

			FROM ".
				SQL_PREFIX."tracker tr, ".
				SQL_PREFIX."topics t,".
				SQL_PREFIX."members m,".
				SQL_PREFIX."forums f
			WHERE 

			tr.topic_id='{$a['tid']}'
			AND tr.member_id=m.id
			AND m.id <> {$a['mid']}
			AND t.tid=tr.topic_id
			AND ( ( tr.topic_track_type='delayed' AND m.last_activity > {$a['last_post']} ) OR tr.topic_track_type='immediate' )
			AND f.id=t.forum_id

			";
  }

  // ZYV
  function post_forum_topic_tracker( $a ) {
	return "SELECT 

			m.name, m.email, m.id, m.email_full, m.language, m.org_perm_id, m.mgroup, m.last_activity, 
			t.title, t.forum_id, t.approved,

			f.name as forum_name

			FROM ".
				SQL_PREFIX."forum_tracker ftr, ".
				SQL_PREFIX."topics t,".
				SQL_PREFIX."members m,".
				SQL_PREFIX."forums f
			WHERE 

			t.tid = '{$a['tid']}'
			AND ftr.member_id=m.id
			AND m.id <> {$a['mid']}
			AND ftr.forum_id=t.forum_id 
			AND f.id=t.forum_id

			";

}

 

Запросы пришлось писать самому, так что ничего не гарантирую. Любые комментарии приветствуются. Заголовки сделаны так, чтобы автосортировщиком писем можно было пользоваться юзерам.

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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