Просмотр файла pages/guestbook.php

Размер файла: 5.53Kb
  1. <?php
  2. include '../engine/includes/start.php';
  3. $set['title']='Гостевая книга'; // заголовок страницы
  4. include H.'engine/includes/head.php';
  5. Core::get(array('page.class', 'text.class', 'cache.class'), 'classes');
  6. if (!$admin)$act = null;
  7.  
  8. switch($act)
  9. {
  10. case 'clean':
  11.  
  12. if (isset($_POST['write'], $_POST['write2']))
  13. {
  14. $timeclear1 = 0;
  15. if ($_POST['write2']=='sut')
  16. $timeclear1 = time() - intval($_POST['write']) * 60 * 60 * 24;
  17. elseif ($_POST['write2']=='mes')
  18. $timeclear1 = time() - intval($_POST['write']) * 60 * 60 * 24 * 30;
  19. $deletes = $sql->query('DELETE FROM `guest` WHERE `time` > '.$timeclear1)->num_rows();
  20. $sql->query('OPTIMIZE TABLE `guest`');
  21. Core::msg_show( ' Удалено постов: '.$deletes);
  22. Cache::multi_delete('guestbook', tmpDir);
  23. }
  24. else
  25. ?>
  26. <form method = "post" class='post' action="?act=clean">
  27. Будут удалены посты, написаные ... тому назад<br />
  28. <input name = "write" value="12" type="text" size='3' />
  29. <select name = "write2">
  30. <option value="">-------</option>
  31. <option value="mes">Месяцев</option>
  32. <option value="sut">Суток</option>
  33. </select><br />
  34. <input value="Очистить" type="submit" /><br />
  35. <a href="?">Отмена</a><br />
  36. </form>
  37. <?php
  38. include H.'engine/includes/foot.php';
  39. break;
  40.  
  41.  
  42. case 'del':
  43. if ($sql->query("SELECT COUNT(*) FROM `guest` WHERE `id` = '".$id."'")->result() == 1)
  44. {
  45. $sql->query("DELETE FROM `guest` WHERE `id` = '$id' limit 1");
  46. Core::msg_show('Сообщение удалено');
  47. Cache::multi_delete('guestbook', tmpDir);
  48. }
  49. break;
  50.  
  51. case 'uninstall':
  52. if ($creator)
  53. {
  54. if (isset($_GET['yes']))
  55. {
  56. $sql->multi("DROP TABLE `guest`;DELETE FROM `modules` where `name` = 'gBook';DELETE FROM `module_services` where `belongs` = 'gBook';");
  57. unlink(H . 'engine/services/guestbook.php');
  58. unlink(H . 'pages/guestbook.php');
  59. Cache::multi_delete('guestbook', tmpDir);
  60. echo 'Мини-чат удален';
  61. }
  62. else
  63. echo 'Вы действительно хотите удалить модуль "Мини-чат"?<br /><a href="?act=uninstall&amp;yes">[ Да ]</a> | <a href="?">[ Нет ]</a>';
  64. include H.'engine/includes/foot.php';
  65. }
  66. break;
  67. }
  68.  
  69. if (isset($_POST['msg']) && $user_id)
  70. {
  71. $msg = my_esc($_POST['msg']);
  72. $mat = text::antimat($msg, $user);
  73. $length = mb_Strlen($msg);
  74.  
  75. if ($mat)
  76. $err = 'В тексте сообщения обнаружен мат: '.$mat;
  77.  
  78. elseif ($length > 1024)
  79. $err = 'Сообщение слишком длинное';
  80. elseif ($length < 2)
  81. $err = 'Короткое сообщение';
  82.  
  83. elseif ($sql->query("SELECT COUNT(*) FROM `guest` WHERE `id_user` = '".$user['id']."' AND `msg` = '".$msg."' LIMIT 1")->result())
  84. $err = 'Ваше сообщение повторяет предыдущее';
  85.  
  86. elseif (!isset($err))
  87. {
  88. $sql->multi("INSERT INTO `guest` (`id_user`, `time`, `msg`) values('".$user['id']."', '".time()."', '".$msg."');UPDATE `user` SET `balls` = `balls` + 1 WHERE `id` = '".$user['id']."' LIMIT 1;");
  89. $sql->free(true);
  90. Core::msg_show('Сообщение успешно добавлено<br /><a href="?">Вернутся</a>', 'msg');
  91. Cache::multi_delete('guestbook', tmpDir);
  92. include H.'engine/includes/foot.php';
  93. }
  94. unset($msg, $mat, $length);
  95. }
  96.  
  97. if (isset($err))
  98. echo Core::msg_show($err);
  99.  
  100. $cache = new cache(H.'engine/files/tmp/guestbook[page='.(isset($_GET['page']) ? intval($_GET['page']) : 1).';moder='.($moder ? 1 : 0).';user='.($user_id ? 1 : 0).'].swc');
  101.  
  102. if (!$cache->life())
  103. {
  104.  
  105. ob_start();
  106.  
  107. $k_post = $sql->query("SELECT COUNT(*) FROM `guest`")->result();
  108. $page = new page($k_post, $set['p_str']);
  109. $i = 1;
  110.  
  111. if (!$k_post)
  112. Core::msg_show('Нет сообщений', 'post');
  113.  
  114. $sql->query('SELECT * from `guest` order by `id` DESC LIMIT ' . $page->limit());
  115. while ($post = $sql->fetch())
  116. {
  117. echo '<div class="'.($i++ % 2 ? 'p_m' : 'p_t').'">'.Core::user_show(Core::get_user($post['id_user']), array('post' => text::output($post['msg']), 'status' => $post['time'], 'is_time' => true));
  118.  
  119. if ($user_id)
  120. echo '<br /><a href="?act=reply&amp;id='.$post['id_user'].'&amp;sid='.mt_rand(99,999).'#message">Ответить</a>';
  121.  
  122. if ($moder)
  123. echo '<a style="float:right" href="?id='.$post['id'].'&amp;act=del">Удалить</a>';
  124. echo '</div>';
  125. }
  126. $page->display('?');
  127. $cache->write();
  128. }
  129. echo $cache->read();
  130.  
  131. if ($user_id)
  132. {
  133. $area = null;
  134. if ($act == 'reply')
  135. {
  136. $for = Core::get_user($id);
  137. $area = '[b]' . $for['nick'] . '[/b], ';
  138. }
  139. ?>
  140. <a name="message"></a>
  141. <form method = "post">
  142. Сообщение:<br />
  143. <textarea name="msg"><?=$area?></textarea><br />
  144. <input value="Отправить" type="submit"/>
  145. </form>
  146. <?php
  147. }
  148.  
  149. if ($admin)
  150. {
  151. ?>
  152. <div class="fmenu">
  153. <a href="?act=clean">Очистить гостевую</a>
  154. </div>
  155. <?php
  156. }
  157.  
  158. unset($cache, $page, $post, $data, $i);
  159. echo '<a href="/"><div class="menu_razd">Главная</div></a>';
  160.  
  161. include H.'engine/includes/foot.php';