Файл: CMS/chat/cfg.php
Строк: 160
<?php
define('ROOT','../');
include('../core/inc.php');
$is_admin = (bool) is_admin() ? true : false;
# Функция проверки пароля
function show_auth_room($idk = '', $pass = '') {
if (!empty($_POST['pass']) && $_POST['pass'] == $pass) {
$_SESSION[SP]['room_privat'][$idk] = md5($pass);
}
else if (empty($_SESSION[SP]['room_privat'][$idk]) || md5($pass) <> $_SESSION[SP]['room_privat'][$idk]) {
$form = new cmsForm();
$form->addCode(blink('Внимание!') . ' Доступ в комнату только по паролю.<br />');
$form->addText('Ваш пароль:','pass');
echo $form->Submit('Войти');
echo '<div class="b">';
echo icon('return.png') . ' <a href="' . gen_uri('index', '', RND) . '">Прихожая</a><br />';
echo '</div>';
show_footer();
exit();
}
}
# Функция проверки возраста 18+
function show_xxx_room() {
global $config;
if (empty($_SESSION['xxx']) || !isset($_SESSION['xxx'])) {
if (!empty($_POST['xxx_code']) && $_POST['xxx_code'] == $_SESSION['captcha_key']) {
$_SESSION['xxx'] = $_POST['xxx_code'];
}
else {
$config['chat_warning'] = str_replace('{SITE_NAME}', $config['site_name'], $config['chat_warning']);
$form = new cmsForm();
$form->addCaptcha($config['chat_warning'],'xxx_code');
echo $form->Submit('согласен');
echo '<div class="b">';
echo icon('return.png') . ' <a href="' . gen_uri('index', '', RND) . '">Прихожая</a><br />';
echo '</div>';
show_footer();
die;
}
}
}
# Админ действия чата
if ($is_admin) {
if (!empty($_POST['add_room'])) { // Создание комнаты
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$pos = !empty($_POST['pos']) ? num($_POST['pos']) : 0;
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$about = !empty($_POST['about']) ? check($_POST['about']) : '';
$bots = !empty($_POST['bots']) ? num($_POST['bots']) : 0;
$umnik = ($bots == 1 || $bots == 3) ? 1 : 0;
$shutnik = ($bots == 2 || $bots == 3) ? 1 : 0;
$type = !empty($_POST['type']) ? num($_POST['type']) : 0;
$last_id = (int) $db->query("INSERT INTO ?_chat_rooms SET `pos` = ?, `name` = ?, `about` = ?, `umnik` = ?, `shutnik` = ?, `type` = ?", $pos, $name, $about, $umnik, $shutnik, $type);
if ($last_id > 0) $inSes->addMessage('Комната успешно добавлена!', 'ok');
else $inSes->addMessage('Ошибка! Не удалось добавить комнату!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_POST['edit_room'])) { // Редактирование комнаты
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$idr = !empty($_POST['edit_room']) ? num($_POST['edit_room']) : 0;
$pos = !empty($_POST['pos']) ? num($_POST['pos']) : 0;
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$about = !empty($_POST['about']) ? check($_POST['about']) : '';
$bots = !empty($_POST['bots']) ? num($_POST['bots']) : 0;
$umnik = ($bots == 1 || $bots == 3) ? 1 : 0;
$shutnik = ($bots == 2 || $bots == 3) ? 1 : 0;
$type = !empty($_POST['type']) ? num($_POST['type']) : 0;
$last_id = (int) $db->query("UPDATE ?_chat_rooms SET `pos` = ?, `name` = ?, `about` = ?, `umnik` = ?, `shutnik` = ?, `type` = ? WHERE `id` = ?", $pos, $name, $about, $umnik, $shutnik, $type, $idr);
if ($last_id > 0) $inSes->addMessage('Комната успешно изменена!', 'ok');
else $inSes->addMessage('Ошибка! Не удалось изменить комнату!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_GET['del_room'])) { // Удаление комнаты
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("DELETE FROM ?_chat_rooms WHERE `id` = ?", num($_GET['del_room']));
$db->query("OPTIMIZE TABLE ?_chat_post, ?_chat_rooms, ?_chat_who");
$inSes->addMessage('Комната успешно удалена!', 'ok');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_GET['clear_room'])) { // Очистка комнаты
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("DELETE FROM ?_chat_post WHERE `room` = ?", num($_GET['clear_room']));
$db->query("OPTIMIZE TABLE ?_chat_post, ?_chat_rooms, ?_chat_who");
$inSes->addMessage('Комната успешно очищена!', 'ok');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_GET['clear_chat'])) { // Очистка чата
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("TRUNCATE TABLE ?_chat_post");
$db->query("OPTIMIZE TABLE ?_chat_post, ?_chat_rooms, ?_chat_who");
$inSes->addMessage('Чат успешно очищен от сообщений!', 'ok');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_POST['del_msg'])) { // Удаление сообщений
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$del = intar($_REQUEST['del']);
if (is_array($del)) {
$del = implode(',', $del);
$db->query("DELETE FROM ?_chat_post WHERE `id` IN (" . $del . ");");
$inSes->addMessage('Выбранные сообщения успешно удалены!', 'ok');
}
else {
$db->query("DELETE FROM ?_chat_post WHERE `id` = ? LIMIT 1;", $del);
$inSes->addMessage('Сообщение успешно удалён!', 'ok');
}
$db->query("OPTIMIZE TABLE ?_chat_post, ?_chat_rooms, ?_chat_who");
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
}
# Добавление сообщения
if (!empty($_POST['send'])) {
$rid = !empty($_POST['room']) ? num($_POST['room']) : 0;
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
$len = cms_strlen(trim(str_replace(' ', '', $msg)));
if ($is_logged) {
$_SESSION[SP]['crc32'] = !empty($_SESSION[SP]['crc32']) ? $_SESSION[SP]['crc32'] : NULL;
if (!empty($_POST['rnd']) && $_POST['rnd'] == $_SESSION['token']) {
if ($len >= $config['chat_min_text'] && $len < $config['chat_max_text']) {
if ( crc32($msg) <> $_SESSION[SP]['crc32'] ) {
$is_room = (int) $db->selectCell("SELECT * FROM ?_chat_rooms WHERE `id` = ? LIMIT 1;", $rid);
if ($is_room > 0) {
if (is_quarantine($log)) {
if (is_flood($log)) {
$_SESSION[SP]['crc32'] = crc32($msg);
$msg = antimat($msg);
$msg = smiles($msg);
if (!empty($_POST['privat']) && num($_POST['reply']) > 0) {
$prv = $db->selectRow("SELECT * FROM ?_chat_post WHERE `id` = ?", num($_POST['reply']));
$privat = !empty($prv['user']) ? check($prv['user']) : '';
}
else $privat = '';
$db->query("INSERT INTO ?_chat_post SET `room` = ?, `user` = ?, `time` = ?, `msg` = ?, `privat` = ?, `ip` = ?, `ua` = ?", $rid, $log, SITE_TIME, $msg, $privat, $ip, $brow);
$db->query("UPDATE ?_users SET `users_allchat` = (`users_allchat` + 1), `users_point` = (`users_point` + ?), `users_money` = (`users_money` + ?) WHERE `users_login` = ?", $config['chat_add_ball'], $config['chat_add_money'], $log);
$inSes->addMessage('Сообщение успешно добавлено!', 'ok');
gen_red('chat', $rid);
}
else $error = 'Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!';
}
else $error = 'Карантин! Вы не можете писать в течении ' . round($config['allow_karantin'] / 3600) . ' часов!';
}
else $error = 'Ошибка! Выбранная вами комната не существует, возможно она была удалена!';
}
else $error = 'Ошибка! Ваше сообщение уже было успешно добавлено!';
}
else $error = 'Ошибка! Слишком длинное или короткое сообщение!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
else $error = 'Ошибка! Вы не авторизованы!';
if (!empty($error)) $inSes->addMessage($error, 'error');
}
# Очистка приватных комнат
if ($is_logged) {
if (!empty($_GET['clear'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$row = $db->selectRow("SELECT * FROM ?_chat_rooms WHERE `id` = ?", num($_GET['clear']));
if (!empty($row)) {
if ($row['user'] == $log) {
$db->query("DELETE FROM ?_chat_post WHERE `room` = ? AND `user` = ?", $row['id'], $log);
$db->query("OPTIMIZE TABLE ?_chat_post, ?_chat_rooms, ?_chat_who");
$inSes->addMessage('Комната успешно очищена!', 'ok');
gen_red('chat', $row['id'], RND);
}
else $inSes->addMessage('Ошибка! У Вас нет прав для очистки этой комнаты!');
}
else $inSes->addMessage('Ошибка! Комната не надена!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
}
# Удаление онлайн
if (!empty($_SESSION[SP]['chat_online'])) {
if ($_SESSION[SP]['chat_online'] < (time()-$config['chat_online'])) {
$db->query("DELETE FROM ?_chat_who WHERE (`time` < UNIX_TIMESTAMP() - ?)", $config['chat_online']);
}
}
$_SESSION[SP]['chat_online'] = time();
$id = !empty($_GET['id']) ? (int) $_GET['id'] : 0;
$mod = !empty($_GET['m']) ? (string) $_GET['m'] : '';
$page = !empty($_GET['page']) ? (int) $_GET['page'] : 1;
?>