Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

keep unread

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Siava писал(а):Может это и оффтоп, но у меня на форуме, гду туева хуча разных модов, где почти 120тыс. сообщений, этот мод работает без проблем! (использовал 4-ый способ установки, то есть данные хранятся в БД)
Везет, просто почитав английскую тему, как бы видно у некоторых всё встает и сразу работает, а у некоторых нет.
Siava писал(а):(использовал 4-ый способ установки, то есть данные хранятся в БД)
Это пятый. Ещё вопрос, я так понимаю мод ставился на версии до 2.0.11 или около того? Просто вот этот пост http://www.phpbb.com/phpBB/viewtopic.ph ... 42#1283642 как раз описывает некоторые изменения или объяснения, ещё раз прошу разъясните.

Так же сейчас хочу сказать, что всё же вероятно бага была из-за того что я поменял перед этим недавно настройки куков.
AEC писал(а):вот, а я если не ошибаюсь куки использовал.
Меня куки не устроили совсем, потому что даже почистив их у себя, терял информацию о прочитанности и не прочитанности (вероятно особенности моего компа).

Добавлено спустя 2 минуты 36 секунд:

Siava
Проблема с glance есть или нет? И какую версию glance используете? У меня эта проблемка существует. Использую версию 1.0
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Balamut
Former team member
Сообщения: 2213
Зарегистрирован: 19 лет 1 месяц
Откуда: {postrow.POSTER_FROM}
Поблагодарили: 105 раз

Сообщение Balamut »

Хм... Поставил себе киип на локалхост на чистый 0,15.
Пишу сообщение одним юзером, захожу под другим, раздел и топик светятся, что есть новые сообщения. Выхожу, опять залогиниваюсь - раздел не светится - т.е. новых сообщений как бы нет. Хотя если зайти в этот раздел, то топик светится как новый. Странно...
//
// That's all, Folks!
// -------------------------------------------------
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Отказал ся от него сейчас. Так и не смог победить. Все ошибки описаны в наличии, только проявляться стали немного реже. Пока нет времени, а вообще собираюсь заковырять.
Кстати, аналогов с хорошими отзывами не встречал никто?
я люблю daft punk | новый sugoi.ru
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Поставил, на чистый форум, вроде работает. Форум правда не совсем чистый, стоит
adv_posts_merging_2.1.2.zip
attach_mod_2313.zip, но выключен.
mod-merge.zip
Sploit in Avatar fix.txt

Первое что помешало нормальной работе так это ошибка, которая отображалась только в IE, в Opera - всё нормально:

Код: Выделить всё

Warning: mysql_fetch_array(): 38 is not a valid MySQL result resource in /home/xxx/xxx/public_html/xxx/db/mysql4.php on line 214

Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/xxx/public_html/xxx/db/mysql4.php:214) in /home/xxx/xxx/public_html/xxx/includes/page_header.php on line 480

Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/xxx/public_html/xxx/db/mysql4.php:214) in /home/xxx/xxx/public_html/xxx/includes/page_header.php on line 482

Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/xxx/public_html/xxx/db/mysql4.php:214) in /home/xxx/xxx/public_html/xxx/includes/page_header.php on line 483
Там где xxx - это мои идентификатор у хостера и мой домен 3 уровня тестовый, вам их знать не зачем.
Решилось вот этим советом http://www.phpbb.com/phpBB/viewtopic.ph ... 48#1090348

Это то или у меня мистика твориться?

Дальше, при установке есть два места по которым хотелось бы получить консультацию.

Код: Выделить всё

#-----[ OPEN ]------------------------------------------------
#
viewtopic.php
#
#-----[ FIND ]------------------------------------------------
#
		if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) || isset($HTTP_GET_VARS['sid']) )
		{
			$session_id = isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) ? $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid'] : $HTTP_GET_VARS['sid'];

			if ( $session_id )
			{
				$sql = "SELECT p.post_id
					FROM " . POSTS_TABLE . " p, " . SESSIONS_TABLE . " s,  " . USERS_TABLE . " u
					WHERE s.session_id = '$session_id'
						AND u.user_id = s.session_user_id
						AND p.topic_id = $topic_id
						AND p.post_time >= u.user_lastvisit
					ORDER BY p.post_time ASC
					LIMIT 1";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, 'Could not obtain newer/older topic information', '', __LINE__, __FILE__, $sql);
				}

				if ( !($row = $db->sql_fetchrow($result)) )
				{
					message_die(GENERAL_MESSAGE, 'No_new_posts_last_visit');
				}

				$post_id = $row['post_id'];

				if (isset($HTTP_GET_VARS['sid']))
				{
					redirect("viewtopic.$phpEx?sid=$session_id&" . POST_POST_URL . "=$post_id#$post_id");
				}
				else
				{
					redirect("viewtopic.$phpEx?" . POST_POST_URL . "=$post_id#$post_id");
				}
			}
		}

		redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id", true));
