Файл: CMS/chat/index.php
Строк: 141
<?php
define('CMS',TRUE);
require('cfg.php');
if (!empty($id) && !empty($mod) && $mod == 'chat') {
$where = ($is_logged) ? "`user` = '" . $log . "'" : "`ip` = '" . $ip . "'";
$is_user = (int) $db->selectCell("SELECT `time` FROM ?_chat_who WHERE " . $where . " AND `room` = ?", $id);
if ($is_user > 0) {
$db->query("UPDATE ?_chat_who SET `time` = ?, `ip` = ?, `ua` = ? WHERE `room` = ? AND " . $where, SITE_TIME, $ip, $brow, $id);
}
else {
$db->query("INSERT INTO ?_chat_who SET `user` = ?, `room` = ?, `time` = ?, `ip` = ?, `ua` = ?", $username, $id, SITE_TIME, $ip, $brow);
}
$data = $db->selectRow("SELECT *, (SELECT COUNT(*) FROM ?_chat_who WHERE ?_chat_who.`room` = ?_chat_rooms.`id`) AS `count`
FROM ?_chat_rooms WHERE `id` = ?", $id);
if (!empty($data)) {
if ($config['chat_refresh'] > 0) header('Refresh: ' . num($config['chat_refresh']) . '; url=' . gen_uri('chat', $id, RND));
show_header('Чат - ' . $data['name'] . ' (' . num($data['count']) . ')');
if (!empty($data['pass']) && $data['type'] == 3) {
show_auth_room($id, $data['pass']);
}
else if ($data['type'] == 2) { // Ком-та только для друзей
$arr_friends = $db->selectCol("SELECT `friends_login` FROM ?_friends WHERE `users_login` = ?", $data['user']);
if ($is_logged) {
if ($log <> $data['user'] && !in_array($log,$arr_friends)) {
show_error('Комната только для друзей пользователя ' . users_anketa($data['user']));
echo '<div class="b">';
echo icon('return.png') . ' <a href="' . gen_uri('index', '', RND) . '">Прихожая</a><br />';
echo '</div>';
show_footer();
exit();
}
}
else {
show_error('Комната только для друзей пользователя ' . users_anketa($data['user']));
echo '<div class="b">';
echo icon('return.png') . ' <a href="' . gen_uri('index', '', RND) . '">Прихожая</a><br />';
echo '</div>';
show_footer();
exit();
}
}
else if ($data['type'] == 1) {
show_xxx_room();
}
$onpage = !empty($config['chat_num']) ? num($config['chat_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage( $total, "SELECT * FROM ?_chat_post WHERE `room` = ?
ORDER BY `time` DESC LIMIT ?d, ?d", $id, $from, $onpage );
if (!empty($rows) && $total > 0) {
if ($is_admin) echo '<form action="?rnd=' . $_SESSION['token'] . '" method="post">';
$i = 0;
foreach($rows as $row) {
$i++;
echo '<div class="b">';
echo '<div class="img">' . user_avatars($row['user']) . '</div>';
echo users_anketa($row['user']) . ' ';
echo date('H:i:s', $row['time']) . ' ' . user_online($row['user']);
if ($row['user'] <> $log) echo '<span style="float:right;"><a href="?reply=' . num($row['id']) . '#form">ответить</a></span>';
if (!empty($row['privat'])) {
echo '<br /><b>Приватное</b>';
if ($is_logged && $row['privat'] == $log) {
echo '<br />' . nl2br(bb_code($row['msg']));
}
}
else {
echo '<br />' . nl2br(bb_code($row['msg']));
}
if ($is_admin) {
echo '<br /><input type="checkbox" name="del[]" value="' . num($row['id']) . '" /> ';
echo '(' . $row['ip'] . ' / ' . $row['ua'] . ')<br />';
}
echo '</div>';
}
if ($is_admin) echo '<div class="b"><input type="submit" name="del_msg" value="Удалить выбранное" class="btns" /></form></div>';
echo show_pages(gen_uri('chat', $id));
}
else show_error('Cообщений пока нет..');
if ($is_logged) {
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('chat', $id, RND), 'post', ' name="form" id="form"');
$form->addCode('Сообщение: <small>[<a href="' . gen_uri($mod, $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri($mod, $id, 'code=1') . '">ББ-коды</a>]</small><br />');
if (!empty($_GET['reply'])) {
$row = $db->selectRow("SELECT `user` FROM ?_chat_post WHERE `id` = ?", num($_GET['reply']));
$form->addTextarea('', 'text', !empty($row['user']) ? '[b]' . nickname($row['user']) . '[/b], ' : '');
$form->addCheckBox(array('', ' Приватное'), 'privat');
$form->addHidden('reply', num($_GET['reply']));
}
else $form->addTextarea('', 'text', request('text'));
$form->addHidden('room', num($data['id']));
$form->addHidden('rnd', $_SESSION['token']);
echo $form->Submit('Отправить', 'send');
unset($form);
if ($data['user'] == $log) {
if (!empty($_GET['clear'])) { // Очистка комнаты
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$db->query("DELETE FROM ?_chat_post WHERE `room` = ? AND `user` = ?", $id, $log);
$db->query("OPTIMIZE TABLE ?_chat_post, ?_chat_rooms, ?_chat_who");
$inSes->addMessage('Комната успешно очищена!', 'ok');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
gen_red('chat', $id, RND);
}
echo '<div class="b">';
echo icon('error.gif', 'icons');
echo '<a href="?clear=' . $id . '&rnd=' . $_SESSION['token'] . '">Очистить комнату</a>';
echo '<br />Осталось: ' . makestime($data['time'] - SITE_TIME);
echo '</div>';
}
}
else show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
echo '<div class="b">';
echo icon('return.png') . ' <a href="' . gen_uri('index') . '">Прихожая</a><br />';
echo '</div>';
}
else {
$inSes->addMessage('Ошибка! Комната не найдена!');
gen_red('index');
}
}
else {
show_header('Чат - прихожая');
$rows = $db->select("SELECT *, (SELECT COUNT(*) FROM ?_chat_who WHERE ?_chat_who.`room` = ?_chat_rooms.`id`) AS `count`
FROM ?_chat_rooms ORDER BY `pos` ASC;");
if (!empty($rows) && 0 < count($rows)) {
foreach($rows as $row) {
$idr = num($row['id']);
$icon = ($row['type'] == 1) ? '18.gif' : 'chat.gif';
$icon = ($row['type'] == 2 || $row['type'] == 3) ? 'lock.png' : $icon;
echo '<div class="b">' . icon($icon, 'icons');
echo '<a href="' . gen_uri('chat', $idr) . '">' . $row['name'] . '</a> (' . num($row['count']) . ')';
if ($is_admin) {
echo ' [<a href="?edit_room=' . $idr . '">Ред.</a> | ';
echo ' <a href="?del_room=' . $idr . '&rnd=' . $_SESSION['token'] . '">Уд.</a> | ';
echo ' <a href="?clear_room=' . $idr . '&rnd=' . $_SESSION['token'] . '">Очистить</a>]';
}
if (!empty($row['about'])) echo '<br />' . bb_code($row['about']);
echo '</div>';
}
}
else show_error('Нет комнат..');
if ($is_admin) {
$access = array(0 => '', 1 => '');
$bots = array(0 => 'Нет', 1 => 'Умник', 2 => 'Шутник', 3 => 'Умник и Шутник');
if (!empty($_GET['edit_room'])) {
$room = $db->selectRow("SELECT * FROM ?_chat_rooms WHERE `id` = ? LIMIT 1", num($_GET['edit_room']));
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post');
$form->addText('Название комнаты:', 'name', $room['name']);
$form->addTextarea('Описание:', 'about', $room['about']);
$form->addText('Позиция:', 'pos', num($room['pos']), ' size="3"');
$form->addCheckBox('Для взрослых: ', 'type', $room['type']);
$form->addHidden('edit_room', $room['id']);
echo $form->Submit('Изменить');
unset($form);
}
else if (!empty($_GET['add_room'])) {
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post');
$form->addText('Название комнаты:', 'name', request('name'));
$form->addTextarea('Описание:', 'about', request('about'));
$form->addText('Позиция:', 'pos', request('pos', '0'), ' size="3"');
$form->addCheckBox('Для взрослых: ', 'type');
echo $form->Submit('Создать', 'add_room');
unset($form);
}
else {
echo '<div class="b">';
echo icon('add.png') . ' <a href="?add_room=1">Создать комнату</a><br />';
echo icon('mail.png') . ' <a href="?clear_chat=1&rnd=' . $_SESSION['token'] . '">Очистить чат</a><br />';
echo '</div>';
}
}
}
show_footer();
?>