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

[3.2][3.3] Thanks for posts

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

[3.2][3.3] Thanks for posts

Сообщение rxu »

Обсуждаем портирование мода Thanks for post (Rating edition) Палыча в расширение для phpBB 3.1/3.2.
Копировать в папку: /ext/gfksx/ThanksForPosts/, начиная с версии 2.0.4 - в папку ext/gfksx/thanksforposts (все символы имени папки в нижнем регистре) Версия для phpBB 3.2/3.3: https://github.com/rxu/thanks_for_posts ... elop-3.2.x


Внимание: начиная с версии 2.0.4, имя расширения изменено на gfksx/thanksforposts (ранее - gfksx/ThanksForPosts).
Для обновления с расширения gfksx/ThanksForPosts необходимо:
  • Отключить расширение gfksx/ThanksForPosts
  • Создать резервную копию таблицы базы данных phpbb_thanks (префикс phpbb_ дан для примера)
  • Удалить данные расширения gfksx/ThanksForPosts
  • Удалить папку ext/gfksx/ThanksForPosts с сервера
  • Восстановить таблицу базы данных phpbb_thanks из резервной копии (префикс phpbb_ дан для примера)
  • Загрузить файлы нового расширения версии 2.0.4+ в папку ext/gfksx/thanksforposts (все символы имени папки в нижнем регистре)
  • Включить расширение в администраторском разделе
Внимание: нижеследующее дополнение может не работать с основным расширением версии 2.0.4 без следующих правок: Re: [dev] Thanks for posts
Для совместимости с версией 2.0.7 требуются следующие правки:
https://github.com/alg5/addonforthanksf ... l/19/files

AJAX дополнение к данному расширению которое позволяет выдавать благодарности без перезагрузки страницы: Addon for thanks for posts by Алг.
Исходный код: https://github.com/alg5/addonforthanksforposts
Копировать в папку: /ext/alg/addonforthanksforposts/
------------------------
Вопрос-ответ;
Q. Как сделать так чтобы гости видели список поблагодаривших за сообщение при просмотре темы?
W. Разрешить в форумных правах доступа(Или роль "Доступ только для чтения") гостям благодарить за сообщение. Благодарить не смогут, а видеть список поблагодаривших будут.
Вложения
thanks_for_posts-develop-3.2.x.zip
(194.96 КБ) 120 скачиваний
Последний раз редактировалось rxu 28.02.2022 13:11, всего редактировалось 2 раза.
Изображение
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:49 модератором LavIgor

eeeman
phpBB 1.4.0
Сообщения: 30
Стаж: 7 лет 1 месяц
Благодарил (а): 6 раз

Re: [dev] Thanks for posts

Сообщение eeeman »

Привет всем, как убрать из ссылок "топлист сообщений" и "благодарности"?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение Siava »

eeeman, удалить thanks_for_posts/styles/prosilver/template/event/navbar_header_quick_links_after.html
и почистить кеш после.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Стаж: 13 лет 7 месяцев
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 38 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение misterleks »