#
#-----[ REPLACE WITH ]---------------------------------------- 
#
//-- mod : keep unread -----------------------------------------------------------------------------
//-- delete
//		if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) || isset($HTTP_GET_VARS['sid']) )
//		{
//			$session_id = isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) ? $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid'] : $HTTP_GET_VARS['sid'];
//
//			if ( $session_id )
//			{
//				$sql = "SELECT p.post_id
//					FROM " . POSTS_TABLE . " p, " . SESSIONS_TABLE . " s,  " . USERS_TABLE . " u
//					WHERE s.session_id = '$session_id'
//						AND u.user_id = s.session_user_id
//						AND p.topic_id = $topic_id
//						AND p.post_time >= u.user_lastvisit
//					ORDER BY p.post_time ASC
//					LIMIT 1";
//				if ( !($result = $db->sql_query($sql)) )
//				{
//					message_die(GENERAL_ERROR, 'Could not obtain newer/older topic information', '', __LINE__, __FILE__, $sql);
//				}
//
//				if ( !($row = $db->sql_fetchrow($result)) )
//				{
//					message_die(GENERAL_MESSAGE, 'No_new_posts_last_visit');
//				}
//
//				$post_id = $row['post_id'];
//
//				if (isset($HTTP_GET_VARS['sid']))
//				{
//					redirect("viewtopic.$phpEx?sid=$session_id&" . POST_POST_URL . "=$post_id#$post_id");
//				}
//				else
//				{
//					redirect("viewtopic.$phpEx?" . POST_POST_URL . "=$post_id#$post_id");
//				}
//			}
//		}
//
//		redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id", true));
//-- add
		// read the first unread post in this topic
		$sql = "SELECT p.post_id, t.topic_last_post_id
					FROM (" . TOPICS_TABLE . " t
						LEFT JOIN " . POSTS_TABLE . " p ON p.topic_id = t.topic_id AND p.post_time > $topic_last_read)
					WHERE t.topic_id = $topic_id
						AND t.topic_moved_id = 0
					ORDER BY p.post_time";
		if ( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain newer/older topic information', '', __LINE__, __FILE__, $sql);
		}
		if ( !$row = $db->sql_fetchrow($result) )
		{
			message_die(GENERAL_MESSAGE, 'No_new_posts_last_visit');
		}
		$post_id = empty($row['post_id']) ? $row['topic_last_post_id'] : $row['post_id'];
		redirect(append_sid("./viewtopic.$phpEx?" . POST_POST_URL . "=$post_id#$post_id", true));
//-- fin mod : keep unread -------------------------------------------------------------------------
Но на самом деле в этом файле присутствует

Код: Выделить всё

		if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) || isset($HTTP_GET_VARS['sid']) )
		{
			$session_id = isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) ? $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid'] : $HTTP_GET_VARS['sid'];

			if (!preg_match('/^[A-Za-z0-9]*$/', $session_id)) 
			{
				$session_id = '';
			}

			if ( $session_id )
			{
				$sql = "SELECT p.post_id
					FROM " . POSTS_TABLE . " p, " . SESSIONS_TABLE . " s,  " . USERS_TABLE . " u
					WHERE s.session_id = '$session_id'
						AND u.user_id = s.session_user_id
						AND p.topic_id = $topic_id
						AND p.post_time >= u.user_lastvisit
					ORDER BY p.post_time ASC
					LIMIT 1";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, 'Could not obtain newer/older topic information', '', __LINE__, __FILE__, $sql);
				}

				if ( !($row = $db->sql_fetchrow($result)) )
				{
					message_die(GENERAL_MESSAGE, 'No_new_posts_last_visit');
				}

				$post_id = $row['post_id'];

				if (isset($HTTP_GET_VARS['sid']))
				{
					redirect("viewtopic.$phpEx?sid=$session_id&" . POST_POST_URL . "=$post_id#$post_id");
				}
				else
				{
					redirect("viewtopic.$phpEx?" . POST_POST_URL . "=$post_id#$post_id");
				}
			}
		}

		redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id", true));
Я заменил целиком, но что это может повлиять и должно ли? Как я понимаю в этой строке

Код: Выделить всё

         if (!preg_match('/^[A-Za-z0-9]*$/', $session_id)) 
         {
проверяется sid на наличие левых символов?

И уже указанное выше:

Код: Выделить всё

#-----[ OPEN ]------------------------------------------------
#
index.php
#-----[ FIND ]------------------------------------------------
#
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
		}
	}
#
#-----[ AFTER, ADD ]------------------------------------------
#
//-- mod : keep unread -----------------------------------------------------------------------------
//-- add
	// update the unread topics from the list readed
	$board_config['tracking_unreads'] = $new_unreads;

	// save the cookies
	write_cookies($userdata);
//-- fin mod : keep unread -------------------------------------------------------------------------
Но на самом деле кусок выглядит как

Код: Выделить всё

$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time']; 
      } 
      $db->sql_freeresult($result); 
   }
Заменил на

Код: Выделить всё

$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time']; 
      } 
    } 
