Мод "Кто смотрел тему?"

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: Есть ли мод "Кто смотрел тему"?

Сообщение evrus01 »

evrus01 писал(а):Подскажите, как исключить из статистики пользователя?
Т.е., например, чтобы пользователь ID=n не отображался (не учитывался).
Вместе с HAMMER663, решили сделать это по ID пользователя на стадии SQL запроса к БД.

viewtopicviewers.php
Найти:

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

   $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height,  v.user_id, COUNT(v.user_id) AS nb, MAX(v.date) as date
      FROM ' . USERS_TABLE . ' u, ' . TOPICS_VIEWERS_TABLE . ' v
      WHERE u.user_id = v.user_id
         AND v.topic_id = ' . $topic . '
Заменить на:

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

   $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height,  v.user_id, COUNT(v.user_id) AS nb, MAX(v.date) as date
      FROM ' . USERS_TABLE . ' u, ' . TOPICS_VIEWERS_TABLE . ' v
      WHERE u.user_id = v.user_id 
		AND u.user_id <> N
		AND v.topic_id = ' . $topic . '
Где N это ID пользователя. например админа.

Авось кому пригодится...
Аватара пользователя
Ёжъ
phpBB 2.0.1
Сообщения: 288
Стаж: 18 лет 2 месяца
Откуда: Новосибирск
Благодарил (а): 189 раз
Поблагодарили: 7 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Ёжъ »

Я вот тоже упёрся в пункт
1/ Пойти в ACP : System > Modules > Admin Panel > General > General settings.
Включить Мод , создав модуль и подключив в нем данный мод (появится в списке модов в разделе "Управление форумом")!
В подключаемых модулях ничего нового не нашёл. Так надо или нет создавать модуль в Общих параметрах адм.раздела? Если да- подскажите подробнее шаги. Если нет- зачем столько правок в acp?
Все остальные пункты сделал и проверил, изменений на страницах тем никаких.
Никто не знает столько, сколько не знаю я.
Аватара пользователя
Ёжъ
phpBB 2.0.1
Сообщения: 288
Стаж: 18 лет 2 месяца
Откуда: Новосибирск
Благодарил (а): 189 раз
Поблагодарили: 7 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Ёжъ »

Изменения обнаружил, ссылка на обзор работает, но вот сам обзор вывалил кучу ошибок. Пришлось в десятке мест, почти во всех файлах дописывать яз.перем-м префикс TV_. Будьте внимаетельны! Понятия не имею как оно у вас работало.

В админке модуль так и не нашёл.
Никто не знает столько, сколько не знаю я.
Аватара пользователя
Ёжъ
phpBB 2.0.1
Сообщения: 288
Стаж: 18 лет 2 месяца
Откуда: Новосибирск
Благодарил (а): 189 раз
Поблагодарили: 7 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Ёжъ »

Поэтапно перенёс на сервер. Оказалось ничего не надо в админке делать- всё работает.
Никто не знает столько, сколько не знаю я.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Пчелкин »

