View file pages/privat.php

File size: 32.87Kb
<?php
#-----------------------------------------------------#
#          ********* ROTORCMS *********               #
#              Made by  :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#        для его дальнейшего распространения          #
#-----------------------------------------------------#	
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/' . $config['themes'] . '/index.php');

if (isset($_GET['act'])) {
    $act = check($_GET['act']);
} else {
    $act = 'index';
} 
if (isset($_GET['start'])) {
    $start = abs(intval($_GET['start']));
} else {
    $start = 0;
} 
if (isset($_GET['uz'])) {
    $uz = check($_GET['uz']);
} elseif (isset($_POST['uz'])) {
    $uz = check($_POST['uz']);
} else {
    $uz = '';
} 

show_title('site.png', 'Приватные сообщения');
$config['newtitle'] = 'Приватные сообщения';

if (is_user()) {
    switch ($act):
    # ###########################################################################################
    # #                                    Главная страница                                    ##
    # ###########################################################################################
    case "index":

        $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `inbox` WHERE `inbox_user`=?;", array($log));

        $intotal = DB :: $dbh -> query("SELECT count(*) FROM `outbox` WHERE `outbox_author`=? UNION ALL SELECT count(*) FROM `trash` WHERE `trash_user`=?;", array($log, $log));
        $intotal = $intotal -> fetchAll(PDO :: FETCH_COLUMN);

        echo '<img src="../images/img/mail.gif" alt="image" /> <b>Входящие (' . $total . ')</b> / ';
        echo '<a href="privat.php?act=output&amp;' . SID . '">Отправленные (' . $intotal[0] . ')</a> / ';
        echo '<a href="privat.php?act=trash&amp;' . SID . '">Корзина (' . $intotal[1] . ')</a><hr />';

        if ($udata['users_newprivat'] > 0) {
            echo '<div style="text-align:center"><b><span style="color:#ff0000">Получено новых писем: ' . (int)$udata['users_newprivat'] . '</span></b></div>';
            DB :: $dbh -> query("UPDATE `users` SET `users_newprivat`=? WHERE `users_login`=?", array(0, $log));
        } 

        if ($total > ($config['limitmail']-5) && $total < $config['limitmail']) {
            echo '<div style="text-align:center"><b><span style="color:#ff0000">Ваш ящик почти заполнен, необходимо очистить или удалить старые сообщения!</span></b></div>';
        } 

        if ($total >= $config['limitmail']) {
            echo '<div style="text-align:center"><b><span style="color:#ff0000">Ваш ящик переполнен, вы не сможете получать письма пока не очистите его!</span></b></div>';
        } 

        if ($total > 0) {
            if ($start >= $total) {
                $start = 0;
            } 

            $querypriv = DB :: $dbh -> query("SELECT * FROM `inbox` WHERE `inbox_user`=? ORDER BY `inbox_time` DESC LIMIT " . $start . ", " . $config['privatpost'] . ";", array($log));

            echo '<form action="privat.php?act=del&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
            echo '<div class="form">';
            echo '<input type="checkbox" name="all" onchange="for (i in this.form.elements) this.form.elements[i].checked = this.checked" /> <b>Отметить все</b>';
            echo '</div>';
            while ($data = $querypriv -> fetch()) {
                echo '<div class="b">';
                echo '<div class="img">' . user_avatars($data['inbox_author']) . '</div>';
                echo '<b><a href="anketa.php?uz=' . $data['inbox_author'] . '&amp;' . SID . '">' . nickname($data['inbox_author']) . '</a></b>  (' . date_fixed($data['inbox_time']) . ')<br />';
                echo user_title($data['inbox_author']) . ' ' . user_online($data['inbox_author']) . '</div>';

                echo '<div>' . bb_code($data['inbox_text']) . '<br />';

                echo '<input type="checkbox" name="del[]" value="' . $data['inbox_id'] . '" /> ';
                echo '<a href="privat.php?act=submit&amp;uz=' . $data['inbox_author'] . '&amp;' . SID . '">Ответить</a> / ';
                echo '<a href="privat.php?act=history&amp;uz=' . $data['inbox_author'] . '&amp;' . SID . '">История</a> / ';
                echo '<a href="contact.php?act=add&amp;uz=' . $data['inbox_author'] . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">В контакт</a> / ';
                echo '<a href="ignore.php?act=add&amp;uz=' . $data['inbox_author'] . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Игнор</a> / ';
                echo '<a href="privat.php?act=spam&amp;id=' . $data['inbox_id'] . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" onclick="return confirm(\'Вы подтверждаете факт спама?\')">Спам</a></div>';
            } 

            echo '<br /><input type="submit" value="Удалить выбранное" /></form>';

            page_strnavigation('privat.php?', $config['privatpost'], $start, $total);

            echo 'Всего писем: <b>' . (int)$total . '</b><br />';
            echo 'Объем ящика: <b>' . $config['limitmail'] . '</b><br /><br />';

            echo '<img src="../images/img/error.gif" alt="image" /> <a href="privat.php?act=alldel&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Очистить ящик</a><br />';
            echo '<img src="../images/img/reload.gif" alt="image" /> <a href="privat.php?rand=' . mt_rand(100, 999) . '&amp;' . SID . '">Обновить список</a><br />';
        } else {
            show_error('Входящих писем еще нет!');
        } 
        break;
    # ###########################################################################################
    # #                                 Исходящие сообщения                                    ##
    # ###########################################################################################
    case "output":

        $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `outbox` WHERE `outbox_author`=?;", array($log));

        $intotal = DB :: $dbh -> query("SELECT count(*) FROM `inbox` WHERE `inbox_user`=? UNION ALL SELECT count(*) FROM `trash` WHERE `trash_user`=?;", array($log, $log));
        $intotal = $intotal -> fetchAll(PDO :: FETCH_COLUMN);

        echo '<img src="../images/img/mail.gif" alt="image" /> <a href="privat.php?' . SID . '">Входящие (' . $intotal[0] . ')</a> / ';
        echo '<b>Отправленные (' . $total . ')</b> / ';
        echo '<a href="privat.php?act=trash&amp;' . SID . '">Корзина (' . $intotal[1] . ')</a><hr />';

        if ($total > 0) {
            if ($start >= $total) {
                $start = 0;
            } 

            $querypriv = DB :: $dbh -> query("SELECT * FROM `outbox` WHERE `outbox_author`=? ORDER BY `outbox_time` DESC LIMIT " . $start . ", " . $config['privatpost'] . ";", array($log));

            echo '<form action="privat.php?act=outdel&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
            echo '<div class="form">';
            echo '<input type="checkbox" name="sel_all" onchange="for (i in this.form.elements) this.form.elements[i].checked = this.checked" /> <b>Отметить все</b>';
            echo '</div>';
            while ($data = $querypriv -> fetch()) {
                echo '<div class="b">';
                echo '<div class="img">' . user_avatars($data['outbox_user']) . '</div>';
                echo '<b><a href="anketa.php?uz=' . $data['outbox_user'] . '&amp;' . SID . '">' . nickname($data['outbox_user']) . '</a></b>  (' . date_fixed($data['outbox_time']) . ')<br />';
                echo user_title($data['outbox_user']) . ' ' . user_online($data['outbox_user']) . '</div>';

                echo '<div>' . bb_code($data['outbox_text']) . '<br />';

                echo '<input type="checkbox" name="del[]" value="' . $data['outbox_id'] . '" /> ';
                echo '<a href="privat.php?act=submit&amp;uz=' . $data['outbox_user'] . '&amp;' . SID . '">Написать еще</a> / ';
                echo '<a href="privat.php?act=history&amp;uz=' . $data['outbox_user'] . '&amp;' . SID . '">История</a></div>';
            } 

            echo '<br /><input type="submit" value="Удалить выбранное" /></form>';

            page_strnavigation('privat.php?act=output&amp;', $config['privatpost'], $start, $total);

            echo 'Всего писем: <b>' . (int)$total . '</b><br />';
            echo 'Объем ящика: <b>' . $config['limitoutmail'] . '</b><br /><br />';

            echo '<img src="../images/img/error.gif" alt="image" /> <a href="privat.php?act=alloutdel&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Очистить ящик</a><br />';
        } else {
            show_error('Отправленных писем еще нет!');
        } 

        break;
    # ###########################################################################################
    # #                                       Корзина                                          ##
    # ###########################################################################################
    case "trash":

        $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `trash` WHERE `trash_user`=?;", array($log));

        $intotal = DB :: $dbh -> query("SELECT count(*) FROM `inbox` WHERE `inbox_user`=? UNION ALL SELECT count(*) FROM `outbox` WHERE `outbox_author`=?;", array($log, $log));
        $intotal = $intotal -> fetchAll(PDO :: FETCH_COLUMN);

        echo '<img src="../images/img/mail.gif" alt="image" /> <a href="privat.php?' . SID . '">Входящие (' . $intotal[0] . ')</a> / ';
        echo '<a href="privat.php?act=output&amp;' . SID . '">Отправленные (' . $intotal[1] . ')</a> / ';

        echo '<b>Корзина (' . $total . ')</b><hr />';
        if ($total > 0) {
            if ($start >= $total) {
                $start = 0;
            } 

            $querypriv = DB :: $dbh -> query("SELECT * FROM `trash` WHERE `trash_user`=? ORDER BY `trash_time` DESC LIMIT " . $start . ", " . $config['privatpost'] . ";", array($log));

            while ($data = $querypriv -> fetch()) {
                echo '<div class="b">';
                echo '<div class="img">' . user_avatars($data['trash_author']) . '</div>';
                echo '<b><a href="anketa.php?uz=' . $data['trash_author'] . '&amp;' . SID . '">' . nickname($data['trash_author']) . '</a></b>  (' . date_fixed($data['trash_time']) . ')<br />';
                echo user_title($data['trash_author']) . ' ' . user_online($data['trash_author']) . '</div>';

                echo '<div>' . bb_code($data['trash_text']) . '<br />';

                echo '<a href="privat.php?act=submit&amp;uz=' . $data['trash_author'] . '&amp;' . SID . '">Ответить</a> / ';
                echo '<a href="contact.php?act=add&amp;uz=' . $data['trash_author'] . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">В контакт</a> / ';
                echo '<a href="ignore.php?act=add&amp;uz=' . $data['trash_author'] . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Игнор</a></div>';
            } 

            page_strnavigation('privat.php?act=trash&amp;', $config['privatpost'], $start, $total);

            echo 'Всего писем: <b>' . (int)$total . '</b><br />';
            echo 'Срок хранения: <b>' . $config['expiresmail'] . '</b><br /><br />';

            echo '<img src="../images/img/error.gif" alt="image" /> <a href="privat.php?act=alltrashdel&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Очистить ящик</a><br />';
        } else {
            show_error('Удаленных писем еще нет!');
        } 

        break;
    # ###########################################################################################
    # #                                   Отправка привата                                     ##
    # ###########################################################################################
    case "submit":

        if (empty($uz)) {
            echo '<div class="form" id="form">';
            echo '<form action="privat.php?act=send&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';

            echo 'Введите логин:<br />';
            echo '<input type="text" name="uz" maxlength="20" /><br />';

            echo 'Или выберите из списка:<br />';
            $querycontact = DB :: $dbh -> query("SELECT `contact_name` FROM `contact` WHERE `contact_user`=? ORDER BY `contact_name` DESC;", array($log));
            $contact = $querycontact -> fetchAll();

            if (count($contact) > 0) {
                echo '<select name="uzcon">';
                echo '<option value="0">Список контактов</option>';

                foreach($contact as $data) {
                    echo '<option value="' . $data['contact_name'] . '">' . nickname($data['contact_name']) . '</option>';
                } 
                echo '</select><br />';
            } else {
                echo '<select name="uzcon">';
                echo '<option value="0">В контактах пусто</option>';
                echo '</select><br />';
            } 

            echo 'Сообщение:<br />';
            echo '<textarea cols="25" rows="3" name="msg"></textarea><br />';
            echo '<input value="Отправить" type="submit" /></form></div><br />';

            echo 'Введите логин или выберите пользователя из своего контакт-листа<br />';
        } else {
            echo '<img src="../images/img/mail.gif" alt="image" /> Сообщение для <b><a href="anketa.php?uz=' . $uz . '&amp;' . SID . '">' . nickname($uz) . '</a></b> ' . user_visit($uz) . ':<br />';
            echo '<img src="../images/img/history.gif" alt="image" /> <a href="privat.php?act=history&amp;uz=' . $uz . '&amp;' . SID . '">История переписки</a><br /><br />';

            $ignorstr = DB :: $dbh -> querySingle("SELECT `ignore_id` FROM `ignore` WHERE `ignore_user`=? AND `ignore_name`=? LIMIT 1;", array($log, $uz));
            if (!empty($ignorstr)) {
                echo '<b>Внимание! Данный пользователь внесен в ваш игнор-лист!</b><br />';
            } 

            echo '<div class="form" id="form">';
            echo '<form action="privat.php?act=send&amp;uz=' . $uz . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
            echo 'Сообщение:<br />';
            echo '<textarea cols="25" rows="3" name="msg"></textarea><br />';
            echo '<input value="Отправить" type="submit" /></form></div>';
        } 

        echo '<br /><img src="../images/img/back.gif" alt="image" /> <a href="privat.php?' . SID . '">Вернуться</a><br />';

        break;
    # ###########################################################################################
    # #                                   Отправка сообщений                                   ##
    # ###########################################################################################
    case "send":

        $uid = check($_GET['uid']);
        $msg = check($_POST['msg']);
        if (!empty($_POST['uzcon'])) {
            $uz = check($_POST['uzcon']);
        } 

        if ($uid == $_SESSION['token']) {
            if ($uz != $log) {
                if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 1000) {
                    $queryuser = DB :: $dbh -> querySingle("SELECT `users_id` FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
                    if (!empty($queryuser)) {
                        $uztotal = DB :: $dbh -> querySingle("SELECT count(*) FROM `inbox` WHERE `inbox_user`=?;", array($uz));
                        if ($uztotal < $config['limitmail']) {
                            // ----------------------------- Проверка на игнор ----------------------------//
                            $ignorstr = DB :: $dbh -> querySingle("SELECT `ignore_id` FROM `ignore` WHERE `ignore_user`=? AND `ignore_name`=? LIMIT 1;", array($uz, $log));
                            if (empty($ignorstr)) {
                                if (is_flood($log)) {
                                    $msg = no_br($msg);
                                    $msg = antimat($msg);
                                    $msg = smiles($msg);

                                    DB :: $dbh -> query("UPDATE `users` SET `users_newprivat`=`users_newprivat`+1 WHERE `users_login`=?", array($uz));
                                    DB :: $dbh -> query("INSERT INTO `inbox` (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) VALUES (?, ?, ?, ?);", array($uz, $log, $msg, SITETIME));

                                    DB :: $dbh -> query("INSERT INTO outbox (`outbox_user`, `outbox_author`, `outbox_text`, `outbox_time`) VALUES (?, ?, ?, ?);", array($uz, $log, $msg, SITETIME));

                                    DB :: $dbh -> query("DELETE FROM `outbox` WHERE `outbox_author`=? AND `outbox_time` < (SELECT MIN(`outbox_time`) FROM (SELECT `outbox_time` FROM `outbox` WHERE `outbox_author`=? ORDER BY `outbox_time` DESC LIMIT " . $config['limitoutmail'] . ") AS del);", array($log, $log));

                                    $_SESSION['note'] = 'Ваше письмо успешно отправлено!';
                                    header ("Location: privat.php?act=output&" . SID);
                                    exit;
                                } else {
                                    show_error('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
                                } 
                            } else {
                                show_error('Ошибка! Вы внесены в игнор-лист получателя!');
                            } 
                        } else {
                            show_error('Ошибка! Ящик получателя переполнен!');
                        } 
                    } else {
                        show_error('Ошибка! Данного адресата не существует!');
                    } 
                } else {
                    show_error('Ошибка! Слишком длинное или короткое сообщение!');
                } 
            } else {
                show_error('Ошибка! Нельзя отправлять письмо самому себе!');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?act=submit&amp;uz=' . $uz . '&amp;' . SID . '">Вернуться</a><br />';
        echo '<img src="../images/img/reload.gif" alt="image" /> <a href="privat.php?' . SID . '">К письмам</a><br />';

        break;
    # ###########################################################################################
    # #                                    Жалоба на спам                                      ##
    # ###########################################################################################
    case "spam":

        $uid = check($_GET['uid']);
        $id = abs(intval($_GET['id']));

        if ($uid == $_SESSION['token']) {
            $querypriv = DB :: $dbh -> query("SELECT * FROM `inbox` WHERE `inbox_user`=? AND `inbox_id`=? LIMIT 1;", array($log, $id));
            $data = $querypriv -> fetch();

            if (!empty($data)) {
                $queryspam = DB :: $dbh -> querySingle("SELECT `spam_id` FROM `spam` WHERE `spam_key`=? AND `spam_idnum`=? LIMIT 1;", array(3, $id));

                if (empty($queryspam)) {
                    if (is_flood($log)) {
                        DB :: $dbh -> query("INSERT INTO `spam` (`spam_key`, `spam_idnum`, `spam_user`, `spam_login`, `spam_text`, `spam_time`, `spam_addtime`) VALUES (?, ?, ?, ?, ?, ?, ?);", array(3, $data['inbox_id'], $log, $data['inbox_author'], $data['inbox_text'], $data['inbox_time'], SITETIME));

                        $_SESSION['note'] = 'Жалоба успешно отправлена!';
                        header ("Location: privat.php?start=$start&" . SID);
                        exit;
                    } else {
                        show_error('Антифлуд! Разрешается жаловаться на спам не чаще чем раз в ' . flood_period() . ' секунд!');
                    } 
                } else {
                    show_error('Ошибка! Вы уже отправили жалобу на данное сообщение!');
                } 
            } else {
                show_error('Ошибка! Данное сообщение адресовано не вам!');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
        break;
    # ###########################################################################################
    # #                                 Удаление сообщений                                     ##
    # ###########################################################################################
    case "del":

        $uid = check($_GET['uid']);
        if (isset($_POST['del'])) {
            $del = intar($_POST['del']);
        } else {
            $del = 0;
        } 

        if ($uid == $_SESSION['token']) {
            if (!empty($del)) {
                $del = implode(',', $del);
                $deltrash = SITETIME + 86400 * $config['expiresmail'];

                DB :: $dbh -> query("DELETE FROM `trash` WHERE `trash_del`<?;", array(SITETIME));

                DB :: $dbh -> query("INSERT INTO `trash` (`trash_user`, `trash_author`, `trash_text`, `trash_time`, `trash_del`) SELECT `inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`, ? FROM `inbox` WHERE `inbox_id` IN (" . $del . ") AND `inbox_user`=?;", array($deltrash, $log));

                DB :: $dbh -> query("DELETE FROM `inbox` WHERE `inbox_id` IN (" . $del . ") AND `inbox_user`=?;", array($log));

                $_SESSION['note'] = 'Выбранные сообщения успешно удалены!';
                header ("Location: privat.php?start=$start&" . SID);
                exit;
            } else {
                show_error('Ошибка удаления! Отсутствуют выбранные сообщения');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';

        break;
    # ###########################################################################################
    # #                           Удаление отправленных сообщений                              ##
    # ###########################################################################################
    case "outdel":

        $uid = check($_GET['uid']);
        if (isset($_POST['del'])) {
            $del = intar($_POST['del']);
        } else {
            $del = 0;
        } 

        if ($uid == $_SESSION['token']) {
            if ($del > 0) {
                $del = implode(',', $del);

                DB :: $dbh -> query("DELETE FROM `outbox` WHERE `outbox_id` IN (" . $del . ") AND `outbox_author`=?;", array($log));

                $_SESSION['note'] = 'Выбранные сообщения успешно удалены!';
                header ("Location: privat.php?act=output&start=$start&" . SID);
                exit;
            } else {
                show_error('Ошибка удаления! Отсутствуют выбранные сообщения');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?act=output&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';

        break;
    # ###########################################################################################
    # #                                   Очистка входящих сообщений                           ##
    # ###########################################################################################
    case "alldel":

        $uid = check($_GET['uid']);

        if ($uid == $_SESSION['token']) {
            if (empty($udata['users_newprivat'])) {
                $deltrash = SITETIME + 86400 * $config['expiresmail'];

                DB :: $dbh -> query("DELETE FROM `trash` WHERE `trash_del`<?;", array(SITETIME));

                DB :: $dbh -> query("INSERT INTO `trash` (`trash_user`, `trash_author`, `trash_text`, `trash_time`, `trash_del`) SELECT `inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`, ? FROM `inbox` WHERE `inbox_user`=?;", array($deltrash, $log));

                DB :: $dbh -> query("DELETE FROM `inbox` WHERE `inbox_user`=?;", array($log));

                $_SESSION['note'] = 'Ящик успешно очищен!';
                header ("Location: privat.php?" . SID);
                exit;
            } else {
                show_error('Ошибка! У вас имеются непрочитанные сообщения!');
            } 
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?' . SID . '">Вернуться</a><br />';

        break;
    # ###########################################################################################
    # #                           Очистка отправленных сообщений                               ##
    # ###########################################################################################
    case "alloutdel":

        $uid = check($_GET['uid']);

        if ($uid == $_SESSION['token']) {
            DB :: $dbh -> query("DELETE FROM `outbox` WHERE `outbox_author`=?;", array($log));

            $_SESSION['note'] = 'Ящик успешно очищен!';
            header ("Location: privat.php?act=output&" . SID);
            exit;
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?act=output&amp;' . SID . '">Вернуться</a><br />';
        break;
    # ###########################################################################################
    # #                              Очистка удаленных сообщений                               ##
    # ###########################################################################################
    case "alltrashdel":

        $uid = check($_GET['uid']);

        if ($uid == $_SESSION['token']) {
            DB :: $dbh -> query("DELETE FROM `trash` WHERE `trash_user`=?;", array($log));

            $_SESSION['note'] = 'Ящик успешно очищен!';
            header ("Location: privat.php?act=trash&" . SID);
            exit;
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        } 

        echo '<img src="../images/img/back.gif" alt="image" /> <a href="privat.php?act=trash&amp;' . SID . '">Вернуться</a><br />';
        break;
    # ###########################################################################################
    # #                                  Просмотр переписки                                    ##
    # ###########################################################################################
    case "history":

        echo '<img src="../images/img/mail.gif" alt="image" /> <a href="privat.php?' . SID . '">Входящие</a> / ';
        echo '<a href="privat.php?act=output&amp;' . SID . '">Отправленные</a> / ';
        echo '<a href="privat.php?act=trash&amp;' . SID . '">Корзина</a><hr />';

        if ($uz != $log) {
            $queryuser = DB :: $dbh -> querySingle("SELECT `users_id` FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
            if (!empty($queryuser)) {
                $total = DB :: $dbh -> query("SELECT count(*) FROM `inbox` WHERE `inbox_user`=? AND `inbox_author`=? UNION ALL SELECT count(*) FROM `outbox` WHERE `outbox_user`=? AND `outbox_author`=?;", array($log, $uz, $uz, $log));

                $total = array_sum($total -> fetchAll(PDO :: FETCH_COLUMN));

                if ($total > 0) {
                    if ($start >= $total) {
                        $start = 0;
                    } 

                    $queryhistory = DB :: $dbh -> query("SELECT * FROM `inbox` WHERE `inbox_user`=? AND `inbox_author`=? UNION ALL SELECT * FROM `outbox` WHERE `outbox_user`=? AND `outbox_author`=? ORDER BY `inbox_time` DESC LIMIT " . $start . ", " . $config['privatpost'] . ";", array($log, $uz, $uz, $log));

                    while ($data = $queryhistory -> fetch()) {
                        echo '<div class="b">';
                        echo user_avatars($data['inbox_author']);
                        echo '<b><a href="anketa.php?uz=' . $data['inbox_author'] . '&amp;' . SID . '">' . nickname($data['inbox_author']) . '</a></b> ' . user_online($data['inbox_author']) . ' (' . date_fixed($data['inbox_time']) . ')</div>';
                        echo '<div>' . bb_code($data['inbox_text']) . '</div>';
                    } 

                    echo '<br /><div class="form">';
                    echo '<form action="privat.php?act=send&amp;uz=' . $uz . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
                    echo 'Сообщение:<br />';
                    echo '<textarea cols="25" rows="3" name="msg"></textarea><br />';
                    echo '<input value="Быстрый ответ" type="submit" /></form></div>';

                    page_strnavigation('privat.php?act=history&amp;uz=' . $uz . '&amp;', $config['privatpost'], $start, $total);

                    echo 'Всего писем: <b>' . (int)$total . '</b><br /><br />';

                    echo '<img src="../images/img/reload.gif" alt="image" /> <a href="privat.php?act=history&amp;uz=' . $uz . '&amp;rand=' . mt_rand(100, 999) . '&amp;' . SID . '">Обновить список</a><br />';
                } else {
                    show_error('История переписки отсутствует!');
                } 
            } else {
                show_error('Ошибка! Данного адресата не существует!');
            } 
        } else {
            show_error('Ошибка! Отсутствует переписка с самим собой!');
        } 
        break;

    default:
        header("location: privat.php?" . SID);
        exit;
        endswitch;
    } else {
    show_login('Вы не авторизованы, для просмотра писем, необходимо');
} 

echo '<img src="../images/img/search.gif" alt="Поиск" /> <a href="searchuser.php?' . SID . '">Поиск контактов</a><br />';
echo '<img src="../images/img/mail.gif" alt="Написать" /> <a href="privat.php?act=submit&amp;' . SID . '">Написать письмо</a><br />';
echo '<img src="../images/img/users.gif" alt="Контакт" /> <a href="contact.php?' . SID . '">Контакт</a> / <a href="ignore.php?' . SID . '">Игнор</a><br />';
echo '<img src="../images/img/homepage.gif" alt="Главная" /> <a href="../index.php?' . SID . '">На главную</a>';

include_once ("../themes/" . $config['themes'] . "/foot.php");

?>