Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как добавить функцию в простенький хак?

Как добавить функцию в простенький хак?


     15.01.2024    Все вопросы » Общие вопросы    275

вопрос
Здравствуйте! Есть простенький код из ≈ 5-ти строчек, которым выводиться легенький рейтинг активности пользователя. Как добавить в него подсчет баллов за выставление рейтинга к комментариям и новостям. Например, за один лайк коммента - 2 балла, за лайк самой новости - 3. Буду благодарен за помощь!

Собственно сам код:

$conf_points = array();
$conf_points['regtime'] = round( ( ( $_TIME-$row['reg_date'])/86400 ), 0 ); // 1 за день с момента регистрации
$conf_points['foto'] = ($member_id['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0 : 30; // 30 за загрузку авы
$conf_points['land'] = $row['land'] == '' ? 0 : 20; // 20 за зполнение места жительства
$conf_points['name'] = $row['fullname'] == '' ? 0 : 20; // 20 за зполнение имени
$conf_points['comments'] = ( $row['comm_num']* 5 ); // 5 за каждый комментарий
$tpl->set('{confidence_level}', array_sum($conf_points));
if( $row['is_register'] ) $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "\\1" );
else $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "" );

Ответил: rewenas


Наверное так:

$row_news = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_logs WHERE member = '{$row['name']}' ");
  $count_news = $row_news['count'];
  $result_news = $count_news * 3; //  по 3 единицы за лайк каждой новости

  $row_comm = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_comment_rating_log WHERE member = '{$row['name']}' ");
  $count_comm = $row_comm['count'];
  $result_comm = $count_comm * 2; //  по 2 единицы за лайк каждого комментария

  $conf_points = array();
  $conf_points['result_news'] = $result_news;
  $conf_points['result_comm'] = $result_comm;
  $conf_points['regtime'] = round( ( ( $_TIME-$row['reg_date'])/86400 ), 0 ); // 1 за день с момента регистрации
  $conf_points['foto'] = ($member_id['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $member_id['foto'] ))) ? 0 : 30; // 30 за загрузку авы
  $conf_points['land'] = $row['land'] == '' ? 0 : 20; // 20 за заполнение места жительства
  $conf_points['name'] = $row['fullname'] == '' ? 0 : 20; // 20 за заполнение имени
  $conf_points['comments'] = ( $row['comm_num']* 5 ); // 5 за каждый комментарий
  $tpl->set('{confidence_level}', array_sum($conf_points));
  if( $row['is_register'] ) $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "\\1" );
  else $tpl->set_block( "'\\[show_confidence\\](.*?)\\[/show_confidence\\]'si", "" ); 


Запросы лучше кешировать скорее всего ключом основанном на значении $row['name'] для обеспечения их уникальности для каждого пользователя.

2 комментария

rewenas
Юзер

rewenas - 15 января 2024 23:36 -

Тут уже без доп. запросов не обойтись. Надо делать выборку из таблиц dle_comment_rating_log и dle_logs

rewenas
Юзер

rewenas - 16 января 2024 00:26 -

Delete

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх