Файл: core/modules/users_rating.php
Строк: 187
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$data = array();
$data = $db->selectRow("SELECT `u`.*, `v`.*
                        FROM ?_users `u` LEFT JOIN ?_users_visit `v`
                        ON `u`.`users_login` = `v`.`visit_user`
                        WHERE `u`.`users_id` = ? LIMIT 1;", $user_id);
if (empty($data) || !is_array($data)) {
    $inSes->addMessage('Ошибка! Пользователь с данным логином не найден!');
    redirect($config['site_url']);
}
if ($data['users_ban'] == 1) {
    $inSes->addMessage('Ошибка! Пользователь заблокирован!');
    redirect($config['site_url']);
}
if ($config['allow_regkeys'] > 0 && $data['users_confirmreg'] > 0) {
    $inSes->addMessage('Ошибка! Пользователя не существует!');
    redirect($config['site_url']);
}
if ($is_logged) {
    if ($log != $data['users_login'] || is_admin()) {
        if ($uset['users_point'] >= $config['edit_rating_point']) {
            $_time = (int) $db->selectCell("SELECT MAX(`rating_time`) FROM ?_users_rating WHERE `rating_user` = ? LIMIT 1;", $log);
            if ($_time + 10800 < SITE_TIME) {
                $is_rat = (int) $db->selectCell("SELECT `rating_id` FROM ?_users_rating
                                                 WHERE `rating_user` = ? AND `rating_login` = ? 
                                                 AND `rating_time` > ? LIMIT 1;", $log, $data['users_login'], SITE_TIME-86400 * 30);
                if ($is_rat < 1) {
                    if (!empty($_POST['submit'])) {
                      $vote = !empty($_POST['vote']) ? num($_POST['vote'])   : 0;
                      $text = !empty($_POST['text']) ? check($_POST['text']) : '';
                      if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
                        if (cms_strlen($text) >= 3 && cms_strlen($text) <= 250) {
                          $text = antimat($text);
                          $text = smiles($text);
                          if ($vote == 1) { // Увеличение авторитета
                              $db->query("INSERT INTO ?_users_rating (`rating_user`, `rating_login`, `rating_text`, `rating_vote`, `rating_time`) 
                                              VALUES (?, ?, ?, ?, ?);", $log, $data['users_login'], $text, 1, SITE_TIME);
                              $db->query("DELETE FROM ?_users_rating WHERE `rating_user` = ? AND `rating_time` < (SELECT MIN(`rating_time`) FROM (SELECT `rating_time` FROM ?_users_rating WHERE `rating_user` = ? ORDER BY `rating_time` DESC LIMIT 20) AS `del`);", $log, $log);
                              $db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1), `users_rating` = CAST(`users_posrating`-`users_negrating` AS SIGNED)+1, `users_posrating` = (`users_posrating` + 1) WHERE `users_login` = ? LIMIT 1;", $data['users_login']);
                              $uzdata = $db->selectRow("SELECT `users_rating`, `users_posrating`, `users_negrating` FROM ?_users 
                                                        WHERE `users_login` = ? LIMIT 1;", $data['users_login']);
                              $priv  = '<img src="' . $config['site_url'] . '/images/icons/up.gif" class="icon" alt="Плюс" /> ';
                              $priv .= 'Пользователь [b]' . nickname($log) . '[/b] ';
                              $priv .= 'поставил вам плюс! (Ваш рейтинг: ' . $uzdata['users_rating'] . ')';
                              $priv .= "nКомментарий: " . $text;
                              $db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) 
                                          VALUES (?, ?, ?, ?);", $data['users_login'], $log, $priv, SITE_TIME);
                              $inSes->addMessage('Ваш положительный голос за пользователя <b>' . nickname($data['users_login']) . '</b> успешно оставлен!', 'ok');
                              gen_red('anketa', '', RND);
                          }
                          else if ($vote == 2) {
                            if ($uset['users_rating'] >= 5) {
                              $db->query("INSERT INTO ?_users_rating (`rating_user`, `rating_login`, `rating_text`, `rating_vote`, `rating_time`) 
                                          VALUES (?, ?, ?, ?, ?);", $log, $data['users_login'], $text, 0, SITE_TIME);
                          $db->query("DELETE FROM ?_users_rating WHERE `rating_user` = ? AND `rating_time` < (SELECT MIN(`rating_time`) FROM (SELECT `rating_time` FROM ?_users_rating WHERE `rating_user` = ? ORDER BY `rating_time` DESC LIMIT 20) AS `del`);", $log, $log);
                              $db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1), `users_rating` = CAST(`users_posrating`-`users_negrating` AS SIGNED)-1, `users_negrating` = (`users_negrating` + 1) WHERE `users_login` = ? LIMIT 1;", $data['users_login']);
                              $uzdata = $db->selectRow("SELECT `users_rating`, `users_posrating`, `users_negrating` FROM ?_users 
                                                        WHERE `users_login` = ? LIMIT 1;", $data['users_login']);
                              $priv  = '<img src="' . $config['site_url'] . '/images/icons/down.gif" class="icon" alt="Минус" /> ';
                              $priv .= 'Пользователь [b]' . nickname($log) . '[/b] ';
                              $priv .= 'поставил вам минус! (Ваш рейтинг: ' . $uzdata['users_rating'] . ')';
                              $priv .= "nКомментарий: " . $text;
                              $db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) 
                                          VALUES (?, ?, ?, ?);", $data['users_login'], $log, $priv, SITE_TIME);
                              $inSes->addMessage('Ваш отрицательный голос за пользователя <b>' . nickname($data['users_login']) . '</b> успешно оставлен!', 'ok');
                              gen_red('anketa', '', RND);
                            }
                            else $inSes->addMessage('Ошибка! Уменьшать авторитет могут только пользователи с рейтингом 5 или выше!');
                          }
                          else $inSes->addMessage('Ошибка! Неверно указана оценка!');
                        }
                        else $inSes->addMessage('Ошибка! Слишком длинный или короткий комментарий!');
                      }
                      else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
                    }
                    show_header('Изменение авторитета');
                    echo '<div class="bl">' . user_visit_icon($data['users_login'], $data['users_gender'], $data['visit_nowtime']);
                    echo ' <b>' . users_anketa($data['users_id'], $data['users_login']) . ' </b> ';
                    echo user_visit($data['users_login']) . '</div>';
                    $form = new cmsForm('?rnd=' . $_SESSION['token']);
                    $form->addSelect('Рейтинг:', 'vote', $id, array(1 => 'Плюс', 2 => 'Минус'));
                    $form->addTextarea('Комментарий:', 'text', request('text'));
                    $form->Submit('Продолжить','submit');
                    unset($form);
                    echo '<div class="link"><a href="' . gen_uri('anketa', '', RND) . '">В анкету</a></div>';
                    echo '<div class="link"><a href="' . gen_uri('rating_history', '', RND) . '">История</a></div>';
                }
                else {
                    $inSes->addMessage('Ошибка! Вы уже изменяли авторитет этому пользователю!');
                    gen_red('anketa', '', RND);
                }
            }
            else {
                $inSes->addMessage('Ошибка! Разрешается изменять авторитет раз в 3 часа!');
                gen_red('anketa', '', RND);
            }
        }
        else {
            $inSes->addMessage('Ошибка! Для изменения авторитета вам необходимо набрать ' . num2name($config['edit_rating_point'], $config['score_name']) . '!');
            gen_red('anketa', '', RND);
        }
    }
    else {
        $inSes->addMessage('Ошибка! Нельзя изменять авторитет самому себе!');
        gen_red('anketa', '', RND);
    }
}
else {
    $inSes->addMessage('Вы не авторизованы, изменять авторитет, могут только обитатели сайта!');
    gen_red('anketa', '', RND);
}
?>