$db->sql_freeresult($result);
Всё нормально, но не может ли это повлиять на что либо в дальнейшем, или опять же у меня это работает только пока, а потом накроется из-за этого?

Добавлено спустя 3 часа 5 минут 34 секунды:

И ещё. Если человек на форуме и в это время кто-то отправит сообщение, тема помечается как непрочитанная, но если человек отлогиниться и подлогиниться, то эта тема не помечена как непрочитанная, а остальные темы нормально сохраняются.
Как это побороть ни у кого идей нет?

Добавлено спустя 53 секунды:

И с чем это связано, из-за чего происходит?
я люблю daft punk | новый sugoi.ru
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

И так проблему решил. Вернее не я решил. Вернее даже решение находиться в стадии тестирования, но у меня всё работает.
http://www.phpbb.com/phpBB/viewtopic.php?t=293548 - это бетка 2 версии keep unread flag. У меня она заработала и хорошо. Приятности: в инструкции есть мануал по апгрейду с первой версии (!!!), так же есть возможность отмечать посты непрочитанными (но я это не пробовал, поэтому как работает сказать не могу).
VVVas писал(а):И ещё. Если человек на форуме и в это время кто-то отправит сообщение, тема помечается как непрочитанная, но если человек отлогиниться и подлогиниться, то эта тема не помечена как непрочитанная, а остальные темы нормально сохраняются.
Этой проблемы нет.

Уточнение: мануал по апгрейду учитывает изменения описаные в этом посте http://www.phpbb.com/phpBB/viewtopic.ph ... 48#1090348 Так что что бы у вас не возникло вопросов сначала сделайте их.

Топик с беткой keep unread flag 2 доступен только для зарегистрированных пользователей.

Добавлено спустя 2 минуты 39 секунд:

Ещё, ссылка "Найти сообщения с вашего последнего посещения", теперь выводит все непрочитанные топики. Это описано в моде и вы должны будете поправить языковой файл, собственно в инструкции всё это написано.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Зарегистрирован: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

VVVas
А чем отличаются эти бетки друг от друга?

И вобще причём тут бетки? Ведь релиз есть :roll:
Последний раз редактировалось Siava 27.06.2005 16:10, всего редактировалось 1 раз.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Siava
Бетка одна.

Добавлено спустя 31 секунду:

Вторая версия, а не две версии.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Зарегистрирован: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

VVVas
ааа... почитал, понял:
## The following are new features as a result of Merlin's upgrade in May 2005:
##
## 1. The upgrade solves the bugs that sometimes gave a user an unread flag on
## his or her own posts, sometimes gave a user an unread flag on other posts that
## he or she had already read and sometimes caused a user to lose all unread flags.
##
## 2. The upgrade keeps unread flags beyond the current page of a topic until
## the user actually visits that page.
##
## 3. The upgrade gives the user a new yellow button on each post (right next
## to the quote button) that allows the user to mark the topic unread
## again from that post onwards (a sort of bookmark function).
Не.. из-за этого обновляться с первой версии не хочу.. меня она устраивает :lol:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Siava
Если работает, то конечно не стоит (поскольку проблем с безопасностью нет). А вот у меня основная проблема была
VVVas писал(а): Если человек на форуме и в это время кто-то отправит сообщение, тема помечается как непрочитанная, но если человек отлогиниться и подлогиниться, то эта тема не помечена как непрочитанная
И уж решения не нашел.

Кнопку я не ставил, потом может порадую своих пользователей.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
baldahin
phpBB 1.4.3
Сообщения: 97
Зарегистрирован: 19 лет 3 месяца

Сообщение baldahin »

подскажите как сделать чтобы ссылка "Найти непрочитанные сообщения" имела вид "Найти непрочитанные сообщения (X)", где X - количество этих самых непрочитанных сообщений.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

baldahin
поставить соответствующий мод - обсуждалось и на этом форуме и сам мод видел на phpbb.com
я люблю daft punk | новый sugoi.ru
Аватара пользователя
baldahin
phpBB 1.4.3
Сообщения: 97
Зарегистрирован: 19 лет 3 месяца

Сообщение baldahin »

VVVas, если имеется ввиду мод View Posts Since Last Visit Number и аналогичные, то в них идет речь о сообщениях с момента последнего визита. Меня же инетерсует аналогичная фича, но для Keep unread, т.е. именно количество непрочитанных сообщений. Хотя как становится понятно по другим топикам на эту тему, такую фичу пока никто не прикрутил.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

baldahin
Где-то тут обсуждалась эта дороботка. Поищите. Точно не скажу совсем.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

OMus-VeNuS
Внимательней читайте руководство по установке, там есть отдельные изменения, которые необходимы для работы с модом Подфорумов.
я люблю daft punk | новый sugoi.ru
OMus-VeNuS

Сообщение OMus-VeNuS »

у меня к сожалению - нету (

Добавлено спустя 1 минуту 57 секунд:

среди текстовиков с партами в дискрипшне ниче по subforums нету...

Вернуться в «Поддержка модов для phpBB 2.0.x»