Файл: core/admin/chat.php
Строк: 111
<?php
if (!defined('CMS')) { die('Access Denied!'); }
if (is_admin(array(101, 102, 103, 105))) {
switch ($mod):
default:
if (!empty($_POST['add_chat'])) {
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($text) >= 3 && cms_strlen($text) < 2500) {
$text = smiles($text);
$db->query("INSERT INTO ?_chat (`chat_user`, `chat_text`, `chat_ip`, `chat_brow`, `chat_time`)
VALUES (?, ?, ?, ?, ?);", $log, $text, $ip, $brow, SITE_TIME);
$db->query("DELETE FROM ?_chat WHERE `chat_time` < (SELECT MIN(`chat_time`) FROM (SELECT `chat_time` FROM ?_chat ORDER BY `chat_time` DESC LIMIT 500) AS del);");
$inSes->addMessage('Сообщение успешно добавлено!', 'ok');
redirect('?m=chat&' . RND);
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Админ-чат');
echo '<div class="link"><a href="?m=chat&' . RND . '">Обновить</a></div>';
$onpage = !empty($config['chat_num']) ? num($config['chat_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = array();
$rows = $db->selectPage($total, "SELECT `c`.*, `u`.`users_id`
FROM ?_chat `c` LEFT JOIN ?_users `u`
ON `c`.`chat_user` = `u`.`users_login`
ORDER BY `c`.`chat_time` DESC LIMIT ?d, ?d", $from, $onpage);
if (!empty($rows) && $total > 0) {
$c = $from + 1;
foreach ($rows as $numRow => $row) {
echo '<div class="bl">';
echo '<table class="w100"><tr>';
echo '<td class="vhr" valign="top">' . user_avatars($row['chat_user']);
if ($log == $row['chat_user']) {
echo '<br />';
echo '<a href="?m=reply_chat&id=' . $row['chat_id'] . '&page=' . $page . '&' . RND . '">О</a> | ';
echo '<a href="?m=quote_chat&id=' . $row['chat_id'] . '&page=' . $page . '&' . RND . '">Ц</a>';
}
echo '</td><td valign="top">';
echo '<span class="fr xsmall">' . get_date($row['chat_time']) . '</span>';
echo ' ' . users_anketa($row['users_id'], $row['chat_user']);
echo ' ' . user_title($row['chat_user']) . ' ' . user_online($row['chat_user']) . '<hr />';
echo nl2br(bb_code($row['chat_text'])) . '<br />';
if (!empty($row['chat_edit'])) {
echo icon('exclamation_small.gif', 'icons');
echo '<small>Отредактировано: ' . nickname($row['chat_edit']) . ' (' . get_date($row['chat_edit_time']) . ')</small><br />';
}
//echo '<span class="data">(' . $row['chat_brow'] . ', ' . $row['chat_ip'] . ')</span>';
echo '</td></tr></table></div>';
}
echo show_pages('?m=chat');
}
else show_error('Сообщений нет, будь первым!');
$form = new cmsForm('?m=chat&rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addTextarea('<b>Сообщение:</b>', 'text', request('text'));
echo $form->Submit('Написать', 'add_chat');
unset($form);
if (is_admin(array(101)) && $total > 0) {
echo '<div class="link"><a href="?m=clear_chat&' . RND . '">Очистить чат</a></div>';
}
echo '<div class="link"><a href="?' . RND . '">В админку</a></div>';
break;
case 'reply_chat':
show_header('Админ-чат - Ответ на сообщение');
$post = array();
$post = $db->selectRow("SELECT `c`.*, `u`.`users_id`
FROM ?_chat `c` LEFT JOIN ?_users `u`
ON `c`.`chat_user` = `u`.`users_login`
WHERE `c`.`chat_id` = ? LIMIT 1", $id);
if (!empty($post)) {
echo '<div class="bl"><span class="fr xsmall">' . get_date($post['chat_time']) . '</span>';
echo user_avatars($post['chat_user']);
echo ' <b>' . users_anketa($post['users_id'], $post['chat_user']) . '</b></a> ';
echo user_title($post['chat_user']) . ' ' . user_online($post['chat_user']) . '<br />';
echo 'Сообщение: ' . nl2br(bb_code($post['chat_text'])) . '</div>';
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm('?m=chat&page=' . $page . '&rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>[<a href="?m=reply_chat&id=' . $id . '&smiles=1">Смайлы</a>] ');
$form->addCode('[<a href="?m=reply_chat&id=' . $id . '&code=1">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', '[b]' . nickname($post['chat_user']) . '[/b] ', ' id="msg" style="width:98%;"');
echo $form->Submit('Ответить', 'add_chat');
unset($form);
}
else show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
echo '<div class="link"><a href="?m=chat&page=' . $page . '&' . RND . '">Вернуться</a></div>';
break;
case 'quote_chat':
show_header('Админ-чат - Цитирование');
$post = array();
$post = $db->selectRow("SELECT `c`.*, `u`.`users_id`
FROM ?_chat `c` LEFT JOIN ?_users `u`
ON `c`.`chat_user` = `u`.`users_login`
WHERE `c`.`chat_id` = ? LIMIT 1", $id);
if (!empty($post)) {
echo '<div class="bl"><span class="fr xsmall">' . get_date($post['chat_time']) . '</span>';
echo user_avatars($post['chat_user']);
echo ' <b>' . users_anketa($post['users_id'], $post['chat_user']) . '</b></a> ';
echo user_title($post['chat_user']) . ' ' . user_online($post['chat_user']) . '<br />';
echo 'Сообщение: ' . nl2br(bb_code($post['chat_text'])) . '</div>';
$post['chat_text'] = nosmiles($post['chat_text']);
$post['chat_text'] = preg_replace('|[q](.*?)[/q](<br />)?|', '', $post['chat_text']);
$post['chat_text'] = str_replace(array('<br>', '<br/>', '<br />'), "n", $post['chat_text']);
$text = '[q][b]' . nickname($post['chat_user']) . '[/b] (' . get_date($post['chat_time']) . ')';
$text .= "n" . $post['chat_text'] . "[/q]n";
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm('?m=chat&page=' . $page . '&rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>[<a href="?m=quote_chat&id=' . $id . '&smiles=1">Смайлы</a>] ');
$form->addCode('[<a href="?m=quote_chat&id=' . $id . '&code=1">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $text, ' id="msg" style="width:98%;"');
echo $form->Submit('Цитировать', 'add_chat');
unset($form);
}
else show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
echo '<div class="link"><a href="?m=chat&page=' . $page . '&' . RND . '">Вернуться</a></div>';
break;
case 'clear_chat':
if (!empty($_GET['clear'])) {
if (is_admin(array(101))) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("TRUNCATE ?_chat;");
$inSes->addMessage('Админ-чат успешно очищен!', 'ok');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка! Очищать админ-чат могут только суперадмины!');
redirect('?m=chat&' . RND);
}
show_header('Админ-чат');
echo '<div class="bl">';
echo 'Вы уверены что хотите удалить все сообщения в админ-чате?<br /><br />';
echo icon('close.png');
echo '<b><a href="?m=clear_chat&clear=1&rnd=' . $_SESSION['token'] . '&' . RND . '">Да, уверен!</a></b></div>';
echo '<div class="link"><a href="?m=chat&' . RND . '">Вернуться</a></div>';
break;
endswitch;
show_footer();
}
else {
redirect('/?' . RND);
}
?>