Файл: modules/forum/section.php
Строк: 149
<?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'; // Модуль
$icons_dir = '/design/icons/forum/'; // папка и иконками
/**
* Проверяем, задан ли верный параметр
**/
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_sections` WHERE `id` = '" . num($_GET['id']) . "'"), 0) == 0) {
require_once(HOME .'/incfiles/header.php');
echo '<div class="error">' . $lang_forum['section_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');
}
$ID = num($_GET['id']);
$section = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_sections` WHERE `id` = '$ID' LIMIT 1"));
$category = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_categories` WHERE `id` = '" . $section['category_id'] . "' LIMIT 1"));
/**
* Добавление темы
**/
if (isset($_GET['new_topic'])) {
/**
* Проверка наличия авторизации
**/
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');
}
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/forum/">' . $lang['forum'] . '</a> | <a href="category.php?id=' . $category['id'] . '">' . txt($category['name']) . '</a> | <a href="section.php?id=' . $ID . '">' . txt($section['name']) . '</a> | <b>' . $lang_forum['new_topic'] . '</b></div>';
if (isset($_POST['add'])) {
$name = input(mb_substr($_POST['name'], 0, 60));
$text = input(mb_substr($_POST['text'], 0, 15000));
/**
* Проверяем длину названия темы
**/
if (strlen($name) < 2)
$err[] = $lang_forum['short_name_topic'];
/**
* Проверяем длину описания темы
**/
if (strlen($text) < 3)
$err[] = $lang_forum['short_text_topic'];
/**
* Проверяем, есть ли тема с таким названием в этом разделе
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_topics` WHERE `name` = '$name' AND `section_id` = '$ID'"), 0) != 0)
$err[] = $lang_forum['topic_name_exists'];
/**
* Проверяем, есть ли такое сообщение в БД
**/
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `text` = '$text' AND `section_id` = '$ID' AND `user_id` = '" . $user['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_topics` (`category_id`, `section_id`, `name`, `time_create`, `time_update`, `user_id`, `close`, `up`) VALUES ('" . $section['category_id'] . "', '$ID', '$name', '" . time() . "', '" . time() . "', '" . $user['id'] . "', 'no', '0')");
$insertID = mysql_insert_id();
mysql_query("INSERT INTO `cms_forum_messages` (`category_id`, `section_id`, `topic_id`, `text`, `time`, `user_id`) VALUES ('" . $section['category_id'] . "', '$ID', '$insertID', '$text', '" . time() . "', '" . $user['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");
header("Location: topic.php?id=$insertID");
} else {
echo error($err); // показываем ошибки, если они имеются
}
}
/**
* Форма
**/
echo '<div class="main"><form name="message" method="post" action="section.php?id=' . $ID . '&new_topic">' .
$lang_forum['topic_name'] . '<br />' .
'<input type="text" name="name" value="" /><br />' .
$lang_forum['topic_text'] . '<br />' .
bb_panel('message', 'text') .
'<textarea name="text"></textarea><br />' .
$lang_forum['topic_text_info'] . '<br />' .
'<input type="submit" name="add" value="' . $lang['add'] . '" />' .
'</form></div>';
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
}
/**
* Показываем список тем
**/
else {
require_once(HOME .'/incfiles/header.php'); // подключаем шапку
/**
* Небольшая панель навигации
**/
echo '<div class="title"><a href="/forum/">' . $lang['forum'] . '</a> | <a href="category.php?id=' . $category['id'] . '">' . txt($category['name']) . '</a> | <a href="section.php?id=' . $ID . '">' . txt($section['name']) . '</a> | <b>' . $lang_forum['topic_list'] . '</b></div>';
if (isset($user))
echo '<div class="home"><img src="/design/themes/' . $set_user['theme'] . '/images/act.png" alt="" /> <a href="section.php?id=' . $ID . '&new_topic">' . $lang_forum['start_new_topic'] . '</a></div>';
/**
* Настраиваем пагинацию
**/
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_topics` WHERE `section_id` = '$ID'"), 0);
$req = mysql_query("SELECT * FROM `cms_forum_topics` WHERE `section_id` = '$ID' ORDER BY `up` DESC, `time_update` DESC LIMIT $start, $countMess");
/**
* Если нет результатов, выводим уведомление
**/
if ($total < 1) {
echo '<div class="error">' . $lang_forum['topics_not_found'] . '</div>';
}
while ($res = mysql_fetch_assoc($req)) {
echo ($i % 2) ? '<div class="list1">' : '<div class="list2">';
$last = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_forum_messages` WHERE `topic_id` = '" . $res['id'] . "' ORDER BY `time` DESC LIMIT 1")); // вычисляем пользователя, написавшего последнее сообщение
$last_user = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '" . $last['user_id'] . "'")); // получаем его данные
$messages = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `topic_id` = '" . $res['id'] . "'"), 0); // счетчик сообщений в теме
$pagesMess = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_messages` WHERE `topic_id` = '" . $res['id'] . "'"), 0);
$ceil = ceil($pagesMess / $countMess);
$end_page = ($ceil > 1 ? ' <a href="topic.php?id=' . $res['id'] . '&page=' . $ceil . '">»»</a>' : '');
echo ($res['up'] == '1' ? '<img src="' . $icons_dir . 'up.png" alt="[!]" />' : '<img src="' . $icons_dir . 'topic.png" alt="[t]" />') .
($res['close'] == 'yes' ? ' <img src="' . $icons_dir . 'close.png" alt="[#]" />' : '') . ' <a href="topic.php?id=' . $res['id'] . '">' . txt($res['name']) . '</a> [' . $messages . ']' . $end_page . '<br />' .
'[<a href="/user/profile.php?id=' . $last_user['id'] . '">' . $last_user['login'] . '</a> / ' . display_time($res['time_update']) . ']</div>';
$i++;
}
/**
* Пагинация
**/
if ($total > $countMess) {
echo '<div class="home">' . display_pagination('section.php?id=' . $ID . '&', $start, $total, $countMess) . '</div>';
}
require_once(HOME .'/incfiles/footer.php'); // подключаем ноги
}
ob_end_flush();
?>