Файл: modules/forum/say.php
Строк: 284
<?php
/****
* @package LiveCMS
* @link livecms.org
* @author MyZik
* @version See attached file VERSION.txt
* @license See attached file LICENSE.txt
* @copyright Copyright (C) LiveCMS Development Team
****/
ob_start();
$lang_forum = load_lng('forum'); // Подключаем файл языка
$title = $lang_forum['forum']; // Заголовок страницы
$module = 'forum'; // Модуль
/**
* Проверка наличия авторизации
**/
if (!isset($user)) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['only_users'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="/index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем, задан ли параметр
**/
if (!isset($_GET['id']) || empty($_GET['id']) || !is_numeric($_GET['id'])) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['error_parameter'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="/index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем существование темы в которую пишем
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_topics` WHERE `id` = '" . num($_GET['id']) . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['topic_not_exists'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем, закрыта ли тема
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_topics` WHERE `id` = '" . num($_GET['id']) . "' AND `close` = 'yes'"), 0) != 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['topic_closed'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
$ID = num($_GET['id']);
$topic = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_topics` WHERE `id` = '$ID' LIMIT 1"));
/**
* Добавление сообщения с ответом
**/
if (isset($_GET['post']) && !isset($_GET['quote'])) {
/**
* Проверяем, задан ли верный параметр
**/
if (empty($_GET['post']) || !is_numeric($_GET['post'])) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['error_parameter'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем, существует ли сообщение
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `id` = '" . num($_GET['post']) . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['message_not_exists'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
$answer = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_messages` WHERE `id` = '" . num($_GET['post']) . "' LIMIT 1"));
/**
* Проверяем, существует ли пользователь
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `id` = '" . $answer['user_id'] . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['user_not_exists'] . '</div>';
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="index.php">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Запрещаем отвечать самому себе
**/
if ($user['id'] == $answer['user_id']) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['answer_yourself'] . '</div>';
require_once(HOME .'/incfiles/footer.php');
}
$answer_user = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '" . $answer['user_id'] . "' LIMIT 1")); // данные пользователя, которому отвечаем
$pagesMess = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `topic_id` = '$ID'"), 0);
$ceil = ceil($pagesMess / $countMess);
$end_page = ($ceil > 1 ? '&page=' . $ceil : '');
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/forum/">' . $lang['forum'] . '</a> | <b>' . $lang_forum['write_in_topic'] . '</b></div>';
echo '<div class="main"><b>' . txt($topic['name']) . '</b></div>';
if (isset($_POST['add'])) {
$text = input(mb_substr($_POST['text'], 0, 10000));
/**
* Проверяем, пустое ли сообщение
**/
if (empty($text))
$err[] = $lang_forum['empty_text_message'];
/**
* Проверяем, наличие такого же сообщения в теме
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `text` = '$text' AND `user_id` = '" . $user['id'] . "' AND `topic_id` = '$ID'"), 0) != 0)
$err[] = $lang_forum['topic_message_exists'];
/**
* Проверка на флуд
**/
if (($user['lastpost'] + $cms_set['antiflood_time']) >= time())
$err[] = $lang['error_antiflood'];
/**
* Если не было ошибок, заносим данные
**/
if (!isset($err)) {
mysql_query("INSERT INTO `cms_forum_messages` (`category_id`, `section_id`, `topic_id`, `text`, `time`, `user_id`) VALUES ('" . $topic['category_id'] . "', '" . $topic['section_id'] . "', '$ID', '$text', '" . time() . "', '" . $user['id'] . "')");
$fid = mysql_insert_id();
mysql_query("UPDATE `cms_forum_topics` SET `time_update` = '" . time() . "' WHERE `id` = '$ID'"); // обновляем время топика
/**
* Оповещение в журнал
**/
$message = $lang['journal_user'] . ' [url=/user/profile.php?id=' . $user['id'] . ']' . $user['login'] . '[/url] ' . $lang['journal_answer_forum'] . ' [url=/forum/post.php?id=' . $fid . ']' . $topic['name'] . '[/url]';
journal_add($answer['user_id'], $message);
/**
* Начисление баллов и обновление счетчика сообщений
**/
mysql_query("UPDATE `users` SET `balls` = `balls` + 1 WHERE `id` = '" . $user['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `postsforum` = `postsforum` + 1 WHERE `id` = '" . $user['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `lastpost` = '" . time() . "' WHERE `id` = '" . $user['id'] . "' LIMIT 1");
if (intval($_POST['attach_files']) != 1)
header("Location: topic.php?id=$ID$end_page");
else
header("Location: add_files.php?id=$fid");
} else {
echo error($err); // показываем ошибки, если они имеются
}
}
/**
* Форма
**/
echo '<div class="main"><form name="message" method="post" action="say.php?id=' . $ID . '&post=' . $answer['id'] . '">' .
$lang['enter_message'] . '<br />' .
bb_panel('message', 'text') .
'<textarea name="text">[b]@' . $answer_user['login'] . '[/b], </textarea><br />' .
$lang_forum['message_text_info'] . '<br />' .
'<input type="checkbox" name="attach_files" value="1" /> ' . $lang_forum['attach_to_post'] . '<br />' .
'<input type="submit" name="add" value="' . $lang['add'] . '" />' .
'</form></div>';
/**
* Нижняя панель навигации
**/
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="topic.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
}
/**
* Добавление сообщения с цитатой
**/
elseif (isset($_GET['post']) && isset($_GET['quote'])) {
/**
* Проверяем, задан ли верный параметр
**/
if (empty($_GET['post']) || !is_numeric($_GET['post'])) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang['error_parameter'] . '</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Проверяем, существует ли сообщение
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `id` = '" . num($_GET['post']) . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['message_not_exists'] . '</div>';
require_once(HOME .'/incfiles/footer.php');
}
$answer = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_messages` WHERE `id` = '" . num($_GET['post']) . "' LIMIT 1"));
/**
* Проверяем, существует ли пользователь
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `id` = '" . $answer['user_id'] . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['user_not_exists'] . '</div>';
require_once(HOME .'/incfiles/footer.php');
}
/**
* Запрещаем отвечать самому себе
**/
if ($user['id'] == $answer['user_id']) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['answer_yourself'] . '</div>';
require_once(HOME .'/incfiles/footer.php');
}
$answer_user = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '" . $answer['user_id'] . "' LIMIT 1")); // данные пользователя, которому отвечаем
$pagesMess = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `topic_id` = '$ID'"), 0);
$ceil = ceil($pagesMess / $countMess);
$end_page = ($ceil > 1 ? '&page=' . $ceil : '');
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/forum/">' . $lang['forum'] . '</a> | <b>' . $lang_forum['write_in_topic'] . '</b></div>';
echo '<div class="main"><b>' . txt($topic['name']) . '</b></div>';
if (isset($_POST['add'])) {
$text = trim($_POST['text']);
$quote = trim($_POST['quote']);
$quote = preg_replace('#[q](.*?)[/q]#si', '', $quote);
$time_q = date("d.m.Y/H:i", $answer['time']);
$text = '[q]' . $answer_user['login'] . ' (' . $time_q . ")rn" . $quote . '[/q]' . $text;
/**
* Проверяем, пустое ли сообщение
**/
if (empty($_POST['text']) || empty($_POST['quote']))
$err[] = $lang_forum['empty_text_message'];
/**
* Проверяем наличие такого же сообщения в теме
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `text` = '$text' AND `user_id` = '" . $user['id'] . "' AND `topic_id` = '$ID'"), 0) != 0)
$err[] = $lang_forum['topic_message_exists'];
/**
* Проверка на флуд
**/
if (($user['lastpost'] + $cms_set['antiflood_time']) >= time())
$err[] = $lang['error_antiflood'];
/**
* Если не было ошибок, заносим данные
**/
if (!isset($err)) {
mysql_query("INSERT INTO `cms_forum_messages` (`category_id`, `section_id`, `topic_id`, `text`, `time`, `user_id`) VALUES ('" . $topic['category_id'] . "', '" . $topic['section_id'] . "', '$ID', '" . mysql_real_escape_string($text) . "', '" . time() . "', '" . $user['id'] . "')");
$fid = mysql_insert_id();
mysql_query("UPDATE `cms_forum_topics` SET `time_update` = '" . time() . "' WHERE `id` = '$ID'"); // обновляем время топика
/**
* Оповещение в журнал
**/
$message = $lang['journal_user'] . ' [url=/user/profile.php?id=' . $user['id'] . ']' . $user['login'] . '[/url] ' . $lang['journal_quote_forum'] . ' [url=/forum/post.php?id=' . $fid . ']' . $topic['name'] . '[/url]';
journal_add($answer['user_id'], $message);
/**
* Начисление баллов и обновление счетчика сообщений
**/
mysql_query("UPDATE `users` SET `balls` = `balls` + 1 WHERE `id` = '" . $user['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `postsforum` = `postsforum` + 1 WHERE `id` = '" . $user['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `lastpost` = '" . time() . "' WHERE `id` = '" . $user['id'] . "' LIMIT 1");
if (intval($_POST['attach_files']) != 1)
header("Location: topic.php?id=$ID$end_page");
else
header("Location: add_files.php?id=$fid");
} else {
echo error($err); // показываем ошибки, если они имеются
}
}
$quote_text = $answer['text'];
$quote_text = str_replace("<br/>", "rn", $quote_text);
$quote_text = trim(preg_replace('#[q](.*?)[/q]#si', '', $quote_text));
/**
* Форма
**/
echo '<div class="main"><form name="message" method="post" action="say.php?id=' . $ID . '&post=' . $answer['id'] . '&quote">' .
$lang_forum['enter_quote'] . '<br />' .
'<textarea name="quote">' . $quote_text . '</textarea><br />' .
$lang['enter_message'] . '<br />' .
bb_panel('message', 'text') .
'<textarea name="text">[b]@' . $answer_user['login'] . '[/b], </textarea><br />' .
$lang_forum['message_text_info'] . '<br />' .
'<input type="checkbox" name="attach_files" value="1" /> ' . $lang_forum['attach_to_post'] . '<br />' .
'<input type="submit" name="add" value="' . $lang['add'] . '" />' .
'</form></div>';
/**
* Нижняя панель навигации
**/
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="topic.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
}
/**
* Добавление простого сообщения
**/
else {
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
$pagesMess = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `topic_id` = '$ID'"), 0);
$ceil = ceil($pagesMess / $countMess);
$end_page = ($ceil > 1 ? '&page=' . $ceil : '');
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/forum/">' . $lang['forum'] . '</a> | <b>' . $lang_forum['write_in_topic'] . '</b></div>';
echo '<div class="main"><b>' . txt($topic['name']) . '</b></div>';
if (isset($_POST['add'])) {
$text = input(mb_substr($_POST['text'], 0, 10000));
/**
* Проверяем, пустое ли сообщение
**/
if (empty($text))
$err[] = $lang_forum['empty_text_message'];
/**
* Проверяем, было ли такое сообщение в теме
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `text` = '$text' AND `user_id` = '" . $user['id'] . "' AND `topic_id` = '$ID'"), 0) != 0)
$err[] = $lang_forum['topic_message_exists'];
/**
* Проверка на флуд
**/
if (($user['lastpost'] + $cms_set['antiflood_time']) >= time())
$err[] = $lang['error_antiflood'];
/**
* Если не было ошибок, заносим данные
**/
if (!isset($err)) {
mysql_query("INSERT INTO `cms_forum_messages` (`category_id`, `section_id`, `topic_id`, `text`, `time`, `user_id`) VALUES ('" . $topic['category_id'] . "', '" . $topic['section_id'] . "', '$ID', '$text', '" . time() . "', '" . $user['id'] . "')");
$fid = mysql_insert_id();
mysql_query("UPDATE `cms_forum_topics` SET `time_update` = '" . time() . "' WHERE `id` = '$ID'"); // обновляем время топика
/**
* Начисление баллов и обновление счетчика сообщений
**/
mysql_query("UPDATE `users` SET `balls` = `balls` + 1 WHERE `id` = '" . $user['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `postsforum` = `postsforum` + 1 WHERE `id` = '" . $user['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `lastpost` = '" . time() . "' WHERE `id` = '" . $user['id'] . "' LIMIT 1");
if (intval($_POST['attach_files']) != 1)
header("Location: topic.php?id=$ID$end_page");
else
header("Location: add_files.php?id=$fid");
} else {
echo error($err); // показываем ошибки, если они имеются
}
}
/**
* Форма
**/
echo '<div class="main"><form name="message" method="post" action="say.php?id=' . $ID . '" enctype="multipart/form-data">' .
$lang['enter_message'] . '<br />' .
bb_panel('message', 'text') .
'<textarea name="text"></textarea><br />' .
$lang_forum['message_text_info'] . '<br />' .
'<input type="checkbox" name="attach_files" value="1" /> ' . $lang_forum['attach_to_post'] . '<br />' .
'<input type="submit" name="add" value="' . $lang['add'] . '" />' .
'</form></div>';
/**
* Нижняя панель навигации
**/
echo '<div class="home">' .
'<img src="/design/themes/' . $set_user['theme'] . '/images/back.png" alt="" /> <a href="topic.php?id=' . $ID . '">' . $lang['back'] . '</a>' .
'</div>';
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
}
ob_end_flush();
?>