Подскажите, а возможно ли в ТОП на главной выводить пользователей получивших больше всего спасибо за последние 30 дней? Не общее количество, а именно через какой-то промежуток? А то в итоге получиться так, что пользователь получил 400 спасибо и его будет никому не догнать :D
Как я понимаю, в базу пишется время когда было выдано "Спасибо" и возможно ли по этому параметру сделать выборку? И чтобы уменьшить количество запросов к базе, сделать, допустим, обновлять каждый час, ну чтобы топ хранился в кэш и запрашивался раз в час или через какое то другое время.
А то получается так, что кто раньше зарегистрировался и больше всех получил спасибо, его по "Спасибо" новичку и не догнать :( Дух соревнований страдает :roll:
Может, кто-то поможет с запросом в SQL, если это конечно возможно.
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение Siava »

misterleks, в core/helper.php
за это кажется отвечает следующий запрос:

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

		$sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
			FROM ' . $this->users_table . ' u 
			LEFT JOIN ' . $this->thanks_table . ' t ON (u.user_id = t.poster_id)
			WHERE ' . $this->db->sql_in_set('t.forum_id', $ex_fid_ary, true) . ' OR t.forum_id = 0
			GROUP BY t.poster_id 
			ORDER BY tally DESC';
оставляем последние 30 дней:

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

		$sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, t.thanks_time, u.user_id, u.username, u.user_colour
			FROM ' . $this->users_table . ' u 
			LEFT JOIN ' . $this->thanks_table . ' t ON (u.user_id = t.poster_id)
			WHERE ' . $this->db->sql_in_set('t.forum_id', $ex_fid_ary, true) . ' OR t.forum_id = 0
			AND t.thanks_time > ' . time() . ' - 2592000
			GROUP BY t.poster_id 
			ORDER BY tally DESC';
Примерно так в теории. На практике не проверял.
Последний раз редактировалось Siava 01.03.2017 19:29, всего редактировалось 1 раз.
Причина: поправил... но не то
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Стаж: 13 лет 7 месяцев
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 38 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение misterleks »

Хорошо, буду проверять на практике. Расширение поставил только вчера, поэтому надо ждать 30 дней.

Отправлено спустя 6 минут 26 секунд:
В практике что-то не так :(

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

SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2592000 GROUP BY t.poster_id ORDER BY tally DESC LIMIT ' at line 1 [1064]
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: [dev] Thanks for posts

Сообщение LavIgor »

misterleks, а если так?

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

      $sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
         FROM ' . $this->users_table . ' u 
         LEFT JOIN ' . $this->thanks_table . ' t ON (u.user_id = t.poster_id)
         WHERE (' . $this->db->sql_in_set('t.forum_id', $ex_fid_ary, true) . ' OR t.forum_id = 0)
         AND t.thanks_time > ' . time() - 2592000 . '
         GROUP BY t.poster_id 
         ORDER BY tally DESC';
Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Стаж: 13 лет 7 месяцев
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 38 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение misterleks »

Ничего не изменилась, так же ошибка.
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение Siava »

На самом деле запрос, даже если сделать рабочим, не работает как надо. Я чего-то в ступоре :mrgreen:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Стаж: 13 лет 7 месяцев
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 38 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение misterleks »

А что не так работает? Посчет не верный? А если вывести в файл или как то посмотреть, кого он выбрал, там правильные люди?
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение Siava »

misterleks, вот рабочий вариант списка за последние 30 дней.

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

		$sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
			FROM ' . $this->users_table . ' u 
			LEFT JOIN ' . $this->thanks_table . ' t ON (u.user_id = t.poster_id) AND t.thanks_time > ' . time() . ' - 2592000
			WHERE ' . $this->db->sql_in_set('t.forum_id', $ex_fid_ary, true) . ' OR t.forum_id = 0
			GROUP BY t.poster_id 
			ORDER BY tally DESC';
2592000 - это число секунд в 30 днях. Можно поменять на любое другое значение.
Пример можно у меня глянуть, работает)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [dev] Thanks for posts

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

Так будет работать точно:

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

      $time_count = time() - 2592000;
      $sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
         FROM ' . $this->users_table . ' u 
         LEFT JOIN ' . $this->thanks_table . ' t ON (u.user_id = t.poster_id AND t.thanks_time > ' . $time_count . ') 
         WHERE ' . $this->db->sql_in_set('t.forum_id', $ex_fid_ary, true) . ' OR t.forum_id = 0
         GROUP BY t.poster_id 
         ORDER BY tally DESC';
(скобку перенесла)
Последний раз редактировалось Татьяна5 01.03.2017 20:59, всего редактировалось 2 раза.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: [dev] Thanks for posts

Сообщение LavIgor »

А скобку в условии ON разве не стоит перенести в конец строки?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение Siava »

LavIgor, может быть и так. Я не силён в синтаксисе :oops: , но и с вариантом за скобкой работает без ошибок.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Стаж: 13 лет 7 месяцев
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 38 раз
Контактная информация:

Re: [dev] Thanks for posts

Сообщение misterleks »

Проверил (выставлял несколько часов), работает отлично! Хорошо бы вынести эту переменную в админку, вдруг, кому понадобиться. Так удобнее и нагляднее отслеживать, кто больше помогает на форуме в последнее (30 дней) время.

Отправлено спустя 2 минуты 21 секунду:
Для примера, у Вас в ТОПе Пчелкин и Некстати, но они же, как мне кажется, давно не помогают.
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!
Аватара пользователя
Tony25
phpBB 1.4.4
Сообщения: 174
Стаж: 7 лет 3 месяца
Благодарил (а): 84 раза
Поблагодарили: 5 раз

Re: [dev] Thanks for posts

Сообщение Tony25 »

А в чем отличие между этим и расширением репутации? Там тоже есть пальцы вверх...
я ваш кеш чистил :)
Ответить

Вернуться в «Анонсы и поддержка расширений для phpBB»