» » Фикс рейтинга новостей для DLE 10.4

Фикс рейтинга новостей для DLE 10.4

Фикс рейтинга новостей для DLE 10.4


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

1) Открываем engine/ajax/rating.php

Находим:


$member_id['name'] = $db->safesql($member_id['name']);




Ниже добавляем:

$userid = $db->safesql($member_id['user_id']);




Находим:

$db->query( "UPDATE " . PREFIX . "_post_extras SET rating='{$go_rate}', vote_num='1' WHERE news_id ='{$news_id}'" );




Выше добавляем:

$db->query( "INSERT INTO ".PREFIX."_rating_log (`user_id`,`news_id`) VALUES ('$userid','{$news_id}')" );




Находим:

$db->query( "UPDATE " . PREFIX . "_post_extras SET rating='{$go_rate}', vote_num='1' WHERE news_id ='{$news_id}'" );




Выше добавляем:

$db->query( "INSERT INTO ".PREFIX."_rating_log (`user_id`,`news_id`) VALUES ('$userid','{$news_id}')" );




Находим:

$db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating+'{$go_rate}', vote_num=vote_num+1 WHERE news_id ='{$news_id}'" );




Выше добавляем:

$db->query( "INSERT INTO ".PREFIX."_rating_log (`user_id`,`news_id`) VALUES ('$userid','{$news_id}')" );





2) Открываем

engine/modules/show.short.php



Находим:

if( $row['allow_rate'] ) {




Ниже добавляем:

$userid = $member_id['user_id'];
$newsid = $row['id'];
$check = $db->query("SELECT * FROM ".PREFIX."_rating_log where user_id='$userid' AND news_id='$newsid'");




Находим:

if( $config['short_rating'] AND $user_group[$member_id['user_group']]['allow_rating']) {




Заменяем на:

if( $config['short_rating'] AND $user_group[$member_id['user_group']]['allow_rating'] AND $db->num_rows($check)==0) {





3) Открываем engine/modules/show.full.php

Находим:

if( $row['allow_rate'] ) {




Ниже добавляем:

$userid = $member_id['user_id'];
$newsid = $row['id'];
$check = $db->query("SELECT * FROM ".PREFIX."_rating_log WHERE user_id='$userid' AND news_id='$newsid'");



Находим:

$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );




Заменяем на:

if($db->num_rows($check)<=0){
$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
}
else{
$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], false ) );
}



Находим:

if( $user_group[$member_id['user_group']]['allow_rating']) {




Заменяем на:

if( $user_group[$member_id['user_group']]['allow_rating'] AND $db->num_rows($check)==0) {




4) Открываем phpmyadmin и выполняем запрос:

CREATE TABLE IF NOT EXISTS `ПРЕФИКС_rating_log` (
  `user_id` text NOT NULL,
  `news_id` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;




заменив ПРЕФИКС на ваш префикс

Готово!

Результат: После первой оценки новости пользователь не сможет оценивать новость еще раз, повторно.

Комментарии

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Личные сообщения

Ваши переписки