ФИКС РЕЙТИНГА В 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;


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

Готово!

Результат: После первой оценки новости пользователь не сможет оценивать новость еще раз, повторно.
Внимание! Данный материал предоставлен сайтом исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Нет комментариев. Гость, не желаешь оставить первый комментарий?

Перед публикацией, советую ознакомится с правилами!

Наш Тelegram
Подписка залог успеха ;)
Бесплатный игровой хостинг
Только для жителей Украины
4 посетителя на сайте. Из них:
Гости4
Список пользователей
Brandongop Был(a) в сети 35 минут назад
JocelynRaphael1 Был(a) в сети 3 часа назад
Lucasqk Был(a) в сети 4 часа назад
imRhype Был(a) в сети 9 часов назад
Tredcazoode Был(a) в сети 10 часов назад
Samanthamh Был(a) в сети 11 часов назад
Gavinxw Был(a) в сети 12 часов назад
Benjamined Был(a) в сети 13 часов назад
Chinaobset Был(a) в сети 16 часов назад
Williamsiz Был(a) в сети 16 часов назад
Samantahxl Был(a) в сети 17 часов назад
Chaseol Был(a) в сети 17 часов назад
MatthewElora Был(a) в сети 18 часов назад
dorpopovc Был(a) в сети 18 часов назад
terricd5 Был(a) в сети 18 часов назад
evelynbspurn Был(a) в сети 18 часов назад
Sirtgal Был(a) в сети 18 часов назад