Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
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
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
- Татьяна5
- Поддержка
- Сообщения: 12372
- Стаж: 12 лет 7 месяцев
- Благодарил (а): 223 раза
- Поблагодарили: 3517 раз
- Контактная информация:
Re: User Reputation Points
Получается нужно считать каждый раз для всех пользователей? Если пользователей много, то будет большая нагрузка.
- Татьяна5
- Поддержка
- Сообщения: 12372
- Стаж: 12 лет 7 месяцев
- Благодарил (а): 223 раза
- Поблагодарили: 3517 раз
- Контактная информация:
Re: User Reputation Points
При миллионе пользователей с репутацией (либо на шаред-хостинге) - будет, и притом приличная
Создать отдельный столбец в таблице пользователей, раз в n дней пересчитывать его значение. Нагрузка при пересчёте будет не меньше (даже больше).
Создать отдельный столбец в таблице пользователей, раз в n дней пересчитывать его значение. Нагрузка при пересчёте будет не меньше (даже больше).
Re: User Reputation Points
Спасибо.
Осталось разобраться как выборку из таблицы сделать для каждого пользователя. И потом отсортировать.
Именно для Топ-листа, который только на index_body.
Осталось разобраться как выборку из таблицы сделать для каждого пользователя. И потом отсортировать.
Именно для Топ-листа, который только на index_body.
Re: User Reputation Points
Реализовано.
На форуме около 7 тысяч пользователей. Таблица репутации содержит на сегодня около 8 тысяч репутаций.
Выводится как общая репутация, так и за последние 12 месяцев. Так же при просмотре тем выводится полная статистика за все время и за 12 месяцев.
Сильно возросшей нагрузки на сервер не замечено пока.
Вот так для топлиста:
Так для тем:
На форуме около 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
));
}
Скрытый текст
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;
{
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;
Re: User Reputation Points
Помогите. Не могу настроить, чтобы можно было нажимать на репутацию в профиле для prosilver
User Reputation Points тут инструкция только для subsilver
уже неделю пытаюсь это сделать
User Reputation Points тут инструкция только для subsilver
уже неделю пытаюсь это сделать
-
- Former team member
- Сообщения: 1965
- Стаж: 14 лет
- Благодарил (а): 67 раз
- Поблагодарили: 799 раз
- Контактная информация:
Re: User Reputation Points
Для 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>
Re: User Reputation Points
Спасибо большое.
А можно сделать так чтоб при просмотре репутации человек мог отсортировать отзывы
т.е. например нажать посмотреть все отрицательные
А можно сделать так чтоб при просмотре репутации человек мог отсортировать отзывы
т.е. например нажать посмотреть все отрицательные
-
- phpBB 1.4.0
- Сообщения: 33
- Стаж: 12 лет 3 месяца
- Благодарил (а): 10 раз
- Поблагодарили: 2 раза
- Контактная информация:
Re: User Reputation Points
Если в сообщении, за которое повышается/понижается репутация, отсутствует заголовок, то в Центре пользователя, в таблице ПОСЛЕДНИЕ ВЛИЯНИЯ НА РЕПУТАЦИЮ появляется запись:
Можно как нибудь сделать, чтобы мод брал заголовок из первого сообщения темы?
Но на самом деле сообщение никуда не делось, просто система не может без заголовка идентифицировать его.К сожалению сообщение, за которое была добавлена репутация, удалено. Извините.
Можно как нибудь сделать, чтобы мод брал заголовок из первого сообщения темы?
- DK7
- Former team member
- Сообщения: 1008
- Стаж: 17 лет 8 месяцев
- Откуда: Кишинёв
- Благодарил (а): 3 раза
- Поблагодарили: 25 раз
- Контактная информация:
Re: User Reputation Points
Легче подправить языковую переменную, т.к. мод нигде не обрабатывает таблицу топиков. следовательно ему неоткуда брать информацию о первом сообщении или о значении поля топик_титл
- Пчелкин
- phpBB 3.3.0
- Сообщения: 11234
- Стаж: 14 лет 2 месяца
- Откуда: fotovideoforum.ru
- Благодарил (а): 1782 раза
- Поблагодарили: 1340 раз
- Контактная информация:
Re: User Reputation Points
И это не единственный косяк от отсутствия заголовков... Это полная глупость - тереть заголовки... Проще их просто скрыть условиями или правами с запретом правки... Мод даж где-то был для этого...Dimsim писал(а):отсутствует заголовок
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
-
- phpBB 1.4.0
- Сообщения: 33
- Стаж: 12 лет 3 месяца
- Благодарил (а): 10 раз
- Поблагодарили: 2 раза
- Контактная информация:
Вы имеете виду написать, вместо: "К сожалению сообщение, за которое была добавлена репутация, удалено. Извините."DK7 писал(а):Легче подправить языковую переменную, .... ..
например: "К сожалению, сообщение за которое была добавлена репутация удалено, либо не имеет заголовка." ???
Но заголовок он откуда то берёт.DK7 писал(а):...... ...., т.к. мод нигде не обрабатывает таблицу топиков. следовательно ему неоткуда брать информацию о первом сообщении или о значении поля топик_титл
Может можно, чтобы мод вместо заголовка брал что нибудь другое? Ну например, номер поста: Было бы идеально, если бы вместо "К сожалению сообщение, за которое была добавлена репутация, удалено. Извините.", было бы написано "Посмотреть сообщение за которое была добавлена репутация", мод подхватывал номер поста и делал эту надпись ссылкой.
Я в программировании не силён. Интересно, так сложно сделать?
Не помню уже где, но, почитав вот это, решил последовать совету.Пчелкин писал(а):И это не единственный косяк от отсутствия заголовков... Это полная глупость - тереть заголовки...
А если пользователь сам удалил заголовок (так же как я сделал в этом посте), то получается тоже косяк.Просматривая любое обсуждение форума вначале каждого сообщения крупным шрифтом отображается тема сообщения.
Значение этой темы в абсолютном большинстве случаев автор не изменяет.
По умолчанию туда прописывается RE: + Оригинальное название темы.
В результате 99% сообщений содержат "тему сообщения" не несущую никакой полезной информации.
Я посчитал нужным побороться с этим явлением.
Можно как то сделать, чтобы заполнение заголовка было обязательным? Так же как в личных сообщения, пока заголовок не заполнишь сообщение не отправиться.
Последний раз редактировалось Dimsim 14.11.2014 4:24, всего редактировалось 1 раз.
- xisp
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 11 лет 10 месяцев
- Благодарил (а): 152 раза
- Поблагодарили: 215 раз
- Забанен: Бессрочно
Re: User Reputation Points
Лучше сделать так, чтобы работало без заголовков.Dimsim писал(а):Можно как то сделать, чтобы заполнение заголовка было обязательным?
phpBBex
- Пчелкин
- phpBB 3.3.0
- Сообщения: 11234
- Стаж: 14 лет 2 месяца
- Откуда: fotovideoforum.ru
- Благодарил (а): 1782 раза
- Поблагодарили: 1340 раз
- Контактная информация:
Re: User Reputation Points
ты не читал? -Dimsim писал(а):чтобы заполнение заголовка было обязательным?
Edit Subject Permissions [право редактировать заголовки]Пчелкин писал(а):или правами с запретом правки... Мод даж где-то был для этого...
Добавлено спустя 32 секунды:
Ышо один убийца...xisp писал(а):Лучше сделать так, чтобы работало без заголовков.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
-
- phpBB 1.4.0
- Сообщения: 33
- Стаж: 12 лет 3 месяца
- Благодарил (а): 10 раз
- Поблагодарили: 2 раза
- Контактная информация:
Заголовка НЕТ.
Уважаемый Пчелкин, я внимательно читал ВАШ пост.
Но, я не хочу запрещать правку заголовков.
Я согласен с высказывание:
Проблемка в моде User Reputation Points есть. Ведь даже если на форуме заголовок автоматически заполнен, его может удалить пользователь, и тогда если за этот пост поднимут репутацию, автор в Центре пользователя увидит надпись: К сожалению сообщение, за которое была добавлена репутация, удалено. Извините., и подумает что его сообщения удалил какой то из модераторов.
Ведь это неправильно, не правда ли?
Каждый настраивает свой форум как ему нравится, сколько форумов, столько и мнений по настройке.
Для меня, например, лучшим выходом было бы чтобы мод вместо заголовка брал что нибудь другое? Ну например, номер поста. Предполагаю, что для этого достаточно поправить код в одном месте.
Или, как вариант, сделать обязательным заполнение заголовка, как в личных сообщения, пока заголовок не заполнишь, пост не опубликуешь. Тогда и заголовки будут, и все разные. (И волки сыты, и овцы целы)
А запрет на редактирование заголовком это не выход.
Кстати, на других движках форумов заполнение заголовков не обязательно, а вот в phpBB3 сделали это обязательным. Бред какой то...
Добавлено спустя 1 час 44 минуты 11 секунд:
Re: User Reputation Points
Нашёл тему по инструкциям из которой я убирал заголовок. Избавляемся от темы по-умолчанию при ответах (RE:..)
Там, кстати, упоминается о проблеме с модом User Reputation Points. Видимо три года назад я не понял смысл этого поста. Да и тогда был начинающим "форумоводом".
В общем, сейчас для меня было бы лучшее решение это, вернуть автозаполнение заголовка, и сделать невозможность опубликовать пост с пустым заголовком, как это сделано при публикации новой темы. Чтобы пользователь не мог удалить его и опубликовать сообщение без заголовка.
И тогда проблема с этим: К сожалению сообщение, за которое была добавлена репутация, удалено. Извините. будет решена.
Есть здесь специалисты?
Как добавить условие на публикацию поста, только при заполненном заголовке?
Но, я не хочу запрещать правку заголовков.
Я согласен с высказывание:
Поэтому убрал заголовки на своём форуме.Просматривая любое обсуждение форума вначале каждого сообщения крупным шрифтом отображается тема сообщения.
Значение этой темы в абсолютном большинстве случаев автор не изменяет.
По умолчанию туда прописывается RE: + Оригинальное название темы.
В результате 99% сообщений содержат "тему сообщения" не несущую никакой полезной информации.
Проблемка в моде User Reputation Points есть. Ведь даже если на форуме заголовок автоматически заполнен, его может удалить пользователь, и тогда если за этот пост поднимут репутацию, автор в Центре пользователя увидит надпись: К сожалению сообщение, за которое была добавлена репутация, удалено. Извините., и подумает что его сообщения удалил какой то из модераторов.
Ведь это неправильно, не правда ли?
Каждый настраивает свой форум как ему нравится, сколько форумов, столько и мнений по настройке.
Для меня, например, лучшим выходом было бы чтобы мод вместо заголовка брал что нибудь другое? Ну например, номер поста. Предполагаю, что для этого достаточно поправить код в одном месте.
Или, как вариант, сделать обязательным заполнение заголовка, как в личных сообщения, пока заголовок не заполнишь, пост не опубликуешь. Тогда и заголовки будут, и все разные. (И волки сыты, и овцы целы)
А запрет на редактирование заголовком это не выход.
У меня форуму почти три года. Проблем из-за отсутствия заголовков не заметил.Пчелкин писал(а):И это не единственный косяк от отсутствия заголовков... Это полная глупость - тереть заголовки...
Кстати, на других движках форумов заполнение заголовков не обязательно, а вот в phpBB3 сделали это обязательным. Бред какой то...
Добавлено спустя 1 час 44 минуты 11 секунд:
Re: User Reputation Points
Нашёл тему по инструкциям из которой я убирал заголовок. Избавляемся от темы по-умолчанию при ответах (RE:..)
Там, кстати, упоминается о проблеме с модом User Reputation Points. Видимо три года назад я не понял смысл этого поста. Да и тогда был начинающим "форумоводом".
В общем, сейчас для меня было бы лучшее решение это, вернуть автозаполнение заголовка, и сделать невозможность опубликовать пост с пустым заголовком, как это сделано при публикации новой темы. Чтобы пользователь не мог удалить его и опубликовать сообщение без заголовка.
И тогда проблема с этим: К сожалению сообщение, за которое была добавлена репутация, удалено. Извините. будет решена.
Есть здесь специалисты?
Как добавить условие на публикацию поста, только при заполненном заголовке?