Вход Регистрация
Файл: pages/mail.php
Строк: 173
<?php
    
include '../engine/includes/start.php';
    
    if (!
$user_id)
        
Core::stop();

    
Core::add_words('errors.ini''mail.ini');


    
/*
    * By Denis27
      */

    
switch ($act
    {
        case 
'ajax':
        
header('Content-Type: text/xml');
        
?>
        <response>
            <new_mail><?=($user_id == $sql->query('SELECT sum(`unread`) FROM `mail_contacts` WHERE `user_id` = ' $user_id)->result())?></new_mail>
        </response>
        <?
        
exit;
        break;
        
/*
        ---------------------------------
        Переписка с пользователем
        ---------------------------------
        */
        
case 'mail':
            if (!
$id)
                
Core::stop('?');
            
            if (
$sql->query('SELECT COUNT(*) FROM `user` WHERE `id` = '.$id)->result() > 0)
            {
                
$contact $sql->query("SELECT `id`, `nick`, `date_reg`, `date_last`, `pol`, `group_access` FROM `user` WHERE `id` = ".$id." LIMIT 1")->fetch();
                
$sql->query('UPDATE `mail_contacts` SET `unread` = 0 WHERE `user_id` = '.$user_id.'  AND `id_cont` = '.$id);
                
$user['date_last'] = time() + 300;
                
                
$set['title'] = __('Переписка с :user', array(':user' => $contact['nick']));
                include 
incDir 'head.php';
            
                
/* Отправка сообщения */
                
if (isset($_POST['add_mail'])) {
                
                    
$text my_esc($_POST['text'], true);

                    if (
CSRF::check($_POST['token'], 'form_mail') == false)
                    {
                        
Core::msg_show(__('Ошибка при отправке сообщения, попробуйте заново. Если ошибка повторяется, сообщите администратору'));
                    }

                    elseif (empty(
$_POST['text']) || mb_strlen($_POST['text']) <= 1) {
                        
Core::msg_show(__('Короткое сообщение'));
                        
                    } elseif (
mb_strlen($_POST['text']) > 1024) {
                        
Core::msg_show(__('Сообщение слишком длинное'));
                
                    } elseif (
$id == $user_id) {
                        
Core::msg_show(__('Нельзя отправлять сообщения самому себе'));
                    } else {
                        
$sql->query("INSERT INTO `mail` (`author`, `user`, `time`, `text`) VALUES ('$user_id', '$id', '$time', '$text')");
                        

                    if (
$sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '$user_id' AND `id_cont` = '$id'")->result() == 0)
                        
$sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `outbox`) VALUES (' $user_id ', ' $id ', "1")');
                    else
                        
$sql->query('UPDATE `mail_contacts` SET `outbox` = `outbox`+1 WHERE `user_id` = ' $user_id ' AND `id_cont` = '$id);

                    if (
$sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '"$id ."' AND `id_cont` = '" $user_id "'")->result() == 0)
                        
$sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `inbox`, `unread`) VALUES (' $id ', ' $user_id ', "1", "1")');
                    else
                        
$sql->query('UPDATE `mail_contacts` SET `inbox` = `inbox`+1, `unread` = `unread`+1 WHERE `user_id` = ' $id ' AND `id_cont` = '$user_id);

                        
                        
                        
Core::msg_show(__('Сообщение успешно отправлено'), 'msg');
                        unset(
$text);
                    }
                }
                
                
$js_form 'form_mail';
                
$js_elem 'text';
                include 
incDir 'JsToolBar.php';
                
?>
                    <form name="form_mail" action="?act=<?=$act '&amp;id=' .$id?>" method="POST">
                        <?=__('Сообщение')?>:<br />
                        <textarea name="text"><? echo !empty($text) ? $text null ?></textarea><br />
                        <input type="hidden" name="token" value="<?=CSRF::generate('form_mail')?>"/>
                        <input type="submit" name="add_mail"/>
                    </form>
                <?
                
                
                
                $count 
$sql->query("SELECT COUNT(*) FROM `mail` WHERE `author` = '$user_id' AND `user` = '$id' OR `author` = '$id' AND `user` = '$user_id'")->result();

                if (
$count 0) {
                    
                    
$sql->query('UPDATE `mail` SET `no` = "1" WHERE `author` = ' $id ' AND `user` = ' $user_id);
                    
                    
$page = new Page($count$set['p_str']);
                    
$i 1;
                    
                    
$sql->query("SELECT * FROM `mail` WHERE `author` = '$user_id' AND `user` = '$id' OR `author` = '$id' AND `user` = '$user_id' order by `id` DESC LIMIT " $page->limit());
                    
                    while (
$mail $sql->fetch())
                    {
                        echo 
                        
'<div class="'.($i++ % 'p_m' 'p_t').'">' .
                        
Core::user_show($mail['author'] == $id $contact $user
                            array(
'post' => Text::output($mail['text']), 'status' => $mail['time'], 'is_time' => true)) . 
                        (empty(
$mail['no']) ?'<span style="color:#FF0000;float:right;">'.__('Не прочитанно').'</span>' null) .
                        
'</div>';
                    }
                    
$page->display('?act=mail&amp;id=' $id '&amp;');
                    unset(
$text$contact$page$mail$count);
                    
$sql->free();
                } else
                    
Core::msg_show(__('Переписка пуста'));
                
            } else
                
Core::msg_show(__('Пользователь не найден'));
            
            echo 
'<a href="?"><div class="menu_razd">'.__('Список контактов').'</div></a>';
            break;




        
/*
        ---------------------------------
        Написание сообщения
        ---------------------------------
        */
        
case 'add_mail':
            
$set['title'] = __('Сообщение');
            include 
H.'engine/includes/head.php';
            
            
            if (isset(
$_POST['add'])) {
                
$_SESSION['login_mail'] = my_esc($_POST['login'], 'true');
                
$_SESSION['text_mail'] = my_esc($_POST['text'], 'true');
                
$login_mail my_esc($_POST['login'],'true');
                
$text my_esc($_POST['text'], 'true');

                if (
CSRF::check($_POST['token'], 'form_mail') == false)
                {
                    
Core::msg_show(__('Ошибка при отправке сообщения, попробуйте заново. Если ошибка повторяется, сообщите администратору'));
                }

                elseif (empty(
$_POST['login'])) {
                    
Core::msg_show(__('Вы не ввели логин пользователя'));
                    
                } elseif (empty(
$_POST['text']) || mb_strlen($_POST['text']) <= 1) {
                    
Core::msg_show(__('Короткое сообщениее'));
                    
                } elseif (
mb_strlen($_POST['text']) > 1024) {
                    
Core::msg_show(__('Сообщение слишком длинное'));
                
                } elseif (
$_POST['login'] == $user['nick']) {
                    
Core::msg_show(__('Нельзя отправлять сообщения самому себе'));
                
                } elseif (
$sql->query("SELECT COUNT(*) FROM `user` WHERE `nick` = '$login_mail'")->result() > 0) {
                    
$sql->query("SELECT `id` FROM `user` WHERE `nick` = '$login_mail'");
                    
$users $sql->fetch();
                    
                    
/* Отправляем сообщение */
                    
$sql->query("INSERT INTO `mail` (`author`, `user`, `time`, `text`) VALUES ('$user_id', '" $users['id'] . "', '$time', '$text')");
                    
                    
                    
/* Добавляем пользователя в контакты, если его нету и обновляем счетчики */
                    
if ($sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '$user_id' AND `id_cont` = '" $users['id'] . "'")->result() == 0)
                        
$sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `outbox`) VALUES (' $user_id ', ' $users['id'] .', "1")');
                    else
                        
$sql->query('UPDATE `mail_contacts` SET `outbox` = `outbox`+1 WHERE `user_id` = ' $user_id ' AND `id_cont` = '$users['id']);

                    if (
$sql->query("SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = '"$users['id'] ."' AND `id_cont` = '" $user_id "'")->result() == 0)
                        
$sql->query('INSERT INTO `mail_contacts` (`user_id`, `id_cont`, `inbox`, `unread`) VALUES (' $users['id'] . ', ' $user_id ', "1", "1")');
                    else
                        
$sql->query('UPDATE `mail_contacts` SET `inbox` = `inbox`+1, `unread` = `unread`+1 WHERE `user_id` = ' $users['id'] . ' AND `id_cont` = '$user_id);

                        
                    UnSET(
$_SESSION['login_mail'], $_SESSION['text_mail']);
                    
$_SESSION['add_mail'] = true;
                    
Core::stop('?');
                        
                
                } else
                    
Core::msg_show(__('Пользователь с логином <b>:nick</b> не найден', array(':nick' =>  $login_mail)));
            }
            
$js_form 'form_mail';
            
$js_elem 'text';
            
            
?>
                <form name="form_mail" method="POST">
                    <?=__('Введите логин пользователя')?>:<br />
                    <input type="text" name="login" value="<? echo empty($_SESSION['login_mail']) ? '' $_SESSION['login_mail']; ?>" /><br />
                    
                    <?=__('Сообщение')?>:<br />
                    <? include incDir 'JsToolBar.php';?>
                    <textarea name="text"><? echo empty($_SESSION['text_mail']) ? '' $_SESSION['text_mail']; ?></textarea><br />
                    <input type="hidden" name="token" value="<?=CSRF::generate('form_mail')?>"/>
                    <input type="submit" name="add"/>
                </form>
                <a href="?"><div class="menu_razd"><?=__('Список контактов')?></div></a>
            <?
            
break;





        
/*
        ---------------------------------
        Вывод контактов
        ---------------------------------
        */
        
default:
        
        
$set['title'] = __('Контакты');
        include 
H.'engine/includes/head.php';
        
        if (isset(
$_SESSION['add_mail'])) {
            
Core::msg_show(__('Сообщение успешно отправлено'), 'msg');
            UnSET(
$_SESSION['add_mail']);
        }
        
        
        
        echo 
'<div class="fmenu"><a href="?act=add_mail">'.__('Написать сообщение').'</a></div>';
        
        
        
$count $sql->query('SELECT COUNT(*) FROM `mail_contacts` WHERE `user_id` = ' $user_id)->result();
        
        if (
$count 0) {
            
            
$k_post $count;
            
$page = new Page($k_post$set['p_str']);
            
            
$query $sql->query('SELECT `mail_contacts`.*, `user`.`nick`,`user`.`pol`, `user`.`id`, `user`.`group_access`, `user`.`date_last` FROM `mail_contacts` LEFT JOIN `user` ON `mail_contacts`.`id_cont` = `user`.`id` WHERE `mail_contacts`.`user_id` = ' $user_id ' order by `mail_contacts`.`unread` DESC LIMIT ' $page->limit());
            
            while (
$cont $sql->fetch())
            {
                echo 
'
                <a href="?act=mail&amp;id=' 
$cont['id'] . '">
                <div class="link">'
Core::user_icon($cont) .' ' $cont['nick'] . '
                (' 
$cont['inbox'] . '/' $cont['outbox'] . ')' .
                (empty(
$cont['unread']) ? '' '<b>+' $cont['unread'] . '</b>') .
                
'</div></a>';
            }
            
$page->display('?');
        } else
            
Core::msg_show('Контактов нет');
    }

    echo 
'
        <div class="menu_razd">'
.__('См. также').'</div>
        <div class="link"><a href="/pages/menu.php">'
.__('Кабинет').'</a></div>
        <div class="link"><a href="/">'
.__('Главная').'</a></div>';
    
    include 
H.'engine/includes/foot.php';
Онлайн: 3
Реклама