Просмотр файла book/index.php

Размер файла: 21.4Kb
  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['act'])) {
  18. $act = check($_GET['act']);
  19. } else {
  20. $act = 'index';
  21. }
  22. if (isset($_GET['start'])) {
  23. $start = abs(intval($_GET['start']));
  24. } else {
  25. $start = 0;
  26. }
  27.  
  28. show_title('site.png', 'Гостевая книга');
  29. $config['newtitle'] = 'Гостевая книга';
  30.  
  31. switch ($act):
  32. # ###########################################################################################
  33. # # Главная страница ##
  34. # ###########################################################################################
  35. case "index":
  36.  
  37. echo '<a href="#down"><img src="../images/img/downs.gif" alt="down" /></a> ';
  38. echo '<a href="index.php?rand=' . mt_rand(100, 999) . '&amp;' . SID . '">Обновить</a>';
  39. if (is_admin(array(101, 102, 103, 105))) {
  40. echo ' / <a href="' . ADMINDIR . 'book.php?start=' . $start . '&amp;' . SID . '">Управление</a>';
  41. }
  42. echo '<hr />';
  43.  
  44. $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `guest`;");
  45.  
  46. if ($total > 0) {
  47. if ($start >= $total) {
  48. $start = 0;
  49. }
  50.  
  51. $page = floor(1 + $start / $config['bookpost']);
  52. $config['newtitle'] = 'Гостевая книга (Стр. ' . $page . ')';
  53.  
  54. $queryguest = DB :: $dbh -> query("SELECT * FROM `guest` ORDER BY `guest_time` DESC LIMIT " . $start . ", " . $config['bookpost'] . ";");
  55.  
  56. while ($data = $queryguest -> fetch()) {
  57. echo '<div class="b">';
  58. echo '<div class="img">' . user_avatars($data['guest_user']) . '</div>';
  59.  
  60. if ($data['guest_user'] == $config['guestsuser']) {
  61. echo '<b>' . $data['guest_user'] . '</b> <small>(' . date_fixed($data['guest_time']) . ')</small>';
  62. } else {
  63. echo '<b><a href="../pages/anketa.php?uz=' . $data['guest_user'] . '&amp;' . SID . '">' . nickname($data['guest_user']) . '</a></b> <small>(' . date_fixed($data['guest_time']) . ')</small><br />';
  64. echo user_title($data['guest_user']) . ' ' . user_online($data['guest_user']);
  65. }
  66.  
  67. echo '</div>';
  68.  
  69. if (!empty($log) && $log != $data['guest_user']) {
  70. echo '<div class="right">';
  71. echo '<a href="index.php?act=reply&amp;id=' . $data['guest_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Отв</a> / ';
  72. echo '<a href="index.php?act=quote&amp;id=' . $data['guest_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Цит</a> / ';
  73. echo '<a href="index.php?act=spam&amp;id=' . $data['guest_id'] . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" onclick="return confirm(\'Вы подтверждаете факт спама?\')">Спам</a></div>';
  74. }
  75.  
  76. if ($log == $data['guest_user'] && $data['guest_time'] + 600 > SITETIME) {
  77. echo '<div class="right"><a href="index.php?act=edit&amp;id=' . $data['guest_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Редактировать</a></div>';
  78. }
  79.  
  80. echo '<div>' . bb_code($data['guest_text']) . '<br />';
  81.  
  82. if (!empty($data['guest_edit'])) {
  83. echo '<img src="../images/img/exclamation_small.gif" alt="image" /> <small>Отредактировано: ' . nickname($data['guest_edit']) . ' (' . date_fixed($data['guest_edit_time']) . ')</small><br />';
  84. }
  85.  
  86. if (is_admin() || empty($config['anonymity'])) {
  87. echo '<span class="data">(' . $data['guest_brow'] . ', ' . $data['guest_ip'] . ')</span>';
  88. }
  89.  
  90. if (!empty($data['guest_reply'])) {
  91. echo '<br /><span style="color:#ff0000">Ответ: ' . $data['guest_reply'] . '</span>';
  92. }
  93.  
  94. echo '</div>';
  95. }
  96.  
  97. page_strnavigation('index.php?', $config['bookpost'], $start, $total);
  98. } else {
  99. show_error('Сообщений нет, будь первым!');
  100. }
  101.  
  102. if (is_user()) {
  103. echo '<div class="form" id="form">';
  104. echo '<form action="index.php?act=add&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  105. echo 'Сообщение:<br />';
  106. echo '<textarea cols="25" rows="3" name="msg"></textarea><br />';
  107.  
  108. if (!empty($udata['users_bbpanel'])) {
  109. quickpaste('msg');
  110. quickcode();
  111. quicksmiles();
  112. }
  113.  
  114. echo '<input type="submit" value="Написать" /></form></div><br />';
  115. } elseif ($config['bookadds'] == 1) {
  116. echo '<div class="form" id="form">';
  117. echo '<form action="index.php?act=add&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
  118. echo 'Сообщение:<br />';
  119. echo '<textarea cols="25" rows="3" name="msg"></textarea><br />';
  120.  
  121. echo 'Проверочный код:<br /> ';
  122. echo '<input name="provkod" size="6" maxlength="6" /> ';
  123.  
  124. if ($config['protectimg'] == 1) {
  125. echo '<img src="../gallery/protect.php?' . SID . '" alt="" /><br />';
  126. } else {
  127. echo '<b>' . $_SESSION['protect'] . '</b><br />';
  128. }
  129.  
  130. echo '<br /><input type="submit" value="Написать" /></form></div><br />';
  131. } else {
  132. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  133. }
  134.  
  135. echo '<a href="#up"><img src="../images/img/ups.gif" alt="image" /></a> ';
  136. echo '<a href="../pages/rules.php?' . SID . '">Правила</a> / ';
  137. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  138. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a><br /><br />';
  139. break;
  140. # ###########################################################################################
  141. # # Добавление сообщения ##
  142. # ###########################################################################################
  143. case "add":
  144.  
  145. $msg = check($_POST['msg']);
  146. $uid = check($_GET['uid']);
  147.  
  148. if (is_user()) {
  149. if ($uid == $_SESSION['token']) {
  150. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < $config['guesttextlength']) {
  151. if (is_quarantine($log) || $config['bookadds'] == 1) {
  152. if (is_flood($log)) {
  153. $msg = no_br($msg);
  154. $msg = antimat($msg);
  155. $msg = smiles($msg);
  156.  
  157. DB :: $dbh -> query("UPDATE `users` SET `users_allguest`=`users_allguest`+1, `users_point`=`users_point`+1, `users_money`=`users_money`+5 WHERE `users_login`=?", array($log));
  158.  
  159. DB :: $dbh -> query("INSERT INTO `guest` (`guest_user`, `guest_text`, `guest_ip`, `guest_brow`, `guest_time`) VALUES (?, ?, ?, ?, ?);", array($log, $msg, $ip, $brow, SITETIME));
  160.  
  161. DB :: $dbh -> query("DELETE FROM `guest` WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM `guest` ORDER BY `guest_time` DESC LIMIT " . $config['maxpostbook'] . ") AS del);");
  162.  
  163. $_SESSION['note'] = 'Сообщение успешно добавлено!';
  164. header ("Location: index.php?" . SID);
  165. exit;
  166. } else {
  167. show_error('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
  168. }
  169. } else {
  170. show_error('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
  171. }
  172. } else {
  173. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  174. }
  175. } else {
  176. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  177. }
  178. # ###########################################################################################
  179. # # Добавление для гостей ##
  180. # ###########################################################################################
  181. } elseif ($config['bookadds'] == 1) {
  182. $provkod = (int)$_POST['provkod'];
  183.  
  184. if ($uid == $_SESSION['token']) {
  185. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < $config['guesttextlength']) {
  186. if ($provkod == $_SESSION['protect']) {
  187. if (is_flood($log)) {
  188. unset($_SESSION['protect']);
  189.  
  190. $msg = no_br($msg);
  191. $msg = antimat($msg);
  192. $msg = smiles($msg);
  193.  
  194. DB :: $dbh -> query("INSERT INTO `guest` (`guest_user`, `guest_text`, `guest_ip`, `guest_brow`, `guest_time`) VALUES (?, ?, ?, ?, ?);", array($config['guestsuser'], $msg, $ip, $brow, SITETIME));
  195.  
  196. DB :: $dbh -> query("DELETE FROM `guest` WHERE `guest_time` < (SELECT MIN(`guest_time`) FROM (SELECT `guest_time` FROM `guest` ORDER BY `guest_time` DESC LIMIT " . $config['maxpostbook'] . ") AS del);");
  197.  
  198. $_SESSION['note'] = 'Сообщение успешно добавлено!';
  199. header ("Location: index.php?" . SID);
  200. exit;
  201. } else {
  202. show_error('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
  203. }
  204. } else {
  205. show_error('Ошибка! Проверочное число не совпало с данными на картинке!');
  206. }
  207. } else {
  208. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  209. }
  210. } else {
  211. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  212. }
  213. } else {
  214. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  215. }
  216.  
  217. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?' . SID . '">Вернуться</a><br />';
  218. break;
  219. # ###########################################################################################
  220. # # Жалоба на спам ##
  221. # ###########################################################################################
  222. case "spam":
  223.  
  224. $uid = check($_GET['uid']);
  225. $id = abs(intval($_GET['id']));
  226.  
  227. if (is_user()) {
  228. if ($uid == $_SESSION['token']) {
  229. $queryguest = DB :: $dbh -> query("SELECT * FROM `guest` WHERE `guest_id`=? LIMIT 1;", array($id));
  230. $data = $queryguest -> fetch();
  231.  
  232. if (!empty($data)) {
  233. $queryspam = DB :: $dbh -> querySingle("SELECT `spam_id` FROM `spam` WHERE `spam_key`=? AND `spam_idnum`=? LIMIT 1;", array(2, $id));
  234.  
  235. if (empty($queryspam)) {
  236. if (is_flood($log)) {
  237. DB :: $dbh -> query("INSERT INTO `spam` (`spam_key`, `spam_idnum`, `spam_user`, `spam_login`, `spam_text`, `spam_time`, `spam_addtime`, `spam_link`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array(2, $data['guest_id'], $log, $data['guest_user'], $data['guest_text'], $data['guest_time'], SITETIME, $config['home'] . '/book/index.php?start=' . $start));
  238.  
  239. $_SESSION['note'] = 'Жалоба успешно отправлена!';
  240. header ("Location: index.php?start=$start&" . SID);
  241. exit;
  242. } else {
  243. show_error('Антифлуд! Разрешается жаловаться на спам не чаще чем раз в ' . flood_period() . ' секунд!');
  244. }
  245. } else {
  246. show_error('Ошибка! Жалоба на данное сообщение уже отправлена!');
  247. }
  248. } else {
  249. show_error('Ошибка! Выбранное вами сообщение для жалобы не существует!');
  250. }
  251. } else {
  252. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  253. }
  254. } else {
  255. show_login('Вы не авторизованы, чтобы подать жалобу, необходимо');
  256. }
  257.  
  258. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  259. break;
  260. # ###########################################################################################
  261. # # Ответ на сообщение ##
  262. # ###########################################################################################
  263. case "reply":
  264.  
  265. $id = abs(intval($_GET['id']));
  266.  
  267. echo '<b><big>Ответ на сообщение</big></b><br /><br />';
  268.  
  269. if (is_user()) {
  270. $queryguest = DB :: $dbh -> query("SELECT * FROM `guest` WHERE `guest_id`=? LIMIT 1;", array($id));
  271. $post = $queryguest -> fetch();
  272.  
  273. if (!empty($post)) {
  274. echo '<div class="b">';
  275. echo '<div class="img">' . user_avatars($post['guest_user']) . '</div>';
  276.  
  277. if ($post['guest_user'] == $config['guestsuser']) {
  278. echo '<b>' . $post['guest_user'] . '</b> <small>(' . date_fixed($post['guest_time']) . ')</small>';
  279. } else {
  280. echo '<b><a href="../pages/anketa.php?uz=' . $post['guest_user'] . '&amp;' . SID . '">' . nickname($post['guest_user']) . '</a></b> <small>(' . date_fixed($post['guest_time']) . ')</small><br />';
  281. echo user_title($post['guest_user']) . ' ' . user_online($post['guest_user']);
  282. }
  283. echo '</div>';
  284. echo '<div>Сообщение: ' . bb_code($post['guest_text']) . '</div><hr />';
  285.  
  286. echo '<div class="form" id="form">';
  287. echo '<form action="index.php?act=add&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  288. echo 'Сообщение:<br />';
  289. echo '<textarea cols="25" rows="5" name="msg" id="msg">[b]' . nickname($post['guest_user']) . '[/b], </textarea><br />';
  290.  
  291. if (!empty($udata['users_bbpanel'])) {
  292. quickpaste('msg');
  293. quickcode();
  294. quicksmiles();
  295. }
  296.  
  297. echo '<input type="submit" value="Ответить" /></form></div><br />';
  298. } else {
  299. show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
  300. }
  301. } else {
  302. show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
  303. }
  304.  
  305. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  306. break;
  307. # ###########################################################################################
  308. # # Цитирование сообщения ##
  309. # ###########################################################################################
  310. case "quote":
  311.  
  312. $id = abs(intval($_GET['id']));
  313.  
  314. echo '<b><big>Цитирование</big></b><br /><br />';
  315. if (is_user()) {
  316. $queryguest = DB :: $dbh -> query("SELECT * FROM `guest` WHERE `guest_id`=? LIMIT 1;", array($id));
  317. $post = $queryguest -> fetch();
  318.  
  319. if (!empty($post)) {
  320. $post['guest_text'] = nosmiles($post['guest_text']);
  321. $post['guest_text'] = preg_replace('|\[q\](.*?)\[/q\](<br />)?|', '', $post['guest_text']);
  322. $post['guest_text'] = str_replace('<br />', "\r\n", $post['guest_text']);
  323.  
  324. echo '<div class="form" id="form">';
  325. echo '<form action="index.php?act=add&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  326. echo 'Сообщение:<br />';
  327. echo '<textarea cols="25" rows="5" name="msg" id="msg">[q][b]' . nickname($post['guest_user']) . '[/b] (' . date_fixed($post['guest_time']) . ')' . "\r\n" . $post['guest_text'] . '[/q]' . "\r\n" . '</textarea><br />';
  328.  
  329. if (!empty($udata['users_bbpanel'])) {
  330. quickpaste('msg');
  331. quickcode();
  332. quicksmiles();
  333. }
  334.  
  335. echo '<input type="submit" value="Цитировать" /></form></div><br />';
  336. } else {
  337. show_error('Ошибка! Выбранное вами сообщение для цитирования не существует!');
  338. }
  339. } else {
  340. show_login('Вы не авторизованы, чтобы цитировать сообщения, необходимо');
  341. }
  342.  
  343. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  344. break;
  345. # ###########################################################################################
  346. # # Подготовка к редактированию ##
  347. # ###########################################################################################
  348. case "edit":
  349.  
  350. $id = abs(intval($_GET['id']));
  351.  
  352. if (is_user()) {
  353. $querypost = DB :: $dbh -> query("SELECT * FROM `guest` WHERE `guest_id`=? AND `guest_user`=? LIMIT 1;", array($id, $log));
  354. $post = $querypost -> fetch();
  355.  
  356. if (!empty($post)) {
  357. if ($post['guest_time'] + 600 > SITETIME) {
  358. $post['guest_text'] = nosmiles($post['guest_text']);
  359. $post['guest_text'] = str_replace('<br />', "\r\n", $post['guest_text']);
  360.  
  361. echo '<img src="../images/img/edit.gif" alt="image" /> <b>' . nickname($post['guest_user']) . '</b> <small>(' . date_fixed($post['guest_time']) . ')</small><br /><br />';
  362.  
  363. echo '<div class="form" id="form">';
  364. echo '<form action="index.php?act=editpost&amp;id=' . $id . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  365. echo 'Редактирование сообщения:<br />';
  366. echo '<textarea cols="25" rows="5" name="msg">' . $post['guest_text'] . '</textarea><br />';
  367.  
  368. if (!empty($udata['users_bbpanel'])) {
  369. quickpaste('msg');
  370. quickcode();
  371. quicksmiles();
  372. }
  373.  
  374. echo '<input value="Редактировать" name="do" type="submit" /></form></div><br />';
  375. } else {
  376. show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
  377. }
  378. } else {
  379. show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
  380. }
  381. } else {
  382. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  383. }
  384.  
  385. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  386. break;
  387. # ###########################################################################################
  388. # # Редактирование сообщения ##
  389. # ###########################################################################################
  390. case "editpost":
  391.  
  392. $uid = check($_GET['uid']);
  393. $id = abs(intval($_GET['id']));
  394. $msg = check($_POST['msg']);
  395.  
  396. if (is_user()) {
  397. if ($uid == $_SESSION['token']) {
  398. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < $config['guesttextlength']) {
  399. $querypost = DB :: $dbh -> query("SELECT * FROM `guest` WHERE `guest_id`=? AND `guest_user`=? LIMIT 1;", array($id, $log));
  400. $post = $querypost -> fetch();
  401.  
  402. if (!empty($post)) {
  403. if ($post['guest_time'] + 600 > SITETIME) {
  404. $msg = no_br($msg);
  405. $msg = antimat($msg);
  406. $msg = smiles($msg);
  407.  
  408. DB :: $dbh -> query("UPDATE `guest` SET `guest_text`=?, `guest_edit`=?, `guest_edit_time`=? WHERE `guest_id`=?", array($msg, $log, SITETIME, $id));
  409.  
  410. $_SESSION['note'] = 'Сообщение успешно отредактировано!';
  411. header ("Location: index.php?start=$start&" . SID);
  412. exit;
  413. } else {
  414. show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
  415. }
  416. } else {
  417. show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
  418. }
  419. } else {
  420. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  421. }
  422. } else {
  423. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  424. }
  425. } else {
  426. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  427. }
  428.  
  429. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?act=edit&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  430. echo '<img src="../images/img/reload.gif" alt="image" /> <a href="index.php?start=' . $start . '&amp;' . SID . '">В гостевую</a><br />';
  431. break;
  432.  
  433. default:
  434. header("location: index.php?" . SID);
  435. endswitch;
  436.  
  437. echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a>';
  438.  
  439. include_once ("../themes/" . $config['themes'] . "/foot.php");
  440.  
  441. ?>