Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Блог » Фикс рейтинга dle 10.4 (Проверка на повторное голосование)

Фикс рейтинга dle 10.4 (Проверка на повторное голосование)


 Twelvee    22.02.2015    рейтинг, dle, rating 10.4, fix, hack, модуль, twelvee    Блог    4643    1 комментарий

Фикс по просьбе cowsdby. (Пост)

Начнем:
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;

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

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

1 комментарий

m0skit
Юзер

m0skit - 4 апреля 2015 11:52 -

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


А если сайт в UTF-8 тогда запрос должен быть такой?
CREATE TABLE IF NOT EXISTS `ПРЕФИКС_rating_log` (
  `user_id` text NOT NULL,
  `news_id` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

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