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