Файл: book/index.php
Строк: 145
<?php
#---------------------------------------------#
#      ********* RotorCMS *********           #
#           Author  :  Vantuz                 #
#            Email  :  visavi.net@mail.ru     #
#             Site  :  http://visavi.net      #
#              ICQ  :  36-44-66               #
#            Skype  :  vantuzilla             #
#---------------------------------------------#
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');
$act = (isset($_GET['act'])) ? check($_GET['act']) : 'index';
$start = (isset($_GET['start'])) ? abs(intval($_GET['start'])) : 0;
show_title('Гостевая книга', 'Общение без ограничений');
switch ($act):
############################################################################################
##                                    Главная страница                                    ##
############################################################################################
case 'index':
    $total = DB::run()->querySingle("SELECT count(*) FROM `guest`;");
    if ($total > 0 && $start >= $total) {
        $start = last_page($total, $config['bookpost']);
    }
    $page = floor(1 + $start / $config['bookpost']);
    $config['newtitle'] = 'Гостевая книга (Стр. '.$page.')';
    $queryguest = DB::run()->query("SELECT * FROM `guest` ORDER BY `guest_time` DESC LIMIT ".$start.", ".$config['bookpost'].";");
    $posts = $queryguest->fetchAll();
    render('book/index', array('posts' => $posts, 'start' => $start, 'total' => $total));
