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

User Reputation Points

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: User Reputation Points

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

kazak
Считать сумму баллов из таблицы репутации
kazak
phpBB 1.2.0
Сообщения: 12
Стаж: 14 лет 2 месяца

Re: User Reputation Points

Сообщение kazak »

Получается нужно считать каждый раз для всех пользователей? Если пользователей много, то будет большая нагрузка.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: User Reputation Points

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

При миллионе пользователей с репутацией (либо на шаред-хостинге) - будет, и притом приличная
Создать отдельный столбец в таблице пользователей, раз в n дней пересчитывать его значение. Нагрузка при пересчёте будет не меньше (даже больше).
kazak
phpBB 1.2.0
Сообщения: 12
Стаж: 14 лет 2 месяца

Re: User Reputation Points

Сообщение kazak »

Спасибо.
Осталось разобраться как выборку из таблицы сделать для каждого пользователя. И потом отсортировать.
Именно для Топ-листа, который только на index_body.
kazak
phpBB 1.2.0
Сообщения: 12
Стаж: 14 лет 2 месяца

Re: User Reputation Points

Сообщение kazak »

Реализовано.

На форуме около 7 тысяч пользователей. Таблица репутации содержит на сегодня около 8 тысяч репутаций.
Выводится как общая репутация, так и за последние 12 месяцев. Так же при просмотре тем выводится полная статистика за все время и за 12 месяцев.
Сильно возросшей нагрузки на сервер не замечено пока.
Параметры хостинга 
Sprinthost тариф VIP 2. Акселератор XCache, ему выделено 256 МБ памяти.
Вот так для топлиста:

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

      function toplist_year()
	{
	    global $config;
		
	    // It is this enabled? 
		if (!$config['rp_enable_toplist'] || !$config['rp_toplist_num'])
		{
			return;
		}
        
		global $db, $phpbb_root_path, $phpEx, $template, $now_time;
        
        $now_time = time();
		$reputation_toplist = '';

        
       // SELECT user_id, username, user_colour, stabb 
       // FROM phpbb_users INNER JOIN (SELECT rep_to, SUM(rep_point) AS stabb FROM phpbb_reputations WHERE 1413282317 - rep_time < 31536000 GROUP BY rep_to) as repus ON phpbb_users.user_id = repus.rep_to WHERE user_id <> 1 AND stabb > 0 ORDER BY stabb DESC LIMIT 15
        
		$sql = 'SELECT user_id, username, user_colour, stabb
			FROM ' . USERS_TABLE . ' INNER JOIN (SELECT rep_to, SUM(rep_point) AS stabb FROM ' . REPUTATIONS_TABLE . ' WHERE '. $now_time . ' - rep_time < 31536000 GROUP BY rep_to) AS repus ON '. USERS_TABLE .'.user_id = repus.rep_to 
            WHERE user_id <> ' . ANONYMOUS . ' 
				AND stabb > 0
			ORDER BY stabb DESC';

       $result = $db->sql_query_limit($sql, $config['rp_toplist_num']);

		while ($row = $db->sql_fetchrow($result))
		{
			$user_colour = ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] .'"' : '';
            $reputation_toplist .= (($reputation_toplist != '') ? ', ' : '') . '<a' . $user_colour . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) . '">' . $row['username'] . '</a> (<a href="' . append_sid("{$phpbb_root_path}viewreputation.php?id=" . $row['user_id']) . '" onclick="popup(this.href, 780, 550); return false;">' .  $row['stabb'] . '</a>)';
		}
		$db->sql_freeresult($result);

		// Assign index specific vars
		$template->assign_vars(array(
			'S_REPUTATION_TOPLIST'	=> true,
			'REPUTATION_TOPLIST_YEAR'	=> $reputation_toplist
			));
	}
191a58a7619a.png
Так для тем:
Скрытый текст
function reputation_row($poster_id, $post_id, $reputation_cache)
{
global $auth, $db, $phpbb_root_path, $phpEx, $user;

$now_time = time();
$sql = 'SELECT SUM(CASE WHEN rep_point > 0 THEN 1 ELSE 0 END) AS positive, SUM(CASE WHEN rep_point < 0 THEN 1 ELSE 0 END) AS negative
FROM ' . REPUTATIONS_TABLE . '
WHERE rep_to = ' . $poster_id . ' AND '. $now_time . ' - rep_time < 31536000';
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if ($poster_id == ANONYMOUS)
{
$reputation_row = array();
}

else
{
$reputation_row = array(
'S_USER_REPUTATION' => (!$reputation_cache[$poster_id]['user_hide_reputation']) ? true : false,
'S_GIVE_REPUTATION' => ($auth->acl_get('u_rp_give') && $poster_id != $user->data['user_id']) ? true : false,
'S_GIVE_NEGATIVE' => ($auth->acl_get('u_rp_give_negative')) ? true : false,
'REPUTATION_TEXT' => ($row['positive'])-($row['negative']) ,
'REPUTATION_BLOCK' => $this->get_images($poster_id),
'REPUTATION_POS' => isset($row['positive']) ? $row['positive'] : 0,
'REPUTATION_NEG' => isset($row['negative']) ? $row['negative'] : 0,
'U_VIEW_REP' => ($auth->acl_get('u_rp_view_comment') || ($auth->acl_get('m_rp_moderate')) || $poster_id == $user->data['user_id']) ? append_sid("{$phpbb_root_path}viewreputation.$phpEx", 'id=' . $poster_id) : '',
'U_ADD_POS' => append_sid("{$phpbb_root_path}reputation.$phpEx", 'p=' . $post_id),
'U_ADD_NEG' => append_sid("{$phpbb_root_path}reputation.$phpEx", 'p=' . $post_id . '&mode=negative'),
);
}

return $reputation_row;
}

