Файл: 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();
?>