Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

[3.1][3.2] [dev] Thanks for posts

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14684
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 352 раза
Поблагодарили: 1610 раз

[3.1][3.2] [dev] 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
AJAX дополнение к данному расширению которое позволяет выдавать благодарности без перезагрузки страницы: Addon for thanks for posts by Алг.
Исходный код: https://github.com/alg5/addonforthanksforposts
Копировать в папку: /ext/alg/addonforthanksforposts/
------------------------
Вопрос-ответ;
Q. Как сделать так чтобы гости видели список поблагодаривших за сообщение при просмотре темы?
W. Разрешить в форумных правах доступа(Или роль "Доступ только для чтения") гостям благодарить за сообщение. Благодарить не смогут, а видеть список поблагодаривших будут.
Последний раз редактировалось rxu 12.01.2020 20:01, всего редактировалось 2 раза.
Изображение

Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:49 модератором LavIgor

eeeman
phpBB 1.4.0
Сообщения: 30
Зарегистрирован: 16.02.2017 16:36
Благодарил (а): 6 раз

Re: [dev] Thanks for posts

Сообщение eeeman »

Привет всем, как убрать из ссылок "топлист сообщений" и "благодарности"?

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4264
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер
Благодарил (а): 112 раз
Поблагодарили: 470 раз

Re: [dev] Thanks for posts

Сообщение Siava »

eeeman, удалить thanks_for_posts/styles/prosilver/template/event/navbar_header_quick_links_after.html
и почистить кеш после.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Зарегистрирован: 20.08.2010 15:09
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 37 раз

Re: [dev] Thanks for posts

Сообщение misterleks »

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

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4264
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер
Благодарил (а): 112 раз
Поблагодарили: 470 раз

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
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Зарегистрирован: 20.08.2010 15:09
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 37 раз

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
Поддержка
Поддержка
Сообщения: 3457
Зарегистрирован: 28.04.2014 8:16
Благодарил (а): 39 раз
Поблагодарили: 927 раз

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
Зарегистрирован: 20.08.2010 15:09
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 37 раз

Re: [dev] Thanks for posts

Сообщение misterleks »

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

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4264
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер
Благодарил (а): 112 раз
Поблагодарили: 470 раз

Re: [dev] Thanks for posts

Сообщение Siava »

На самом деле запрос, даже если сделать рабочим, не работает как надо. Я чего-то в ступоре :mrgreen:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Зарегистрирован: 20.08.2010 15:09
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 37 раз

Re: [dev] Thanks for posts

Сообщение misterleks »

А что не так работает? Посчет не верный? А если вывести в файл или как то посмотреть, кого он выбрал, там правильные люди?
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4264
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер
Благодарил (а): 112 раз
Поблагодарили: 470 раз

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
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9855
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 176 раз
Поблагодарили: 2744 раза

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
Поддержка
Поддержка
Сообщения: 3457
Зарегистрирован: 28.04.2014 8:16
Благодарил (а): 39 раз
Поблагодарили: 927 раз

Re: [dev] Thanks for posts

Сообщение LavIgor »

А скобку в условии ON разве не стоит перенести в конец строки?

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4264
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер
Благодарил (а): 112 раз
Поблагодарили: 470 раз

Re: [dev] Thanks for posts

Сообщение Siava »

LavIgor, может быть и так. Я не силён в синтаксисе :oops: , но и с вариантом за скобкой работает без ошибок.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Аватара пользователя
misterleks
phpBB 2.0.9
Сообщения: 715
Зарегистрирован: 20.08.2010 15:09
Откуда: Великий Новгород
Благодарил (а): 103 раза
Поблагодарили: 37 раз

Re: [dev] Thanks for posts

Сообщение misterleks »

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

Отправлено спустя 2 минуты 21 секунду:
Для примера, у Вас в ТОПе Пчелкин и Некстати, но они же, как мне кажется, давно не помогают.
Продаю комиксы, продаю инструмент, продаю товары для охоты и рыбаков... и администрирую форум!

Аватара пользователя
Tony25
phpBB 1.4.4
Сообщения: 165
Зарегистрирован: 10.12.2016 9:27
Благодарил (а): 85 раз
Поблагодарили: 5 раз

Re: [dev] Thanks for posts

Сообщение Tony25 »

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

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