<?php
#---------------------------------------------#
# ********* RotorCMS ********* #
# Author : Vantuz #
# Email : [email protected] #
# 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 = DBM::run()->count('guest');
if ($total > 0 && $start >= $total) {
$start = last_page($total, $config['bookpost']);
}
$page = floor(1 + $start / $config['bookpost']);
$config['newtitle'] = 'Гостевая книга (Стр. '.$page.')';
$posts = DBM::run()->select('guest', null, $config['bookpost'], $start, array('guest_time'=>'DESC'));
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 = antimat($msg);
$bookscores = ($config['bookscores']) ? 1 : 0;
$user = DBM::run()->update('users', array(
'users_allguest' => array('+', 1),
'users_point' => array('+', $bookscores),
'users_money' => array('+', 5),
), array(
'users_login' => $log
));
$guest = DBM::run()->insert('guest', array(
'guest_user' => $log,
'guest_text' => $msg,
'guest_ip' => $ip,
'guest_brow' => $brow,
'guest_time' => SITETIME,
));
DBM::run()->execute("DELETE FROM `guest` WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM `guest` ORDER BY `guest_time` DESC LIMIT :limit) AS del);", array('limit' => intval($config['maxpostbook'])));
notice('Сообщение успешно добавлено!');
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 = antimat($msg);
$guest = DBM::run()->insert('guest', array(
'guest_user' => $config['guestsuser'],
'guest_text' => $msg,
'guest_ip' => $ip,
'guest_brow' => $brow,
'guest_time' => SITETIME,
));
DBM::run()->execute("DELETE FROM `guest` WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM `guest` ORDER BY `guest_time` DESC LIMIT :limit) AS del);", array('limit' => intval($config['maxpostbook'])));
notice('Сообщение успешно добавлено!');
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 = DBM::run()->selectFirst('guest', array('guest_id' => $id));
if (! empty($data)) {
$spam = DBM::run()->selectFirst('spam', array('spam_key' => 2, 'spam_idnum' => $id));
if (empty($spam)) {
if (is_flood($log)) {
$spam = DBM::run()->insert('spam', array(
'spam_key' => 2,
'spam_idnum' => $data['guest_id'],
'spam_user' => $log,
'spam_login' => $data['guest_user'],
'spam_text' => $data['guest_text'],
'spam_time' => $data['guest_time'],
'spam_addtime' => SITETIME,
'spam_link' => '/book/index.php?start='.$start,
));
notice('Жалоба успешно отправлена!');
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 = DBM::run()->selectFirst('guest', array('guest_id' => $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 = DBM::run()->selectFirst('guest', array('guest_id' => $id));
if (!empty($post)) {
$post['guest_text'] = preg_replace('|\[q\](.*?)\[/q\]|s', '', $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 = DBM::run()->selectFirst('guest', array('guest_id' => $id, 'guest_user' =>$log));
if (! empty($post)) {
if ($post['guest_time'] + 600 > SITETIME) {
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 = DBM::run()->selectFirst('guest', array('guest_id' => $id, 'guest_user' =>$log));
if (! empty($post)) {
if ($post['guest_time'] + 600 > SITETIME) {
$msg = antimat($msg);
$guest = DBM::run()->update('guest', array(
'guest_text' => $msg,
'guest_edit' => $log,
'guest_edit_time' => SITETIME,
), array(
'guest_id' => $id
));
notice('Сообщение успешно отредактировано!');
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');
?>