Файл: CMS/guest/index.php
Строк: 214
<?php
define('CMS',TRUE);
define('ROOT','../');
require('../core/inc.php');
$id = !empty($_GET['id']) ? (int) $_GET['id'] : 0;
$mod = !empty($_GET['m']) ? (string) $_GET['m'] : '';
$page = !empty($_GET['page']) ? (int) $_GET['page'] : 1;
$error = '';
# Добавление сообщения
if (!empty($_POST['addbook'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
$_SESSION['captcha_key'] = !empty($_SESSION['captcha_key']) ? $_SESSION['captcha_key'] : NULL;
$_SESSION['captcha_failures'] = !empty($_SESSION['captcha_failures']) ? $_SESSION['captcha_failures'] : 0;
$_SESSION[SP]['crc32'] = !empty($_SESSION[SP]['crc32']) ? $_SESSION[SP]['crc32'] : NULL;
if ($is_logged) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($msg) >= 5 && cms_strlen($msg) < $config['guest_max_text']) {
if ( crc32($msg) <> $_SESSION[SP]['crc32'] ) {
if (is_quarantine($log) || $config['add_guest_book'] == 1) {
if (is_flood($log)) {
$_SESSION[SP]['crc32'] = crc32($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$db->query("UPDATE ?_users SET `users_allguest` = (`users_allguest` + 1), `users_point` = (`users_point` + 1), `users_money` = (`users_money` + 5) WHERE `users_login` = ?;", $config['guest_add_point'], $config['guest_add_money'], $log);
$db->query("INSERT INTO ?_guest (`guest_user`, `guest_text`, `guest_ip`, `guest_brow`, `guest_time`)
VALUES (?, ?, ?, ?, ?);", $log, $msg, $ip, $brow, SITE_TIME);
$db->query("DELETE FROM ?_guest WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM ?_guest ORDER BY `guest_time` DESC LIMIT " . $config['guest_max_post'] . ") AS del);");
$inSes->addMessage('Сообщение успешно добавлено!', 'ok');
gen_red('index', '', RND);
}
else $error = 'Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!';
}
else $error = 'Карантин! Вы не можете писать в течении ' . round($config['allow_karantin'] / 3600) . ' часов!';
}
else $error = 'Ошибка! Ваше сообщение <u>уже было</u> добавлено!';
}
else $error = 'Ошибка! Слишком длинное или короткое сообщение!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
else if ($config['add_guest_book'] == 1) {
$code = !empty($_POST['code']) ? num($_POST['code']) : 0;
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (!empty($_SESSION['captcha_key']) && $_SESSION['captcha_key'] == $code) {
if ( check_referer() ) {
if (cms_strlen($msg) >= 5 && cms_strlen($msg) < $config['guest_max_text']) {
if ( crc32($msg) <> $_SESSION[SP]['crc32'] ) {
if (is_flood($log)) {
$_SESSION[SP]['crc32'] = crc32($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$db->query("INSERT INTO ?_guest (`guest_user`, `guest_text`, `guest_ip`, `guest_brow`, `guest_time`)
VALUES (?, ?, ?, ?, ?);", $config['guest_name'], $msg, $ip, $brow, SITE_TIME);
$db->query("DELETE FROM ?_guest WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM ?_guest ORDER BY `guest_time` DESC LIMIT " . $config['guest_max_post'] . ") AS del);");
$_SESSION['captcha_key'] = NULL;
$_SESSION['captcha_failures'] = 0;
$inSes->addMessage('Сообщение успешно добавлено!', 'ok');
gen_red('index', '', RND);
}
else $error = 'Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!';
}
else $error = 'Ошибка! Ваше сообщение <u>уже было</u> добавлено!';
}
else $error = 'Ошибка! Слишком длинное или короткое сообщение!';
}
else $error = 'Ошибка! Реферер не определен в вашем браузере. Пожалуйста, активируйте опцию передачи реферера.';
}
else $error = 'Ошибка! Проверочное число не совпало с данными на картинке!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
else {
$error = 'Вы не авторизованы, чтобы добавить сообщение, необходимо';
}
if (!empty($error)) $inSes->addMessage($error, 'error');
}
switch($mod):
default:
show_header('Гостевая книга');
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo '<a href="' . gen_uri('index', '', RND) . '">Обновить</a>';
if (is_admin()) {
echo ' | <a href="' . gen_admin('?m=guest') . '">Управление</a>';
}
echo '</div>';
if (!empty($mod) && in_array($mod,array('code','smiles','rules'))):
include( MODULES_PATH . $mod . '.inc.php' );
else:
$onpage = !empty($config['book_num']) ? num($config['book_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage( $total, "SELECT * FROM ?_guest ORDER BY `guest_time` DESC LIMIT ?d, ?d", $from, $onpage );
if (!empty($rows) && $total > 0) {
foreach($rows as $row) {
echo '<div class="b">';
echo '<div class="img">' . user_avatars($row['guest_user']) . '</div>';
if ($is_logged && $log == $row['guest_user'] && $row['guest_time'] + 600 > SITE_TIME) {
echo '<div class="right"><a href="' . gen_uri('edit', $row['guest_id'], 'page=' . $page) . '">Редактировать</a></div>';
}
if (!empty($log) && $log != $row['guest_user']) {
echo '<div class="right">';
echo '<a href="' . gen_uri('reply', $row['guest_id'], 'page=' . $page) . '">Отв</a> | ';
echo '<a href="' . gen_uri('quote', $row['guest_id'], 'page=' . $page) . '">Цит</a>';
echo '</div>';
}
if ($row['guest_user'] == $config['guest_name']) {
echo '<b>' . $row['guest_user'] . '</b> <small>(' . get_date($row['guest_time']) . ')</small>';
}
else {
echo '<b>' . users_anketa($row['guest_user']) . '</b> <small>(' . get_date($row['guest_time']) . ')</small><br />';
echo user_title($row['guest_user']) . ' ' . user_online($row['guest_user']);
}
echo '<br />';
echo nl2br(bb_code($row['guest_text'])) . '<br />';
if (!empty($row['guest_edit'])) {
echo '<img src="/images/icons/exclamation_small.gif" alt="" /> ';
echo '<small>Отредактировано: ' . nickname($row['guest_edit']) . ' (' . get_date($row['guest_edit_time']) . ')</small><br />';
}
if (!empty($row['guest_reply'])) {
echo nl2br(bb_code($row['guest_reply'])) . '<br />';
}
if (!empty($config['anonymity'])) {
echo '<span class="data">(' . $row['guest_brow'] . ', ' . $row['guest_ip'] . ')</span><br />';
}
echo '</div>';
}
echo show_pages('index', '', 'p');
}
else {
show_error('Сообщений нет, будь первым!');
}
endif;
if ($is_logged) {
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addTextarea('Сообщение:', 'text', request('text'));
echo $form->Submit('Написать', 'addbook');
unset($form);
}
else if ($config['add_guest_book'] == 1) {
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addTextarea('Сообщение:', 'text', request('text'));
$form->addCaptcha('Проверочный код:', 'code', gen_uri('index', '', RND));
echo $form->Submit('Написать', 'addbook');
unset($form);
}
else {
show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
}
echo '<div class="b">';
echo '<a href="#up">' . icon('up.png') . '</a> ';
echo '<a href="' . gen_uri('rules') . '">Правила</a> | ';
echo '<a href="' . gen_uri('smiles') . '">Смайлы</a> | ';
echo '<a href="' . gen_uri('code') . '">Теги</a><br /></div>';
break;
case 'reply':
show_header('Ответ на сообщение');
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_guest WHERE `guest_id` = ? LIMIT 1;", $id);
if (!empty($post)) {
echo '<div class="b" style="min-height:30px;">';
echo '<div class="img">' . user_avatars($post['guest_user']) . '</div>';
if ($post['guest_user'] == $config['guest_name']) {
echo '<b>' . $post['guest_user'] . '</b> <small>(' . get_date($post['guest_time']) . ')</small>';
} else {
echo '<b>' . users_anketa($post['guest_user']) . '</b> <small>(' . get_date($post['guest_time']) . ')</small><br />';
echo user_title($post['guest_user']) . ' ' . user_online($post['guest_user']);
}
echo '</div>';
echo '<div class="b">Сообщение: ' . nl2br(bb_code($post['guest_text'])) . '</div>';
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('index', 'p' . $page, 'rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>[<a href="' . gen_uri('reply', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('reply', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', '[b]' . nickname($post['guest_user']) . '[/b] ', ' id="msg" style="width:98%;"');
echo $form->Submit('Ответить', 'addbook');
unset($form);
}
else {
show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
}
}
else {
show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('index', 'p' . $page, RND) . '">Вернуться</a><br /></div>';
break;
case 'quote':
show_header('Цитирование');
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_guest WHERE `guest_id` = ? LIMIT 1;", $id);
if (!empty($post)) {
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$post['guest_text'] = nosmiles($post['guest_text']);
$post['guest_text'] = preg_replace('|[q](.*?)[/q](<br />)?|', '', $post['guest_text']);
$post['guest_text'] = str_replace(array('<br>', '<br/>', '<br />'), "n", $post['guest_text']);
$text = '[q][b]' . nickname($post['guest_user']) . '[/b] (' . get_date($post['guest_time']) . ')';
$text .= "n" . $post['guest_text'] . "[/q]n";
$form = new cmsForm(gen_uri('index', 'p' . $page, 'rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>[<a href="' . gen_uri('quote', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('quote', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('Сообщение:', 'text', $text, ' id="msg" style="width:98%;"');
echo $form->Submit('Цитировать', 'addbook');
unset($form);
}
else {
show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
}
}
else {
show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('index', 'p' . $page, RND) . '">Вернуться</a><br /></div>';
break;
case 'edit':
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_guest WHERE `guest_id` = ? AND `guest_user` = ? LIMIT 1;", $id, $log);
if (!empty($post)) {
if ($post['guest_time'] + 600 > SITE_TIME) {
if (!empty($_POST['submit'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($msg) >= 5 && cms_strlen($msg) < $config['guest_max_text']) {
$msg = antimat($msg);
$msg = smiles($msg);
$db->query("UPDATE ?_guest SET `guest_text` = ?, `guest_edit` = ?, `guest_edit_time` = ?
WHERE `guest_id` = ?;", $msg, $log, SITE_TIME, $id);
$inSes->addMessage('Сообщение успешно отредактировано!', 'ok');
gen_red('index', 'p' . $page, RND);
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Поправка сообщения');
$post['guest_text'] = nosmiles($post['guest_text']);
$post['guest_text'] = str_replace(array('<br>', '<br/>', '<br />'), "n", $post['guest_text']);
$post['guest_text'] = html_entity_decode($post['guest_text'], ENT_QUOTES, 'UTF-8');
echo '<div class="b"> <b>' . nickname($post['guest_user']) . '</b> <small>(' . get_date($post['guest_time']) . ')</small><br /></div>';
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('edit', $id, 'page=' . $page . '&rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>[<a href="' . gen_uri('edit', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('edit', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $post['guest_text'], ' id="msg" style="width:98%;"');
echo $form->Submit('Редактировать', 'submit');
unset($form);
}
else {
show_header('Поправка сообщения');
show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
}
}
else {
show_header('Поправка сообщения');
show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
}
}
else {
show_header('Поправка сообщения');
show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('index', 'p' . $page, RND) . '">Вернуться</a><br /></div>';
break;
endswitch;
show_footer();
?>