Файл: modules/dpanel/ban.php
Строк: 333
<?php
/****
* @package LiveCMS
* @link livecms.org
* @author MyZik
* @version See attached file VERSION.txt
* @license See attached file LICENSE.txt
* @copyright Copyright (C) LiveCMS Development Team
****/
ob_start();
$lang_dpanel = load_lng('direct_panel'); // Подключаем файл языка
$title = $lang_dpanel['ban_system']; // Заголовок страницы
$module = 'dpanel'; // Модуль
/**
* Проверка прав доступа
**/
if (!isset($user) || $user['rights'] < 1) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['error_rights'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="/index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем, задан ли параметр
**/
if (!isset($_GET['id']) || empty($_GET['id']) || !is_numeric($_GET['id'])) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['error_parameter'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="/index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем существование юзера
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `id` = '" . num($_GET['id']) . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_dpanel['user_not_exists'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
$ID = num($_GET['id']);
$profile = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '$ID' LIMIT 1"));
$ban = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_banned_users` WHERE `user_id` = '$ID' LIMIT 1"));
if (isset($_GET['ban'])) {
/**
* Баним пользователя
**/
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
/**
* Если пользователь уже забанен, выводим уведомление
**/
if ($ban['ban_time'] > time()) {
echo '<div class="error">' . $lang_dpanel['user_banned_already'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="ban.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/dpanel/">' . $lang['direct_panel'] . '</a> | <a href="ban.php?id=' . $ID . '">' . $lang_dpanel['bans'] . ' "' . $profile['login'] . '"</a> | <b>' . $lang_dpanel['ban_add'] . '</b></div>';
if (isset($_POST['ban'])) {
/**
* Проверяем формат времени
**/
if (empty($_POST['ban_time']) || !is_numeric($_POST['ban_time']))
$err[] = $lang_dpanel['error_time_formate'];
/**
* Если баним на минуты, то не больше 59
**/
if ($_POST['time_type'] == 'minutes' && num($_POST['ban_time']) > 59)
$err[] = $lang_dpanel['only_59_minutes'];
/**
* Если баним на часы, то не больше 24
**/
if ($_POST['time_type'] == 'hours' && num($_POST['ban_time']) > 24)
$err[] = $lang_dpanel['only_24_hours'];
/**
* Если баним на дни, то не больше 31
**/
if ($_POST['time_type'] == 'days' && num($_POST['ban_time']) > 31)
$err[] = $lang_dpanel['only_31_days'];
/**
* Если баним на месяцы, то не больше 12
**/
if ($_POST['time_type'] == 'months' && num($_POST['ban_time']) > 12)
$err[] = $lang_dpanel['only_12_months'];
$description = input($_POST['description']); // описание (причина) бана
$time_type = input($_POST['time_type']); // дата бана (минуты, часы, дни или месяцы)
$time_value = intval($_POST['ban_time']);
/**
* Если причина не указана, записываем
**/
if (empty($_POST['description']))
$description = $lang_dpanel['empty_description'];
if ($_POST['time_type'] == 'minutes') $time = $time_value * 60;
if ($time_type == 'hours') $time = $time_value * 60 * 60;
if ($time_type == 'days') $time = $time_value * 60 * 60 * 24;
if ($time_type == 'months') $time = $time_value * 60 * 60 * 24 * 30;
/**
* Если нет ошибок, заносим данные
**/
if (!isset($err)) {
mysql_query("INSERT INTO `cms_banned_users` (`user_id`, `admin_id`, `ban_time`, `time`, `description`) VALUES ('$ID', '" . $user['id'] . "', '" . (time() + $time) . "', '" . time() . "', '$description')");
/**
* Оповещение в журнал
**/
$message = $lang['journal_you_banned'] . ': [u]' . $description . '[/u]';
journal_add($ID, $message);
header("Location: ban.php?id=$ID");
} else {
echo error($err); // показываем ошибки
}
}
/**
* Форма
**/
echo '<div class="main"><form method="post" action="ban.php?id=' . $ID . '&ban">' .
'<b>' . $lang_dpanel['ban_time'] . '</b><br />' .
'<input type="text" name="ban_time" size="3" value="12" maxlength="2" /><br/>' .
'<input name="time_type" type="radio" value="minutes" /> ' . $lang_dpanel['minutes'] . '<br />' .
'<input name="time_type" type="radio" value="hours" checked="checked" /> ' . $lang_dpanel['hours'] . '<br />' .
'<input name="time_type" type="radio" value="days" /> ' . $lang_dpanel['days'] . '<br />';
if ($user['rights'] > 7)
echo '<input name="time_type" type="radio" value="months" /> ' . $lang_dpanel['months'] . '<br />';
echo '<b>' . $lang['ban_while'] . '</b><br />' .
'<textarea name="description"></textarea><br />' .
'<input type="submit" name="ban" value="' . $lang_dpanel['bann'] . '" />' .
'</form></div>';
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
}
elseif (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
/**
* Удаление бана
**/
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
$ban_2 = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_banned_users` WHERE `id` = '" . num($_GET['delete']) . "'"));
/**
* Проверяем права доступа
**/
if ($user['rights'] < 8) {
echo '<div class="error">' . $lang['error_rights'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="ban.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
if (!isset($_GET['yes'])) {
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/dpanel/">' . $lang['direct_panel'] . '</a> | <a href="ban.php?id=' . $ID . '">' . $lang_dpanel['bans'] . ' "' . $profile['login'] . '"</a> | <b>' . $lang_dpanel['ban_delete'] . '</b></div>';
echo '<div class="error">' .
$lang_dpanel['ban_delete_info'] . '<br />' .
'<a href="ban.php?id=' . $ID . '&delete=' . num($_GET['delete']) . '&yes"><input type="button" name="" value="' . $lang['delete'] . '" /></a> | <a href="ban.php?id=' . $ID . '">' . $lang['cancel'] . '</a>' .
'</div>';
} else {
mysql_query("DELETE FROM `cms_banned_users` WHERE `id` = '" . num($_GET['delete']) . "' LIMIT 1");
header("Location: ban.php?id=$ID");
}
require_once(HOME .'/incfiles/footer.php'); // Подключаем ноги
}
elseif (isset($_GET['disable']) && is_numeric($_GET['disable'])) {
/**
* Снятие бана
**/
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
$ban_2 = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_banned_users` WHERE `id` = '" . num($_GET['disable']) . "'"));
/**
* Проверяем права доступа
**/
if ($user['rights'] < 7) {
echo '<div class="error">' . $lang['error_rights'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="ban.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Если снимаем не активный бан, выводим уведомление
**/
if ($ban_2['ban_time'] <= time()) {
echo '<div class="error">' . $lang_dpanel['ban_disabled_already'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="ban.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
if (!isset($_GET['yes'])) {
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/dpanel/">' . $lang['direct_panel'] . '</a> | <a href="ban.php?id=' . $ID . '">' . $lang_dpanel['bans'] . ' "' . $profile['login'] . '"</a> | <b>' . $lang_dpanel['ban_disable'] . '</b></div>';
echo '<div class="error">' .
$lang_dpanel['ban_disable_info'] . '<br />' .
'<a href="ban.php?id=' . $ID . '&disable=' . num($_GET['disable']) . '&yes"><input type="button" name="" value="' . $lang_dpanel['disable_ban'] . '" /></a> | <a href="ban.php?id=' . $ID . '">' . $lang['cancel'] . '</a>' .
'</div>';
} else {
mysql_query("UPDATE `cms_banned_users` SET `ban_time` = '" . time() . "' WHERE `id` = '" . num($_GET['disable']) . "' LIMIT 1");
header("Location: ban.php?id=$ID");
}
require_once(HOME .'/incfiles/footer.php'); // Подключаем ноги
} else {
/**
* Показываем список банов
**/
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/dpanel/">' . $lang['direct_panel'] . '</a> | <b>' . $lang_dpanel['bans'] . ' "' . $profile['login'] . '"</b></div>';
/**
* Админские функции
**/
echo '<div class="main"><img src="/design/themes/' . $set_user['theme'] . '/images/act.png" alt=">" /> <a href="ban.php?id=' . $ID . '&ban">' . $lang_dpanel['ban_add'] . '</a></div>';
/**
* Настраиваем пагинацию
**/
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_banned_users` WHERE `user_id` = '$ID'"), 0);
$req = mysql_query("SELECT * FROM `cms_banned_users` WHERE `user_id` = '$ID' ORDER BY `time` DESC LIMIT $start, $countMess");
/**
* Если нет результатов, выводим уведомление
**/
if ($total < 1) {
echo '<div class="error">' . $lang_dpanel['user_no_bans'] . '</div>';
}
while ($res = mysql_fetch_assoc($req)) {
echo ($i % 2) ? '<div class="list1">' : '<div class="list2">';
echo $lang['ban_while'] . ': <b>' . output(txt($res['description'])) . '</b><br />' .
$lang['ban_date'] . ': ' . display_time($res['time']) . '<br />' .
$lang['ban_end'] . ': ' . display_time($res['ban_time']) . '<br />' .
$lang['ban_by'] . ': '; echo _display_user($res['admin_id']);
if ($user['rights'] > 7) {
echo '<br />[';
if ($user['rights'] > 7 && $res['ban_time'] > time()) {
echo '<a href="ban.php?id=' . $ID . '&disable=' . $res['id'] . '">' . $lang_dpanel['disable_ban'] . '</a>';
}
if ($user['rights'] > 8) {
if ($res['ban_time'] > time())
echo ' | ';
echo '<a href="ban.php?id=' . $ID . '&delete=' . $res['id'] . '">' . $lang['delete'] . '</a>';
}
echo ']';
}
echo '</div>';
$i++;
}
/**
* Пагинация
**/
if ($total > $countMess) {
echo '<div class="home">' . display_pagination('ban.php?id=' . $ID, $start, $total, $countMess) . '</div>';
}
require_once(HOME .'/incfiles/footer.php'); // Подключаем ноги
}
ob_end_flush();
?>