function reputation_row_total($poster_id, $post_id, $reputation_cache)
{
global $auth, $db, $phpbb_root_path, $phpEx, $user;

$sql = 'SELECT SUM(CASE WHEN rep_point > 0 THEN 1 ELSE 0 END) AS positive, SUM(CASE WHEN rep_point < 0 THEN 1 ELSE 0 END) AS negative
FROM ' . REPUTATIONS_TABLE . '
WHERE rep_to = ' . $poster_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if ($poster_id == ANONYMOUS)
{
$reputation_row_total = array();
}

else
{
$reputation_row_total = array(
'REPUTATION_TEXT_TOTAL' => $reputation_cache[$poster_id]['user_reputation'],
'REPUTATION_POS_TOTAL' => isset($row['positive']) ? $row['positive'] : 0,
'REPUTATION_NEG_TOTAL' => isset($row['negative']) ? $row['negative'] : 0,
);
}

return $reputation_row_total;
8d5f030d273d.png
8d5f030d273d.png (52.78 КБ) 184 просмотра
Suyta
phpBB 1.0.0
Сообщения: 2
Стаж: 9 лет 4 месяца
Благодарил (а): 1 раз

Re: User Reputation Points

Сообщение Suyta »

Помогите. Не могу настроить, чтобы можно было нажимать на репутацию в профиле для prosilver
User Reputation Points тут инструкция только для subsilver
уже неделю пытаюсь это сделать
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет
Благодарил (а): 67 раз
Поблагодарили: 799 раз
Контактная информация:

Re: User Reputation Points

Сообщение Anvar »

Для prosilver/template/memberlist_view.html

Перед <dt>{L_TOTAL_POSTS}:</dt> добавить:

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

			<dt>{L_RP_TOTAL_POINTS}:</dt>
			<dd><strong><!-- IF U_VIEW_REP --><a href="{U_VIEW_REP}"><!-- ENDIF -->{REPUTATION}<!-- IF U_VIEW_REP --></a><!-- ENDIF --></strong> (+{REPUTATION_POS} / -{REPUTATION_NEG})</dd>
Suyta
phpBB 1.0.0
Сообщения: 2
Стаж: 9 лет 4 месяца
Благодарил (а): 1 раз

Re: User Reputation Points

Сообщение Suyta »

Спасибо большое.
А можно сделать так чтоб при просмотре репутации человек мог отсортировать отзывы
т.е. например нажать посмотреть все отрицательные
Dimsim
phpBB 1.4.0
Сообщения: 33
Стаж: 12 лет 3 месяца
Благодарил (а): 10 раз
Поблагодарили: 2 раза
Контактная информация:

Re: User Reputation Points

Сообщение Dimsim »

Если в сообщении, за которое повышается/понижается репутация, отсутствует заголовок, то в Центре пользователя, в таблице ПОСЛЕДНИЕ ВЛИЯНИЯ НА РЕПУТАЦИЮ появляется запись:
К сожалению сообщение, за которое была добавлена репутация, удалено. Извините.
Но на самом деле сообщение никуда не делось, просто система не может без заголовка идентифицировать его.

Можно как нибудь сделать, чтобы мод брал заголовок из первого сообщения темы?
Аватара пользователя
DK7
Former team member
Сообщения: 1008
Стаж: 17 лет 8 месяцев
Откуда: Кишинёв
Благодарил (а): 3 раза
Поблагодарили: 25 раз
Контактная информация:

Re: User Reputation Points

Сообщение DK7 »

Легче подправить языковую переменную, т.к. мод нигде не обрабатывает таблицу топиков. следовательно ему неоткуда брать информацию о первом сообщении или о значении поля топик_титл
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: User Reputation Points

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

Dimsim писал(а):отсутствует заголовок
И это не единственный косяк от отсутствия заголовков... Это полная глупость - тереть заголовки... Проще их просто скрыть условиями или правами с запретом правки... Мод даж где-то был для этого...
Dimsim
phpBB 1.4.0
Сообщения: 33
Стаж: 12 лет 3 месяца
Благодарил (а): 10 раз
Поблагодарили: 2 раза
Контактная информация:

Сообщение Dimsim »

DK7 писал(а):Легче подправить языковую переменную, .... ..
Вы имеете виду написать, вместо: "К сожалению сообщение, за которое была добавлена репутация, удалено. Извините."
например: "К сожалению, сообщение за которое была добавлена репутация удалено, либо не имеет заголовка." ???
DK7 писал(а):...... ...., т.к. мод нигде не обрабатывает таблицу топиков. следовательно ему неоткуда брать информацию о первом сообщении или о значении поля топик_титл
Но заголовок он откуда то берёт.
Может можно, чтобы мод вместо заголовка брал что нибудь другое? Ну например, номер поста:
Номер поста.png
Было бы идеально, если бы вместо "К сожалению сообщение, за которое была добавлена репутация, удалено. Извините.", было бы написано "Посмотреть сообщение за которое была добавлена репутация", мод подхватывал номер поста и делал эту надпись ссылкой.
Я в программировании не силён. Интересно, так сложно сделать?
Пчелкин писал(а):И это не единственный косяк от отсутствия заголовков... Это полная глупость - тереть заголовки...
Не помню уже где, но, почитав вот это, решил последовать совету.
Просматривая любое обсуждение форума вначале каждого сообщения крупным шрифтом отображается тема сообщения.
Значение этой темы в абсолютном большинстве случаев автор не изменяет.
По умолчанию туда прописывается RE: + Оригинальное название темы.
В результате 99% сообщений содержат "тему сообщения" не несущую никакой полезной информации.
Я посчитал нужным побороться с этим явлением.
А если пользователь сам удалил заголовок (так же как я сделал в этом посте), то получается тоже косяк.
Можно как то сделать, чтобы заполнение заголовка было обязательным? Так же как в личных сообщения, пока заголовок не заполнишь сообщение не отправиться.
Последний раз редактировалось Dimsim 14.11.2014 4:24, всего редактировалось 1 раз.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: User Reputation Points

Сообщение xisp »

Dimsim писал(а):Можно как то сделать, чтобы заполнение заголовка было обязательным?
Лучше сделать так, чтобы работало без заголовков.
phpBBex
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: User Reputation Points

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

Dimsim писал(а):чтобы заполнение заголовка было обязательным?
ты не читал? -
Пчелкин писал(а):или правами с запретом правки... Мод даж где-то был для этого...
Edit Subject Permissions [право редактировать заголовки]

Добавлено спустя 32 секунды:
xisp писал(а):Лучше сделать так, чтобы работало без заголовков.
Ышо один убийца...
Dimsim
phpBB 1.4.0
Сообщения: 33
Стаж: 12 лет 3 месяца
Благодарил (а): 10 раз
Поблагодарили: 2 раза
Контактная информация:

Заголовка НЕТ.

Сообщение Dimsim »

Уважаемый Пчелкин, я внимательно читал ВАШ пост.
Но, я не хочу запрещать правку заголовков.
Я согласен с высказывание:
Просматривая любое обсуждение форума вначале каждого сообщения крупным шрифтом отображается тема сообщения.
Значение этой темы в абсолютном большинстве случаев автор не изменяет.
По умолчанию туда прописывается RE: + Оригинальное название темы.
В результате 99% сообщений содержат "тему сообщения" не несущую никакой полезной информации.
Поэтому убрал заголовки на своём форуме.

Проблемка в моде User Reputation Points есть. Ведь даже если на форуме заголовок автоматически заполнен, его может удалить пользователь, и тогда если за этот пост поднимут репутацию, автор в Центре пользователя увидит надпись: К сожалению сообщение, за которое была добавлена репутация, удалено. Извините., и подумает что его сообщения удалил какой то из модераторов.
Ведь это неправильно, не правда ли?

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

Или, как вариант, сделать обязательным заполнение заголовка, как в личных сообщения, пока заголовок не заполнишь, пост не опубликуешь. Тогда и заголовки будут, и все разные. (И волки сыты, и овцы целы)

А запрет на редактирование заголовком это не выход.
Пчелкин писал(а):И это не единственный косяк от отсутствия заголовков... Это полная глупость - тереть заголовки...
У меня форуму почти три года. Проблем из-за отсутствия заголовков не заметил.
Кстати, на других движках форумов заполнение заголовков не обязательно, а вот в phpBB3 сделали это обязательным. Бред какой то...

Добавлено спустя 1 час 44 минуты 11 секунд:
Re: User Reputation Points
Нашёл тему по инструкциям из которой я убирал заголовок. Избавляемся от темы по-умолчанию при ответах (RE:..)
Там, кстати, упоминается о проблеме с модом User Reputation Points. Видимо три года назад я не понял смысл этого поста. Да и тогда был начинающим "форумоводом".

В общем, сейчас для меня было бы лучшее решение это, вернуть автозаполнение заголовка, и сделать невозможность опубликовать пост с пустым заголовком, как это сделано при публикации новой темы. Чтобы пользователь не мог удалить его и опубликовать сообщение без заголовка.
И тогда проблема с этим: К сожалению сообщение, за которое была добавлена репутация, удалено. Извините. будет решена.

Есть здесь специалисты?
Как добавить условие на публикацию поста, только при заполненном заголовке?
Закрыто

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