break;
############################################################################################
##                                    Добавление сообщения                                ##
############################################################################################
case 'add':
    $msg = check($_POST['msg']);
    $uid = check($_GET['uid']);
    if (is_user()) {
        if ($uid == $_SESSION['token']) {
            if (utf_strlen($msg) >= 5 && utf_strlen($msg) < $config['guesttextlength']) {
                if (is_quarantine($log) || $config['bookadds'] == 1) {
                    if (is_flood($log)) {
                        $msg = no_br($msg);
                        $msg = antimat($msg);
                        $msg = smiles($msg);
                        $bookscores = ($config['bookscores']) ? 1 : 0;
                        DB::run()->query("UPDATE `users` SET `users_allguest`=`users_allguest`+1, `users_point`=`users_point`+?, `users_money`=`users_money`+5 WHERE `users_login`=?;", array($bookscores, $log));
                        DB::run()->query("INSERT INTO `guest` (`guest_user`, `guest_text`, `guest_ip`, `guest_brow`, `guest_time`) VALUES (?, ?, ?, ?, ?);", array($log, $msg, $ip, $brow, SITETIME));
                        DB::run()->query("DELETE FROM `guest` WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM `guest` ORDER BY `guest_time` DESC LIMIT ".$config['maxpostbook'].") AS del);");
                        $_SESSION['note'] = 'Сообщение успешно добавлено!';
                        redirect("index.php");
                    } else {
                        show_error('Антифлуд! Разрешается отправлять сообщения раз в '.flood_period().' секунд!');
                    }
                } else {
                    show_error('Карантин! Вы не можете писать в течении '.round($config['karantin'] / 3600).' часов!');
                }
            } else {
                show_error('Ошибка! Слишком длинное или короткое сообщение!');
            }
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
        ############################################################################################
        ##                                   Добавление для гостей                                ##
        ############################################################################################
    } elseif ($config['bookadds'] == 1) {
        $provkod = check(strtolower($_POST['provkod']));
        if ($uid == $_SESSION['token']) {
            if ($provkod == $_SESSION['protect']) {
                if (utf_strlen($msg) >= 5 && utf_strlen($msg) < $config['guesttextlength']) {
                    if (is_flood($log)) {
                        $msg = no_br($msg);
                        $msg = antimat($msg);
                        $msg = smiles($msg);
                        DB::run()->query("INSERT INTO `guest` (`guest_user`, `guest_text`, `guest_ip`, `guest_brow`, `guest_time`) VALUES (?, ?, ?, ?, ?);", array($config['guestsuser'], $msg, $ip, $brow, SITETIME));
                        DB::run()->query("DELETE FROM `guest` WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM `guest` ORDER BY `guest_time` DESC LIMIT ".$config['maxpostbook'].") AS del);");
                        $_SESSION['note'] = 'Сообщение успешно добавлено!';
                        redirect("index.php");
                    } else {
                        show_error('Антифлуд! Разрешается отправлять сообщения раз в '.flood_period().' секунд!');
                    }
                } else {
                    show_error('Ошибка! Слишком длинное или короткое сообщение!');
                }
            } else {
                show_error('Ошибка! Проверочное число не совпало с данными на картинке!');
            }
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
    } else {
        show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
    }
    render('includes/back', array('link' => 'index.php', 'title' => 'Вернуться'));
break;
############################################################################################
##                                    Жалоба на спам                                      ##
############################################################################################
case 'spam':
    $uid = check($_GET['uid']);
    $id = abs(intval($_GET['id']));
    if (is_user()) {
        if ($uid == $_SESSION['token']) {
            $data = DB::run()->queryFetch("SELECT * FROM `guest` WHERE `guest_id`=? LIMIT 1;", array($id));
            if (!empty($data)) {
                $queryspam = DB::run()->querySingle("SELECT `spam_id` FROM `spam` WHERE `spam_key`=? AND `spam_idnum`=? LIMIT 1;", array(2, $id));
                if (empty($queryspam)) {
                    if (is_flood($log)) {
                        DB::run()->query("INSERT INTO `spam` (`spam_key`, `spam_idnum`, `spam_user`, `spam_login`, `spam_text`, `spam_time`, `spam_addtime`, `spam_link`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array(2, $data['guest_id'], $log, $data['guest_user'], $data['guest_text'], $data['guest_time'], SITETIME, $config['home'].'/book/index.php?start='.$start));
                        $_SESSION['note'] = 'Жалоба успешно отправлена!';
                        redirect("index.php?start=$start");
                    } else {
                        show_error('Антифлуд! Разрешается жаловаться на спам не чаще чем раз в '.flood_period().' секунд!');
                    }
                } else {
                    show_error('Ошибка! Жалоба на данное сообщение уже отправлена!');
                }
            } else {
                show_error('Ошибка! Выбранное вами сообщение для жалобы не существует!');
            }
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
    } else {
        show_login('Вы не авторизованы, чтобы подать жалобу, необходимо');
    }
    render('includes/back', array('link' => 'index.php?start='.$start, 'title' => 'Вернуться'));
break;
############################################################################################
##                                   Ответ на сообщение                                   ##
############################################################################################
case 'reply':
    $id = abs(intval($_GET['id']));
    if (is_user()) {
        $post = DB::run()->queryFetch("SELECT * FROM `guest` WHERE `guest_id`=? LIMIT 1;", array($id));
        if (!empty($post)) {
            render ('book/reply', array('post' => $post));
        } else {
            show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
        }
    } else {
        show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
    }
    render('includes/back', array('link' => 'index.php?start='.$start, 'title' => 'Вернуться'));
break;
############################################################################################
##                                   Цитирование сообщения                                ##
############################################################################################
case 'quote':
    $id = abs(intval($_GET['id']));
    if (is_user()) {
        $post = DB::run()->queryFetch("SELECT * FROM `guest` WHERE `guest_id`=? LIMIT 1;", array($id));
        if (!empty($post)) {
            $post['guest_text'] = preg_replace('|[q](.*?)[/q](<br />)?|', '', $post['guest_text']);
            $post['guest_text'] = yes_br(nosmiles($post['guest_text']));
            render ('book/quote', array('post' => $post));
        } else {
            show_error('Ошибка! Выбранное вами сообщение для цитирования не существует!');
        }
    } else {
        show_login('Вы не авторизованы, чтобы цитировать сообщения, необходимо');
    }
    render('includes/back', array('link' => 'index.php?start='.$start, 'title' => 'Вернуться'));
break;
############################################################################################
##                                   Подготовка к редактированию                          ##
############################################################################################
case 'edit':
    $id = abs(intval($_GET['id']));
    if (is_user()) {
        $post = DB::run()->queryFetch("SELECT * FROM `guest` WHERE `guest_id`=? AND `guest_user`=? LIMIT 1;", array($id, $log));
        if (!empty($post)) {
            if ($post['guest_time'] + 600 > SITETIME) {
                $post['guest_text'] = yes_br(nosmiles($post['guest_text']));
                render('book/edit', array('post' => $post, 'id' => $id, 'start' => $start));
            } else {
                show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
            }
        } else {
            show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
        }
    } else {
        show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
    }
    render('includes/back', array('link' => 'index.php?start='.$start, 'title' => 'Вернуться'));
break;
############################################################################################
##                                    Редактирование сообщения                            ##
############################################################################################
case 'editpost':
    $uid = check($_GET['uid']);
    $id = abs(intval($_GET['id']));
    $msg = check($_POST['msg']);
    if (is_user()) {
        if ($uid == $_SESSION['token']) {
            if (utf_strlen($msg) >= 5 && utf_strlen($msg) < $config['guesttextlength']) {
                $post = DB::run()->queryFetch("SELECT * FROM `guest` WHERE `guest_id`=? AND `guest_user`=? LIMIT 1;", array($id, $log));
                if (!empty($post)) {
                    if ($post['guest_time'] + 600 > SITETIME) {
                        $msg = no_br($msg);
                        $msg = antimat($msg);
                        $msg = smiles($msg);
                        DB::run()->query("UPDATE `guest` SET `guest_text`=?, `guest_edit`=?, `guest_edit_time`=? WHERE `guest_id`=?;", array($msg, $log, SITETIME, $id));
                        $_SESSION['note'] = 'Сообщение успешно отредактировано!';
                        redirect("index.php?start=$start");
                    } else {
                        show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
                    }
                } else {
                    show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
                }
            } else {
                show_error('Ошибка! Слишком длинное или короткое сообщение!');
            }
        } else {
            show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
    } else {
        show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
    }
    render('includes/back', array('link' => 'index.php?act=edit&id='.$id.'&start='.$start, 'title' => 'Вернуться'));
    render('includes/back', array('link' => 'index.php?start='.$start, 'title' => 'В гостевую', 'icon' => 'reload.gif'));
break;
default:
    redirect("index.php");
endswitch;
include_once ('../themes/footer.php');
?>