Пчелкин писал(а): И все же ...какая ошибка в запросе в этом куске кода, который дает ошибку дебаггера при очистке статистики?
(глючная строка помечена крестом)
Мож есть возможность как-то исправить?

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

   //Admin ? go to confirm box
   if($auth->acl_get('a_'))
   {
      $s_hidden_fields = build_hidden_fields(array(
 +        'f'      => $forum_id)
      );

      if (confirm_box(true))
      {
         //Delete
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Татьяна5 »

Пчелкин писал(а):Мож есть возможность как-то исправить?
viewtopicviewers.php
Найти и удалить

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

//*****************************
// Do you want to delete statistics for this topic ?
//*****************************
if($supp==1)
{
   //Admin ? go to confirm box
   if($auth->acl_get('a_'))
   {
      $s_hidden_fields = build_hidden_fields(array(
         'f'      => $forum_id)
      );

      if (confirm_box(true))
      {
         //Delete
            $sql = 'DELETE FROM ' . TOPICS_VIEWERS_TABLE . "
                  WHERE topic_id = $topic";
            $result = $db->sql_query($sql);
         
         //Display
         $meta_info = append_sid("{$phpbb_root_path}viewtopicviewers.$phpEx", 'topic=' . $topic);
         
         $message = $user->lang['TV_STATS_DELETED'] . '<br/><br/>';
         $message .= sprintf($user->lang['TV_RETURN_STATS'], '<a href="' . $meta_info . '">', '</a>');

         meta_refresh(3, $meta_info);
         trigger_error($message);
      }
      else
      {
         confirm_box(false, 'TV_DELETE_STATISTICS', $s_hidden_fields);
      }
   }
   else
      trigger_error('NO_AUTH_OPERATION');
}
Найти

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

//*****************************
// Check if the topic exist
//*****************************
   $sql = 'SELECT forum_id
      FROM ' . TOPICS_TABLE . "
      WHERE topic_id = $topic";
   $result = $db->sql_query($sql);
   $forum_id = (int) $db->sql_fetchfield('forum_id');
   $db->sql_freeresult($result);

   if (!$forum_id)
   {
      trigger_error('NO_TOPIC');
   }
Вставить после

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

//*****************************
// Do you want to delete statistics for this topic ?
//*****************************
if($supp==1)
{
   //Admin ? go to confirm box
   if($auth->acl_get('a_'))
   {
      $s_hidden_fields = build_hidden_fields(array(
         'f'      => $forum_id)
      );

      if (confirm_box(true))
      {
         //Delete
            $sql = 'DELETE FROM ' . TOPICS_VIEWERS_TABLE . "
                  WHERE topic_id = $topic";
            $result = $db->sql_query($sql);
         
         //Display
         $meta_info = append_sid("{$phpbb_root_path}viewtopicviewers.$phpEx", 'topic=' . $topic);
         
         $message = $user->lang['TV_STATS_DELETED'] . '<br/><br/>';
         $message .= sprintf($user->lang['TV_RETURN_STATS'], '<a href="' . $meta_info . '">', '</a>');

         meta_refresh(3, $meta_info);
         trigger_error($message);
      }
      else
      {
         confirm_box(false, 'TV_DELETE_STATISTICS', $s_hidden_fields);
      }
   }
   else
      trigger_error('NO_AUTH_OPERATION');
}
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Пчелкин »

Хм...но как? Как вы такое находите, делаете и исправляете? В шоке... С упоением вижу отсутствие ошибки...

Вся команда валидаторов немецкой поддержки - пацаны по сравнению с здешними гуру...
Они нам компонсируют мозги...пока брать бразды правления двигом в руки гуру...

Добавлено спустя 6 минут 6 секунд:
Ага...даж увидел почему замена места проверки на удаление стала работать без ошибки....нда...говорила мне мама...да ладно...проехали...ну и что ж что говорила? Все равно толку то нуль от того что говорила..

Добавлено спустя 31 минуту 59 секунд:
Ээээ.... на одном форуме с 3.0.9 нет ошибки...на втором с 3.0.9 - есть все равно...и на основном с 3.0.11 тоже осталась...млин...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Татьяна5 »

Пчелкин
Проверяла на 3.0.11 - ошибки нет
Ошибка указывает на ту же строку? И с тем же номером? Или на новый номер строки перешла?
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Пчелкин »

На новый номер перешла...

Добавлено спустя 1 минуту 43 секунды:
На тот-же кусок в новом месте...
Щас попробую на девственном файле сделать...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Татьяна5 »

Пчелкин
Тип тем с ошибкой какой?


Для важных тем при попытке просмотра выдавало, что темы не существует. fix:
viewtopicviewers.php
Найти

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

if (!$forum_id)
Заменить на

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

if (!isset($forum_id))
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Пчелкин »

Это я исправлял уже давно...с обычными темами...Кажись нашел...щас...испытаю хорошенько вашу замену...

Добавлено спустя 4 минуты 43 секунды:
Короче ...с правками из этой темы с возвратами и прочее - ошибка...с чистым файлом после замены места кода - ошибки нет...мдя...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Татьяна5 »

Т.е. мод отсюда?
(Возвраты и прочее влиять не должны)

Тогда так:
viewtopicviewers.php
Найти и удалить

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

//*****************************
// Do you want to delete statistics for this topic ?
//*****************************
if($supp==1)
{
   //Admin ? go to confirm box
   if($auth->acl_get('a_'))
   {
      $s_hidden_fields = build_hidden_fields(array(
         'f'      => $forum_id)
      );

      if (confirm_box(true))
      {
         //Delete
            $sql = 'DELETE FROM ' . TOPICS_VIEWERS_TABLE . "
                  WHERE topic_id = $topic";
            $result = $db->sql_query($sql);
         
         //Display
         $meta_info = append_sid("{$phpbb_root_path}viewtopicviewers.$phpEx", 'topic=' . $topic);
         
         $message = $user->lang['TV_STATS_DELETED'] . '<br/><br/>';
         $message .= sprintf($user->lang['TV_RETURN_STATS'], '<a href="' . $meta_info . '">', '</a>');

         meta_refresh(3, $meta_info);
         trigger_error($message);
      }
      else
      {
         confirm_box(false, 'TV_DELETE_STATISTICS', $s_hidden_fields);
      }
   }
   else
      trigger_error('NO_AUTH_OPERATION');
}
Найти

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

$sql = 'SELECT topic_id
Заменить на

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

$sql = 'SELECT forum_id
Найти

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

$topic_id = (int) $db->sql_fetchfield('topic_id');
Заменить на

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

$forum_id = (int) $db->sql_fetchfield('forum_id');
Найти

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

if (!$topic_id)
Заменить на

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

if (!isset($forum_id))
Найти

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

trigger_error('NO_TOPIC');
   }
Вставить после

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

//*****************************
// Do you want to delete statistics for this topic ?
//*****************************
if($supp==1)
{
   //Admin ? go to confirm box
   if($auth->acl_get('a_'))
   {
      $s_hidden_fields = build_hidden_fields(array(
         'f'      => $forum_id)
      );

      if (confirm_box(true))
      {
         //Delete
            $sql = 'DELETE FROM ' . TOPICS_VIEWERS_TABLE . "
                  WHERE topic_id = $topic";
            $result = $db->sql_query($sql);
         
         //Display
         $meta_info = append_sid("{$phpbb_root_path}viewtopicviewers.$phpEx", 'topic=' . $topic);
         
         $message = $user->lang['TV_STATS_DELETED'] . '<br/><br/>';
         $message .= sprintf($user->lang['TV_RETURN_STATS'], '<a href="' . $meta_info . '">', '</a>');

         meta_refresh(3, $meta_info);
         trigger_error($message);
      }
      else
      {
         confirm_box(false, 'TV_DELETE_STATISTICS', $s_hidden_fields);
      }
   }
   else
      trigger_error('NO_AUTH_OPERATION');
}
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Пчелкин »

Хм...добились без глючности...тока после удаления статистики нет возврата в тему...

В итоге -
viewtopicviewers.rar
Добавлено спустя 8 минут 4 секунды:
У тех, кому запрещено удалять - возврат есть...а вот у супермодеров и админов - нема...ну и фиг с ним...и так нормально теперь....
Татьяна, а как бы ускорить открытие информации о просмотрах? Ох и долго...даже на слабых форумах долго...
Хотя- тож фиг с ним...Инфа нужна очень редко тока для доказательств что юзер видел тему...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение Татьяна5 »

Пчелкин писал(а):тока после удаления статистики нет возврата в тему
(на основе Есть ли мод "Кто смотрел тему"? )

viewtopicviewer.php
Найти и удалить

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

$last_post_id = request_var('lp', 0);
Найти

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

 $sql = 'SELECT forum_id
Заменить на

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

$sql = 'SELECT forum_id, topic_last_post_id
Найти

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

$forum_id = (int) $db->sql_fetchfield('forum_id');
Заменить на

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

$row2 = $db->sql_fetchrow($result);
Найти

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

$db->sql_freeresult($result);
Добавить после

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

	$last_post_id = (int) $row2['topic_last_post_id'];
	$forum_id = (int) $row2['forum_id'];
Аватара пользователя
angst66
phpBB 3.0.0 RC3
Сообщения: 1584
Стаж: 14 лет 8 месяцев
Благодарил (а): 90 раз
Поблагодарили: 165 раз

Re: Есть ли мод "Кто смотрел тему"?

Сообщение angst66 »

Удалил из шаблона viewtopicviewers_body.html неопределенную языковую переменную L_NO_VOTES и заменил её на 0%
Но самое вкусное это обернул

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

<div class="<!-- IF stats.PCT < 20 -->pollbar1<!-- ELSEIF stats.PCT < 40 -->pollbar2<!-- ELSEIF stats.PCT < 60 -->pollbar3<!-- ELSEIF stats.PCT < 80 -->pollbar4<!-- ELSE -->pollbar5<!-- ENDIF -->" style="width:{stats.PERCENT};">{stats.RESULT}</div>
в <div class="meter"></div>, логически вытекающее отсюда [proSilver] Красивые результаты опроса (css3).

Вернуться в «Бета-версии модов для phpBB 3.0.x»