Файл: 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);
}
?>