Просмотр файла forum/topic.php

Размер файла: 40.51Kb
  1. <?php
  2. #-----------------------------------------------------#
  3. # ********* ROTORCMS ********* #
  4. # Made by : VANTUZ #
  5. # E-mail : visavi.net@mail.ru #
  6. # Site : http://pizdec.ru #
  7. # WAP-Site : http://visavi.net #
  8. # ICQ : 36-44-66 #
  9. # Вы не имеете право вносить изменения в код скрипта #
  10. # для его дальнейшего распространения #
  11. #-----------------------------------------------------#
  12. require_once ('../includes/start.php');
  13. require_once ('../includes/functions.php');
  14. require_once ('../includes/header.php');
  15. include_once ('../themes/' . $config['themes'] . '/index.php');
  16.  
  17. if (isset($_GET['tid'])) {
  18. $tid = abs(intval($_GET['tid']));
  19. } else {
  20. $tid = 0;
  21. }
  22. if (isset($_GET['start'])) {
  23. $start = abs(intval($_GET['start']));
  24. } else {
  25. $start = 0;
  26. }
  27. if (isset($_GET['act'])) {
  28. $act = check($_GET['act']);
  29. } else {
  30. $act = 'index';
  31. }
  32.  
  33. show_title('menu.png', 'Форум ' . $config['title']);
  34.  
  35. switch ($act):
  36. # ###########################################################################################
  37. # # Главная страница ##
  38. # ###########################################################################################
  39. case "index":
  40.  
  41. $querytopic = DB :: $dbh -> query("SELECT `topics`.*, `forums`.`forums_id`, `forums`.`forums_title`, `forums`.`forums_parent` FROM `topics` LEFT JOIN `forums` ON `topics`.`topics_forums_id`=`forums`.`forums_id` WHERE `topics_id`=? LIMIT 1;", array($tid));
  42. $topics = $querytopic -> fetch();
  43.  
  44. if ($topics > 0) {
  45. $config['newtitle'] = $topics['topics_title'];
  46.  
  47. echo '<a href="#down"><img src="../images/img/downs.gif" alt="Вниз" /></a> ';
  48. echo '<a href="index.php?' . SID . '">Форум</a> / ';
  49.  
  50. if (!empty($topics['forums_parent'])) {
  51. $queryforum = DB :: $dbh -> query("SELECT `forums_id`, `forums_title` FROM `forums` WHERE `forums_id`=? LIMIT 1;", array($topics['forums_parent']));
  52. $forums = $queryforum -> fetch();
  53. echo '<a href="forum.php?fid=' . $forums['forums_id'] . '&amp;' . SID . '">' . $forums['forums_title'] . '</a> / ';
  54. }
  55.  
  56. echo '<a href="forum.php?fid=' . $topics['forums_id'] . '&amp;' . SID . '">' . $topics['forums_title'] . '</a> / ';
  57. echo '<a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;rand=' . mt_rand(1000, 9999) . '&amp;' . SID . '">Обновить</a> / ';
  58. echo '<a href="print.php?tid=' . $tid . '&amp;' . SID . '">Скачать</a> / <a href="rss.php?tid=' . $tid . '&amp;' . SID . '">RSS-лента</a><br /><br />';
  59.  
  60. echo '<img src="../images/img/themes.gif" alt="image" /> <b>' . $topics['topics_title'] . '</b>';
  61.  
  62. if ($topics['topics_author'] == $log && $topics['topics_closed'] != 1 && $udata['users_point'] >= $config['editforumpoint']) {
  63. echo ' (<a href="topic.php?act=closed&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Закрыть</a> / <a href="topic.php?act=edittopic&amp;tid=' . $tid . '&amp;' . SID . '">Изменить</a>)';
  64. }
  65.  
  66. if (!empty($topics['topics_mod'])) {
  67. $topics_mod = explode(',', $topics['topics_mod']);
  68.  
  69. echo '<br />Кураторы темы: ';
  70. foreach ($topics_mod as $mkey => $mval) {
  71. if ($mkey == 0) {
  72. $comma = '';
  73. } else {
  74. $comma = ', ';
  75. }
  76. echo $comma . nickname($mval);
  77. }
  78. $moder = (in_array($log, $topics_mod)) ? 1 : 0;
  79. } else {
  80. $moder = 0;
  81. }
  82.  
  83. echo '<hr />';
  84.  
  85. if (is_admin()) {
  86. if (empty($topics['topics_closed'])) {
  87. echo '<a href="' . ADMINDIR . 'forum.php?act=acttopic&amp;do=closed&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Закрыть</a> / ';
  88. } else {
  89. echo '<a href="' . ADMINDIR . 'forum.php?act=acttopic&amp;do=open&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Открыть</a> / ';
  90. }
  91.  
  92. if (empty($topics['topics_locked'])) {
  93. echo '<a href="' . ADMINDIR . 'forum.php?act=acttopic&amp;do=locked&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Закрепить</a> / ';
  94. } else {
  95. echo '<a href="' . ADMINDIR . 'forum.php?act=acttopic&amp;do=unlocked&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Открепить</a> / ';
  96. }
  97.  
  98. echo '<a href="' . ADMINDIR . 'forum.php?act=edittopic&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Изменить</a> / ';
  99. echo '<a href="' . ADMINDIR . 'forum.php?act=movetopic&amp;tid=' . $tid . '&amp;' . SID . '">Переместить</a> / ';
  100. echo '<a href="' . ADMINDIR . 'forum.php?act=deltopics&amp;fid=' . $topics['forums_id'] . '&amp;del=' . $tid . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" onclick="return confirm(\'Вы действительно хотите удалить данную тему?\')">Удалить</a> / ';
  101. echo '<a href="' . ADMINDIR . 'forum.php?act=topic&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Управление</a><br />';
  102. }
  103.  
  104. $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `posts` WHERE `posts_topics_id`=?;", array($tid));
  105.  
  106. if ($total > 0) {
  107. if ($start >= $total) {
  108. $start = 0;
  109. }
  110.  
  111. $page = floor(1 + $start / $config['forumpost']);
  112. $config['newtitle'] = $topics['topics_title'] . ' (Стр. ' . $page . ')';
  113. $config['description'] = 'Обсуждение темы: ' . $topics['topics_title'] . ' (Стр. ' . $page . ')';
  114.  
  115. if ($moder == 1) {
  116. echo '<form action="topic.php?act=del&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
  117. }
  118.  
  119. $querypost = DB :: $dbh -> query("SELECT * FROM `posts` WHERE `posts_topics_id`=? ORDER BY `posts_time` ASC LIMIT " . $start . ", " . $config['forumpost'] . ";", array($tid));
  120.  
  121. $i = 0;
  122. while ($data = $querypost -> fetch()) {
  123. ++$i;
  124.  
  125. echo '<div class="b">';
  126.  
  127. echo '<div class="img">';
  128. if ($moder == 1) {
  129. echo '<input type="checkbox" name="del[]" value="' . $data['posts_id'] . '" /> ';
  130. }
  131.  
  132. echo user_avatars($data['posts_user']) . '</div>';
  133.  
  134. $num = ($start + $i);
  135.  
  136. echo $num . '. <b><a href="../pages/anketa.php?uz=' . $data['posts_user'] . '&amp;' . SID . '">' . nickname($data['posts_user']) . '</a></b> <small>(' . date_fixed($data['posts_time']) . ')</small><br />';
  137. echo user_title($data['posts_user']) . ' ' . user_online($data['posts_user']) . '</div>';
  138.  
  139. if (!empty($log) && $log != $data['posts_user']) {
  140. echo '<div class="right">';
  141. echo '<a href="topic.php?act=reply&amp;tid=' . $tid . '&amp;pid=' . $data['posts_id'] . '&amp;start=' . $start . '&amp;num=' . $num . '&amp;' . SID . '">Отв</a> / ';
  142. echo '<a href="topic.php?act=quote&amp;tid=' . $tid . '&amp;pid=' . $data['posts_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Цит</a> / ';
  143. echo '<a href="topic.php?act=spam&amp;tid=' . $tid . '&amp;pid=' . $data['posts_id'] . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" onclick="return confirm(\'Вы подтверждаете факт спама?\')">Спам</a></div>';
  144. }
  145.  
  146. if ($log == $data['posts_user'] && $data['posts_time'] + 600 > SITETIME) {
  147. echo '<div class="right">';
  148. echo '<a href="topic.php?act=edit&amp;tid=' . $tid . '&amp;pid=' . $data['posts_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Редактировать</a></div>';
  149. }
  150.  
  151. echo '<div>' . bb_code($data['posts_text']) . '<br />';
  152.  
  153. if (!empty($data['posts_edit'])) {
  154. echo '<img src="../images/img/exclamation_small.gif" alt="image" /> <small>Отредактировано: ' . nickname($data['posts_edit']) . ' (' . date_fixed($data['posts_edit_time']) . ')</small><br />';
  155. }
  156.  
  157. if (is_admin() || empty($config['anonymity'])) {
  158. echo '<span class="data">(' . $data['posts_brow'] . ', ' . $data['posts_ip'] . ')</span>';
  159. }
  160.  
  161. echo '</div>';
  162. }
  163.  
  164. if ($moder == 1) {
  165. echo '<br /><input type="submit" value="Удалить выбранное" /></form>';
  166. }
  167.  
  168. page_strnavigation('topic.php?tid=' . $tid . '&amp;', $config['forumpost'], $start, $total);
  169. } else {
  170. show_error('Сообщений еще нет, будь первым!');
  171. }
  172.  
  173. if (is_user()) {
  174. if ($topics['topics_closed'] == 0) {
  175. echo '<div class="form" id="form">';
  176. echo '<form action="topic.php?act=add&amp;tid=' . $tid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  177. echo 'Сообщение:<br />';
  178. echo '<textarea cols="25" rows="3" name="msg" id="msg"></textarea><br />';
  179.  
  180. if (!empty($udata['users_bbpanel'])) {
  181. quickpaste('msg');
  182. quickcode();
  183. quicksmiles();
  184. }
  185.  
  186. echo '<input type="submit" value="Написать" /></form></div><br />';
  187. } else {
  188. show_error('Данная тема закрыта для обсуждения!');
  189. }
  190. } else {
  191. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  192. }
  193. } else {
  194. show_error('Ошибка! Данной темы не существует!');
  195. }
  196.  
  197. echo '<a href="#up"><img src="../images/img/ups.gif" alt="up" /></a> ';
  198. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  199. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a> / ';
  200. echo '<a href="../pages/rules.php?' . SID . '">Правила</a> / ';
  201. echo '<a href="top.php?act=themes&amp;' . SID . '">Топ тем</a> / ';
  202. echo '<a href="search.php?fid=' . $topics['forums_id'] . '&amp;' . SID . '">Поиск</a><br />';
  203.  
  204. break;
  205. # ###########################################################################################
  206. # # Добавление сообщения ##
  207. # ###########################################################################################
  208. case "add":
  209.  
  210. $msg = check($_POST['msg']);
  211. $uid = check($_GET['uid']);
  212.  
  213. if (is_user()) {
  214. if ($uid == $_SESSION['token']) {
  215. if (utf_strlen($msg) >= 5 && utf_strlen($msg) <= $config['forumtextlength']) {
  216. $topics = DB :: $dbh -> queryFetch("SELECT `topics`.*, `forums`.`forums_parent` FROM `topics` LEFT JOIN `forums` ON `topics`.`topics_forums_id`=`forums`.`forums_id` WHERE `topics`.`topics_id`=? LIMIT 1;", array($tid));
  217.  
  218. if (!empty($topics)) {
  219. if (empty($topics['topics_closed'])) {
  220. if (is_quarantine($log)) {
  221. if (is_flood($log)) {
  222. $msg = no_br($msg);
  223. $msg = antimat($msg);
  224. $msg = smiles($msg);
  225.  
  226. $post = DB :: $dbh -> queryFetch("SELECT * FROM `posts` WHERE `posts_topics_id`=? ORDER BY `posts_id` DESC LIMIT 1;", array($tid));
  227. if ($msg != $post['posts_text']) {
  228. if ($log == $post['posts_user'] && $post['posts_time'] + 600 > SITETIME && (utf_strlen($msg) + utf_strlen($post['posts_text']) <= $config['forumtextlength'])) {
  229. $newpost = $post['posts_text'] . '<br /><br />[i][small]Добавлено через ' . maketime(SITETIME - $post['posts_time']) . ' сек.[/small][/i]<br />' . $msg;
  230.  
  231. DB :: $dbh -> query("UPDATE `posts` SET `posts_text`=? WHERE `posts_id`=? LIMIT 1;", array($newpost, $post['posts_id']));
  232. } else {
  233. DB :: $dbh -> query("UPDATE `users` SET `users_allforum`=`users_allforum`+1, `users_point`=`users_point`+1, `users_money`=`users_money`+5 WHERE `users_login`=? LIMIT 1;", array($log));
  234.  
  235. DB :: $dbh -> query("INSERT INTO `posts` (`posts_topics_id`, `posts_forums_id`, `posts_user`, `posts_text`, `posts_time`, `posts_ip`, `posts_brow`) VALUES (?, ?, ?, ?, ?, ?, ?);", array($tid, $topics['topics_forums_id'], $log, $msg, SITETIME, $ip, $brow));
  236.  
  237. DB :: $dbh -> query("UPDATE `topics` SET `topics_posts`=`topics_posts`+1, `topics_last_user`=?, `topics_last_time`=? WHERE `topics_id`=?", array($log, SITETIME, $tid));
  238.  
  239. DB :: $dbh -> query("UPDATE `forums` SET `forums_posts`=`forums_posts`+1, `forums_last_id`=?, `forums_last_themes`=?, `forums_last_user`=?, `forums_last_time`=? WHERE `forums_id`=?;", array($tid, $topics['topics_title'], $log, SITETIME, $topics['topics_forums_id']));
  240. // Обновление родительского форума
  241. if ($topics['forums_parent'] > 0) {
  242. DB :: $dbh -> query("UPDATE `forums` SET `forums_last_id`=?, `forums_last_themes`=?, `forums_last_user`=?, `forums_last_time`=? WHERE `forums_id`=?;", array($tid, $topics['topics_title'], $log, SITETIME, $topics['forums_parent']));
  243. }
  244. }
  245.  
  246. $_SESSION['note'] = 'Сообщение успешно добавлено!';
  247. header ("Location: topic.php?act=end&tid=$tid&" . SID);
  248. exit;
  249. } else {
  250. show_error('Ошибка! Ваше сообщение повторяет предыдущий пост!');
  251. }
  252. } else {
  253. show_error('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
  254. }
  255. } else {
  256. show_error('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
  257. }
  258. } else {
  259. show_error('Ошибка! Запрещено писать в закрытую тему!');
  260. }
  261. } else {
  262. show_error('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
  263. }
  264. } else {
  265. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  266. }
  267. } else {
  268. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  269. }
  270. } else {
  271. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  272. }
  273.  
  274. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  275. break;
  276. # ###########################################################################################
  277. # # Жалоба на спам ##
  278. # ###########################################################################################
  279. case "spam":
  280.  
  281. $uid = check($_GET['uid']);
  282. $pid = abs(intval($_GET['pid']));
  283.  
  284. if (is_user()) {
  285. if ($uid == $_SESSION['token']) {
  286. $queryguest = DB :: $dbh -> query("SELECT * FROM `posts` WHERE `posts_id`=? LIMIT 1;", array($pid));
  287. $data = $queryguest -> fetch();
  288.  
  289. if (!empty($data)) {
  290. $queryspam = DB :: $dbh -> querySingle("SELECT `spam_id` FROM `spam` WHERE `spam_key`=? AND `spam_idnum`=? LIMIT 1;", array(1, $pid));
  291.  
  292. if (empty($queryspam)) {
  293. if (is_flood($log)) {
  294. DB :: $dbh -> query("INSERT INTO `spam` (`spam_key`, `spam_idnum`, `spam_user`, `spam_login`, `spam_text`, `spam_time`, `spam_addtime`, `spam_link`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array(1, $data['posts_id'], $log, $data['posts_user'], $data['posts_text'], $data['posts_time'], SITETIME, $config['home'] . '/forum/topic.php?tid=' . $tid . '&amp;start=' . $start));
  295.  
  296. $_SESSION['note'] = 'Жалоба успешно отправлена!';
  297. header ("Location: topic.php?tid=$tid&start=$start&" . SID);
  298. exit;
  299. } else {
  300. show_error('Антифлуд! Разрешается жаловаться на спам не чаще чем раз в ' . flood_period() . ' секунд!');
  301. }
  302. } else {
  303. show_error('Ошибка! Жалоба на данное сообщение уже отправлена!');
  304. }
  305. } else {
  306. show_error('Ошибка! Выбранное вами сообщение для жалобы не существует!');
  307. }
  308. } else {
  309. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  310. }
  311. } else {
  312. show_login('Вы не авторизованы, чтобы подать жалобу, необходимо');
  313. }
  314.  
  315. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  316. break;
  317. # ###########################################################################################
  318. # # Удаление сообщений ##
  319. # ###########################################################################################
  320. case "del":
  321. $uid = check($_GET['uid']);
  322. if (isset($_POST['del'])) {
  323. $del = intar($_POST['del']);
  324. } else {
  325. $del = 0;
  326. }
  327.  
  328. if (is_user()) {
  329. if ($uid == $_SESSION['token']) {
  330. if ($del > 0) {
  331. $querytopic = DB :: $dbh -> query("SELECT * FROM `topics` WHERE `topics_id`=? LIMIT 1;", array($tid));
  332. $topics = $querytopic -> fetch();
  333.  
  334. $minposts = DB :: $dbh -> querySingle("SELECT min(`posts_id`) FROM `posts` WHERE `posts_topics_id`=?;", array($tid));
  335.  
  336. if (!empty($topics['topics_mod'])) {
  337. $topics_mod = explode(',', $topics['topics_mod']);
  338. if (in_array($log, $topics_mod)) {
  339. if (!in_array($minposts, $del)) {
  340. $del = implode(',', $del);
  341.  
  342. $delposts = DB :: $dbh -> exec("DELETE FROM `posts` WHERE `posts_id` IN (" . $del . ") AND `posts_topics_id`=" . $tid . ";");
  343. DB :: $dbh -> query("UPDATE `topics` SET `topics_posts`=`topics_posts`-? WHERE `topics_id`=?", array($delposts, $tid));
  344. DB :: $dbh -> query("UPDATE `forums` SET `forums_posts`=`forums_posts`-? WHERE `forums_id`=?", array($delposts, $topics['topics_forums_id']));
  345.  
  346. $_SESSION['note'] = 'Выбранные сообщения успешно удалены!';
  347. header ("Location: topic.php?tid=$tid&start=$start&" . SID);
  348. exit;
  349. } else {
  350. show_error('Ошибка! Первое сообщение в теме удалять запрещено!');
  351. }
  352. } else {
  353. show_error('Ошибка! Удалять сообщения могут только кураторы темы!');
  354. }
  355. } else {
  356. show_error('Ошибка! В данной теме отсутствуют кураторы!');
  357. }
  358. } else {
  359. show_error('Ошибка! Отстутствуют выбранные сообщения для удаления!');
  360. }
  361. } else {
  362. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  363. }
  364. } else {
  365. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  366. }
  367.  
  368. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  369. break;
  370. # ###########################################################################################
  371. # # Закрытие темы ##
  372. # ###########################################################################################
  373. case "closed":
  374.  
  375. $uid = check($_GET['uid']);
  376.  
  377. if ($uid == $_SESSION['token']) {
  378. if (is_user()) {
  379. if ($udata['users_point'] >= $config['editforumpoint']) {
  380. $querytopic = DB :: $dbh -> query("SELECT * FROM `topics` WHERE `topics_id`=? LIMIT 1;", array($tid));
  381. $topics = $querytopic -> fetch();
  382.  
  383. if (!empty($topics)) {
  384. if ($topics['topics_author'] == $log) {
  385. if (empty($topics['topics_closed'])) {
  386. DB :: $dbh -> query("UPDATE `topics` SET `topics_closed`=? WHERE `topics_id`=?;", array(1, $tid));
  387.  
  388. $_SESSION['note'] = 'Тема успешно закрыта!';
  389. header ("Location: topic.php?tid=$tid&start=$start&" . SID);
  390. exit;
  391. } else {
  392. show_error('Ошибка! Данная тема уже закрыта!');
  393. }
  394. } else {
  395. show_error('Ошибка! Вы не автор данной темы!');
  396. }
  397. } else {
  398. show_error('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
  399. }
  400. } else {
  401. show_error('Ошибка! У вас недостаточно актива для закрытия тем!');
  402. }
  403. } else {
  404. show_login('Вы не авторизованы, чтобы закрывать темы, необходимо');
  405. }
  406. } else {
  407. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  408. }
  409.  
  410. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  411. break;
  412. # ###########################################################################################
  413. # # Ответ на сообщение ##
  414. # ###########################################################################################
  415. case "reply":
  416.  
  417. $pid = abs(intval($_GET['pid']));
  418. $num = abs(intval($_GET['num']));
  419.  
  420. echo '<b><big>Ответ на сообщение</big></b><br /><br />';
  421.  
  422. if (is_user()) {
  423. $post = DB :: $dbh -> queryFetch("SELECT `posts`.*, `topics`.`topics_closed` FROM `posts` LEFT JOIN `topics` ON `posts`.`posts_topics_id`=`topics`.`topics_id` WHERE `posts_id`=? LIMIT 1;", array($pid));
  424.  
  425. if (!empty($post)) {
  426. if (empty($post['topics_closed'])) {
  427. echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> <b><a href="../pages/anketa.php?uz=' . $post['posts_user'] . '&amp;' . SID . '">' . nickname($post['posts_user']) . '</a></b> ' . user_title($post['posts_user']) . ' ' . user_online($post['posts_user']) . ' <small>(' . date_fixed($post['posts_time']) . ')</small></div>';
  428. echo '<div>Сообщение: ' . bb_code($post['posts_text']) . '</div><hr />';
  429.  
  430. echo '<div class="form" id="form">';
  431. echo '<form action="topic.php?act=add&amp;tid=' . $post['posts_topics_id'] . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  432. echo 'Сообщение:<br />';
  433. echo '<textarea cols="25" rows="5" name="msg" id="msg">' . $num . '. [b]' . nickname($post['posts_user']) . '[/b], </textarea><br />';
  434.  
  435. if (!empty($udata['users_bbpanel'])) {
  436. quickpaste('msg');
  437. quickcode();
  438. quicksmiles();
  439. }
  440.  
  441. echo '<input type="submit" value="Ответить" /></form></div><br />';
  442. } else {
  443. show_error('Данная тема закрыта для обсуждения!');
  444. }
  445. } else {
  446. show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
  447. }
  448. } else {
  449. show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
  450. }
  451.  
  452. echo '<a href="#up"><img src="../images/img/ups.gif" alt="up" /></a> ';
  453. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  454. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a> / ';
  455. echo '<a href="../pages/rules.php?' . SID . '">Правила</a><br />';
  456.  
  457. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  458. break;
  459. # ###########################################################################################
  460. # # Цитирование сообщения ##
  461. # ###########################################################################################
  462. case "quote":
  463.  
  464. $pid = abs(intval($_GET['pid']));
  465.  
  466. echo '<b><big>Цитирование</big></b><br /><br />';
  467. if (is_user()) {
  468. $post = DB :: $dbh -> queryFetch("SELECT `posts`.*, `topics`.`topics_closed` FROM `posts` LEFT JOIN `topics` ON `posts`.`posts_topics_id`=`topics`.`topics_id` WHERE `posts_id`=? LIMIT 1;", array($pid));
  469.  
  470. if (!empty($post)) {
  471. if (empty($post['topics_closed'])) {
  472. $post['posts_text'] = nosmiles($post['posts_text']);
  473. $post['posts_text'] = preg_replace('|\[q\](.*?)\[/q\](<br />)?|', '', $post['posts_text']);
  474. $post['posts_text'] = str_replace('<br />', "\r\n", $post['posts_text']);
  475.  
  476. echo '<div class="form" id="form">';
  477. echo '<form action="topic.php?act=add&amp;tid=' . $post['posts_topics_id'] . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  478. echo 'Сообщение:<br />';
  479. echo '<textarea cols="25" rows="5" name="msg" id="msg">[q][b]' . nickname($post['posts_user']) . '[/b] (' . date_fixed($post['posts_time'], 'j F Y / H:i') . ')' . "\r\n" . $post['posts_text'] . '[/q]' . "\r\n" . '</textarea><br />';
  480.  
  481. if (!empty($udata['users_bbpanel'])) {
  482. quickpaste('msg');
  483. quickcode();
  484. quicksmiles();
  485. }
  486.  
  487. echo '<input type="submit" value="Цитировать" /></form></div><br />';
  488. } else {
  489. show_error('Данная тема закрыта для обсуждения!');
  490. }
  491. } else {
  492. show_error('Ошибка! Выбранное вами сообщение для цитирования не существует!');
  493. }
  494. } else {
  495. show_login('Вы не авторизованы, чтобы цитировать сообщения, необходимо');
  496. }
  497.  
  498. echo '<a href="#up"><img src="../images/img/ups.gif" alt="up" /></a> ';
  499. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  500. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a> / ';
  501. echo '<a href="../pages/rules.php?' . SID . '">Правила</a><br />';
  502.  
  503. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  504. break;
  505. # ###########################################################################################
  506. # # Подготовка к изменению ##
  507. # ###########################################################################################
  508. case "edittopic":
  509.  
  510. echo '<b><big>Изменение темы</big></b><br /><br />';
  511.  
  512. if (is_user()) {
  513. if ($udata['users_point'] >= $config['editforumpoint']) {
  514. $topics = DB :: $dbh -> queryFetch("SELECT * FROM `topics` WHERE `topics_id`=? LIMIT 1;", array($tid));
  515.  
  516. if (!empty($topics)) {
  517. if ($topics['topics_author'] == $log) {
  518. if (empty($topics['topics_closed'])) {
  519. $post = DB :: $dbh -> queryFetch("SELECT * FROM `posts` WHERE `posts_topics_id`=? ORDER BY posts_id ASC LIMIT 1;", array($tid));
  520. if (!empty($post)) {
  521. $post['posts_text'] = nosmiles($post['posts_text']);
  522. $post['posts_text'] = yes_br($post['posts_text']);
  523.  
  524. echo '<img src="../images/img/edit.gif" alt="image" /> <b>' . nickname($post['posts_user']) . '</b> <small>(' . date_fixed($post['posts_time']) . ')</small><br /><br />';
  525.  
  526. echo '<div class="form" id="form">';
  527. echo '<form action="topic.php?act=changetopic&amp;tid=' . $post['posts_topics_id'] . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  528.  
  529. echo 'Заголовок:<br />';
  530. echo '<input type="text" name="title" size="50" maxlength="50" value="' . $topics['topics_title'] . '" /><br />';
  531. echo 'Сообщение:<br />';
  532. echo '<textarea cols="25" rows="5" name="msg" id="msg">' . $post['posts_text'] . '</textarea><br />';
  533.  
  534. if (!empty($udata['users_bbpanel'])) {
  535. quickpaste('msg');
  536. quickcode();
  537. quicksmiles();
  538. }
  539.  
  540. echo '<input value="Редактировать" name="do" type="submit" /></form></div><br />';
  541. } else {
  542. show_error('Ошибка! Первого сообщения в теме не существует!');
  543. }
  544. } else {
  545. show_error('Ошибка! Изменение невозможно, данная тема закрыта!');
  546. }
  547. } else {
  548. show_error('Ошибка! Изменение невозможно, вы не автор данной темы!');
  549. }
  550. } else {
  551. show_error('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
  552. }
  553. } else {
  554. show_error('Ошибка! У вас недостаточно актива для изменения темы!');
  555. }
  556. } else {
  557. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  558. }
  559.  
  560. echo '<a href="#up"><img src="../images/img/ups.gif" alt="up" /></a> ';
  561. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  562. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a> / ';
  563. echo '<a href="../pages/rules.php?' . SID . '">Правила</a><br />';
  564.  
  565. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;' . SID . '">Вернуться</a><br />';
  566. break;
  567. # ###########################################################################################
  568. # # Изменение темы и сообщения ##
  569. # ###########################################################################################
  570. case "changetopic":
  571.  
  572. $uid = check($_GET['uid']);
  573. $title = check($_POST['title']);
  574. $msg = check($_POST['msg']);
  575.  
  576. if (is_user()) {
  577. if ($uid == $_SESSION['token']) {
  578. if ($udata['users_point'] >= $config['editforumpoint']) {
  579. $querytopic = DB :: $dbh -> query("SELECT * FROM `topics` WHERE `topics_id`=? LIMIT 1;", array($tid));
  580. $topics = $querytopic -> fetch();
  581.  
  582. if (!empty($topics)) {
  583. if ($topics['topics_author'] == $log) {
  584. if (empty($topics['topics_closed'])) {
  585. $minposts = DB :: $dbh -> querySingle("SELECT MIN(`posts_id`) FROM `posts` WHERE `posts_topics_id`=?;", array($tid));
  586. if (!empty($minposts)) {
  587. if (utf_strlen($title) >= 5 && utf_strlen($title) <= 50) {
  588. if (utf_strlen($msg) >= 5 && utf_strlen($msg) <= $config['forumtextlength']) {
  589. $msg = no_br($msg);
  590. $msg = antimat($msg);
  591. $msg = smiles($msg);
  592.  
  593. DB :: $dbh -> query("UPDATE `topics` SET `topics_title`=? WHERE topics_id=?;", array($title, $tid));
  594. DB :: $dbh -> query("UPDATE `posts` SET `posts_user`=?, `posts_text`=?, `posts_ip`=?, `posts_brow`=?, `posts_edit`=?, `posts_edit_time`=? WHERE `posts_id`=?", array($log, $msg, $ip, $brow, $log, SITETIME, $minposts));
  595.  
  596. $_SESSION['note'] = 'Тема успешно изменена!';
  597. header ("Location: topic.php?tid=$tid&" . SID);
  598. exit;
  599. } else {
  600. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  601. }
  602. } else {
  603. show_error('Ошибка! Слишком длинный или короткий заголовок темы!');
  604. }
  605. } else {
  606. show_error('Ошибка! Первого сообщения в теме не существует!');
  607. }
  608. } else {
  609. show_error('Ошибка! Изменение невозможно, данная тема закрыта!');
  610. }
  611. } else {
  612. show_error('Ошибка! Изменение невозможно, вы не автор данной темы!');
  613. }
  614. } else {
  615. show_error('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
  616. }
  617. } else {
  618. show_error('Ошибка! У вас недостаточно актива для зменения темы!');
  619. }
  620. } else {
  621. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  622. }
  623. } else {
  624. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  625. }
  626.  
  627. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?act=edittopic&amp;tid=' . $tid . '&amp;' . SID . '">Вернуться</a><br />';
  628. break;
  629. # ###########################################################################################
  630. # # Подготовка к редактированию ##
  631. # ###########################################################################################
  632. case "edit":
  633.  
  634. $pid = abs(intval($_GET['pid']));
  635.  
  636. if (is_user()) {
  637. $querypost = DB :: $dbh -> query("SELECT * FROM `posts` WHERE `posts_id`=? AND `posts_user`=? LIMIT 1;", array($pid, $log));
  638. $post = $querypost -> fetch();
  639.  
  640. if (!empty($post)) {
  641. if ($post['posts_time'] + 600 > SITETIME) {
  642. $post['posts_text'] = nosmiles($post['posts_text']);
  643. $post['posts_text'] = str_replace('<br />', "\r\n", $post['posts_text']);
  644.  
  645. echo '<img src="../images/img/edit.gif" alt="image" /> <b>' . nickname($post['posts_user']) . '</b> <small>(' . date_fixed($post['posts_time']) . ')</small><br /><br />';
  646.  
  647. echo '<div class="form" id="form">';
  648. echo '<form action="topic.php?act=editpost&amp;tid=' . $post['posts_topics_id'] . '&amp;pid=' . $pid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  649. echo 'Редактирование сообщения:<br />';
  650. echo '<textarea cols="25" rows="5" name="msg" id="msg">' . $post['posts_text'] . '</textarea><br />';
  651.  
  652. if (!empty($udata['users_bbpanel'])) {
  653. quickpaste('msg');
  654. quickcode();
  655. quicksmiles();
  656. }
  657.  
  658. echo '<input value="Редактировать" name="do" type="submit" /></form></div><br />';
  659. } else {
  660. show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
  661. }
  662. } else {
  663. show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
  664. }
  665. } else {
  666. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  667. }
  668.  
  669. echo '<a href="#up"><img src="../images/img/ups.gif" alt="up" /></a> ';
  670. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  671. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a> / ';
  672. echo '<a href="../pages/rules.php?' . SID . '">Правила</a><br />';
  673.  
  674. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?tid=' . $tid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  675. break;
  676. # ###########################################################################################
  677. # # Редактирование сообщения ##
  678. # ###########################################################################################
  679. case "editpost":
  680.  
  681. $uid = check($_GET['uid']);
  682. $pid = abs(intval($_GET['pid']));
  683. $msg = check($_POST['msg']);
  684.  
  685. if (is_user()) {
  686. if ($uid == $_SESSION['token']) {
  687. if (utf_strlen($msg) >= 5 && utf_strlen($msg) <= $config['forumtextlength']) {
  688. $querypost = DB :: $dbh -> query("SELECT * FROM `posts` WHERE `posts_id`=? AND `posts_user`=? LIMIT 1;", array($pid, $log));
  689. $post = $querypost -> fetch();
  690.  
  691. if (!empty($post)) {
  692. if ($post['posts_time'] + 600 > SITETIME) {
  693. $msg = no_br($msg);
  694. $msg = antimat($msg);
  695. $msg = smiles($msg);
  696.  
  697. DB :: $dbh -> query("UPDATE `posts` SET `posts_text`=?, `posts_edit`=?, `posts_edit_time`=? WHERE `posts_id`=?", array($msg, $log, SITETIME, $pid));
  698.  
  699. $_SESSION['note'] = 'Сообщение успешно отредактировано!';
  700. header ("Location: topic.php?tid=$tid&start=$start&" . SID);
  701. exit;
  702. } else {
  703. show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
  704. }
  705. } else {
  706. show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
  707. }
  708. } else {
  709. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  710. }
  711. } else {
  712. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  713. }
  714. } else {
  715. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  716. }
  717.  
  718. echo '<img src="../images/img/back.gif" alt="image" /> <a href="topic.php?act=edit&amp;tid=' . $tid . '&amp;pid=' . $pid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  719. break;
  720. # ###########################################################################################
  721. # # Переход к сообщению ##
  722. # ###########################################################################################
  723. case 'viewpost':
  724.  
  725. if (isset($_GET['id'])) {
  726. $id = abs(intval($_GET['id']));
  727. } else {
  728. $id = 0;
  729. }
  730. if (isset($_GET['tid'])) {
  731. $tid = abs(intval($_GET['tid']));
  732. } else {
  733. $tid = 0;
  734. }
  735.  
  736. $querytopic = DB :: $dbh -> querySingle("SELECT COUNT(*) FROM `posts` WHERE `posts_id`<=? AND `posts_topics_id`=? ORDER BY `posts_time` ASC LIMIT 1;", array($id, $tid));
  737.  
  738. if (!empty($querytopic)) {
  739. $end = floor(($querytopic - 1) / $config['forumpost']) * $config['forumpost'];
  740.  
  741. header ("Location: topic.php?tid=$tid&start=$end&" . SID);
  742. exit;
  743. } else {
  744. show_error('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
  745. }
  746. break;
  747. # ###########################################################################################
  748. # # Переадресация на последнюю страницу ##
  749. # ###########################################################################################
  750. case "end":
  751.  
  752. $querytopic = DB :: $dbh -> querySingle("SELECT `topics_posts` FROM `topics` WHERE `topics_id`=? LIMIT 1;", array($tid));
  753.  
  754. if (!empty($querytopic)) {
  755. $end = floor(($querytopic - 1) / $config['forumpost']) * $config['forumpost'];
  756.  
  757. header ("Location: topic.php?tid=$tid&start=$end&" . SID);
  758. exit;
  759. } else {
  760. show_error('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
  761. }
  762. break;
  763.  
  764. default:
  765. header("location: index.php?" . SID);
  766. exit;
  767. endswitch;
  768.  
  769. echo '<img src="../images/img/reload.gif" alt="image" /> <a href="index.php?' . SID . '">К форумам</a><br />';
  770. echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a>';
  771.  
  772. include_once ('../themes/' . $config['themes'] . '/foot.php');
  773.  
  774. ?>