Вход Регистрация
Файл: 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 . '&amp;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 . '&amp;rnd=' . $_SESSION['token'] . '">Уд.</a> | ';
                echo 
' <a href="?clear_room=' . $idr . '&amp;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&amp;rnd=' . $_SESSION['token'] . '">Очистить чат</a><br />';
            echo 
'</div>';
        }
    }
}
    
show_footer();
?>
Онлайн: 0
Реклама