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

Размер файла: 44.5Kb
  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['cid'])) {
  23. $cid = abs(intval($_GET['cid']));
  24. } else {
  25. $cid = 0;
  26. }
  27. if (isset($_GET['id'])) {
  28. $id = abs(intval($_GET['id']));
  29. } else {
  30. $id = 0;
  31. }
  32. if (isset($_GET['start'])) {
  33. $start = abs(intval($_GET['start']));
  34. } else {
  35. $start = 0;
  36. }
  37. if (empty($_GET['uz'])) {
  38. $uz = check($log);
  39. } else {
  40. $uz = check($_GET['uz']);
  41. }
  42.  
  43. show_title('site.png', 'Блоги');
  44. $config['newtitle'] = 'Блоги';
  45.  
  46. switch ($act):
  47. # ###########################################################################################
  48. # # Главная страница ##
  49. # ###########################################################################################
  50. case 'index':
  51.  
  52. $queryblog = DB :: $dbh -> query("SELECT * FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
  53. $cats = $queryblog -> fetch();
  54.  
  55. if (!empty($cats)) {
  56. $config['newtitle'] = $cats['cats_name'];
  57.  
  58. echo '<a href="#down"><img src="../images/img/downs.gif" alt="Вниз" /></a> <a href="index.php?' . SID . '">Блоги</a> / <a href="blog.php?act=new&amp;cid=' . $cid . '&amp;' . SID . '">Написать</a><br /><br />';
  59.  
  60. echo '<img src="../images/img/open_dir.gif" alt="image" /> <b>' . $cats['cats_name'] . '</b> (Статей: ' . $cats['cats_count'] . ')';
  61.  
  62. if (is_admin(array(101, 102, 103, 105))) {
  63. echo ' (<a href="' . ADMINDIR . 'blog.php?act=blog&amp;cid=' . $cid . '&amp;start=' . $start . '&amp;' . SID . '">Управление</a>)';
  64. }
  65. echo '<hr />';
  66.  
  67. $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `blogs` WHERE `blogs_cats_id`=?;", array($cid));
  68.  
  69. if ($total > 0) {
  70. if ($start >= $total) {
  71. $start = 0;
  72. }
  73.  
  74. $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_cats_id`=? ORDER BY `blogs_time` DESC LIMIT " . $start . ", " . $config['blogpost'] . ";", array($cid));
  75.  
  76. while ($data = $queryblog -> fetch()) {
  77. if ($data['blogs_rating'] > 0) {
  78. $data['blogs_rating'] = '<span style="color:#00aa00">+' . $data['blogs_rating'] . '</span>';
  79. }
  80. if ($data['blogs_rating'] < 0) {
  81. $data['blogs_rating'] = '<span style="color:#ff0000">' . $data['blogs_rating'] . '</span>';
  82. }
  83.  
  84. echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> ';
  85. echo '<b><a href="blog.php?act=view&amp;id=' . $data['blogs_id'] . '&amp;' . SID . '">' . $data['blogs_title'] . '</a></b> (' . $data['blogs_rating'] . ')';
  86. echo '</div>';
  87.  
  88. echo '<div>Автор: <a href="../pages/anketa.php?uz=' . $data['blogs_user'] . '&amp;' . SID . '">' . nickname($data['blogs_user']) . '</a> (' . date_fixed($data['blogs_time']) . ')<br />';
  89. echo 'Просмотров: ' . $data['blogs_read'] . '<br />';
  90. echo '<a href="blog.php?act=comments&amp;id=' . $data['blogs_id'] . '&amp;' . SID . '">Комментарии</a> (' . $data['blogs_comments'] . ')<br />';
  91. echo '</div>';
  92. }
  93.  
  94. page_strnavigation('blog.php?cid=' . $cid . '&amp;', $config['blogpost'], $start, $total);
  95.  
  96. echo 'Всего статей: <b>' . $total . '</b><br /><br />';
  97. } else {
  98. show_error('Статей еще нет, будь первым!');
  99. }
  100. } else {
  101. show_error('Ошибка! Данного раздела не существует!');
  102. }
  103.  
  104. echo '<a href="#up"><img src="../images/img/ups.gif" alt="up" /></a> ';
  105. echo '<a href="top.php?' . SID . '">Топ статей</a> / ';
  106. echo '<a href="tags.php?' . SID . '">Облако тегов</a> / ';
  107. echo '<a href="search.php?' . SID . '">Поиск</a> / ';
  108. echo '<a href="blog.php?act=blogs&amp;' . SID . '">Все статьи</a> / ';
  109. echo '<a href="blog.php?act=new&amp;cid=' . $cid . '&amp;' . SID . '">Написать</a><br />';
  110. break;
  111. # ###########################################################################################
  112. # # Просмотр статьи ##
  113. # ###########################################################################################
  114. case 'view':
  115.  
  116. $queryblog = DB :: $dbh -> query("SELECT `blogs`.*, `catsblog`.`cats_id`, `catsblog`.`cats_name` FROM `blogs` LEFT JOIN `catsblog` ON `blogs`.`blogs_cats_id`=`catsblog`.`cats_id` WHERE `blogs_id`=? LIMIT 1;", array($id));
  117. $blogs = $queryblog -> fetch();
  118.  
  119. if (!empty($blogs)) {
  120. $config['newtitle'] = $blogs['blogs_title'];
  121. $config['keywords'] = $blogs['blogs_tags'];
  122. $config['description'] = strip_str($blogs['blogs_text']);
  123.  
  124. if ($blogs['blogs_rating'] > 0) {
  125. $blogs['blogs_rating'] = '<span style="color:#00aa00">+' . $blogs['blogs_rating'] . '</span>';
  126. }
  127. if ($blogs['blogs_rating'] < 0) {
  128. $blogs['blogs_rating'] = '<span style="color:#ff0000">' . $blogs['blogs_rating'] . '</span>';
  129. }
  130.  
  131. echo '<a href="#down"><img src="../images/img/downs.gif" alt="Вниз" /></a> <a href="index.php?' . SID . '">Блоги</a> / <a href="blog.php?cid=' . $blogs['cats_id'] . '&amp;' . SID . '">' . $blogs['cats_name'] . '</a> / <a href="print.php?id=' . $id . '&amp;' . SID . '">Скачать</a> / <a href="rss.php?id=' . $id . '&amp;' . SID . '">RSS-лента</a>';
  132.  
  133. if ($blogs['blogs_user'] == $log) {
  134. echo ' / <a href="blog.php?act=editblog&amp;id=' . $id . '&amp;' . SID . '">Изменить</a>';
  135. }
  136. echo '<br /><br />';
  137.  
  138. echo '<img src="../images/img/themes.gif" alt="Статья" /> <b>' . $blogs['blogs_title'] . '</b> (Оценка: ' . $blogs['blogs_rating'] . ')';
  139.  
  140. if (is_admin(array(101, 102, 103, 105))) {
  141. echo ' (<a href="' . ADMINDIR . 'blog.php?act=editblog&amp;id=' . $id . '&amp;cid=' . $blogs['cats_id'] . '&amp;' . SID . '">Редактировать</a>)';
  142. }
  143.  
  144. echo '<hr />';
  145. // --------------
  146. $queryreads = DB :: $dbh -> querySingle("SELECT `read_ip` FROM `readblog` WHERE `read_blog`=? AND `read_ip`=? LIMIT 1;", array($id, $ip));
  147.  
  148. if (empty($queryreads)) {
  149. $expiresread = SITETIME + 3600 * $config['blogexpread'];
  150. DB :: $dbh -> query("DELETE FROM `readblog` WHERE `read_time`<?;", array(SITETIME));
  151. DB :: $dbh -> query("INSERT INTO `readblog` (`read_blog`, `read_ip`, `read_time`) VALUES (?, ?, ?);", array($id, $ip, $expiresread));
  152. DB :: $dbh -> query("UPDATE `blogs` SET `blogs_read`=`blogs_read`+1 WHERE `blogs_id`=?;", array($id));
  153. }
  154. // --------------
  155. echo bb_code($blogs['blogs_text']) . '<br /><br />';
  156.  
  157. echo 'Автор статьи: <a href="../pages/anketa.php?uz=' . $blogs['blogs_user'] . '&amp;' . SID . '">' . nickname($blogs['blogs_user']) . '</a> (' . date_fixed($blogs['blogs_time']) . ')<br />';
  158.  
  159. echo '<img src="../images/img/tag.gif" alt="Метки" /> ';
  160.  
  161. $tags = preg_split('/[\s]*[,][\s]*/', $blogs['blogs_tags']);
  162.  
  163. $i = 0;
  164. foreach($tags as $value) {
  165. if (empty($i)) {
  166. $comma = '';
  167. } else {
  168. $comma = ', ';
  169. }
  170. echo $comma . '<a href="tags.php?act=search&amp;tags=' . safe_encode($value) . '&amp;' . SID . '">' . $value . '</a>';
  171. ++$i;
  172. }
  173.  
  174. echo '<hr />';
  175.  
  176. echo 'Рейтинг: <a href="blog.php?act=vote&amp;id=' . $id . '&amp;vote=down&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '"><img src="../images/img/thumb-down.gif" alt="Минус" /></a> <big><b>' . $blogs['blogs_rating'] . '</b></big> <a href="blog.php?act=vote&amp;id=' . $id . '&amp;vote=up&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '"><img src="../images/img/thumb-up.gif" alt="Плюс" /></a><br />';
  177. echo '<img src="../images/img/eye.gif" alt="Просмотры" /> Просмотров: ' . $blogs['blogs_read'] . '<br />';
  178. echo '<img src="../images/img/balloon.gif" alt="Комментарии" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;' . SID . '">Комментарии</a> (' . $blogs['blogs_comments'] . ')<br /><br />';
  179. } else {
  180. show_error('Ошибка! Данной статьи не существует!');
  181. }
  182.  
  183. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?' . SID . '">К блогам</a><br />';
  184. break;
  185. # ###########################################################################################
  186. # # Подготовка к редактированию статьи ##
  187. # ###########################################################################################
  188. case 'editblog':
  189.  
  190. if (is_user()) {
  191. $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
  192. $blogs = $queryblog -> fetch();
  193.  
  194. if (!empty($blogs)) {
  195. if ($blogs['blogs_user'] == $log) {
  196. $blogs['blogs_text'] = nosmiles($blogs['blogs_text']);
  197. $blogs['blogs_text'] = yes_br($blogs['blogs_text']);
  198.  
  199. echo '<b><big>Редактирование</big></b><br /><br />';
  200.  
  201. echo '<div class="form" id="form">';
  202. echo '<form action="blog.php?act=changeblog&amp;id=' . $id . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  203.  
  204. echo 'Заголовок:<br />';
  205. echo '<input type="text" name="title" size="50" maxlength="50" value="' . $blogs['blogs_title'] . '" /><br />';
  206. echo 'Текст:<br />';
  207. echo '<textarea cols="25" rows="15" name="text">' . $blogs['blogs_text'] . '</textarea><br />';
  208.  
  209. if (!empty($udata['users_bbpanel'])) {
  210. quickpaste('text');
  211. quickcode();
  212. quicksmiles();
  213. }
  214.  
  215. echo 'Метки:<br />';
  216. echo '<input type="text" name="tags" size="50" maxlength="100" value="' . $blogs['blogs_tags'] . '" /><br />';
  217.  
  218. echo '<input type="submit" value="Изменить" /></form></div><br />';
  219. } else {
  220. show_error('Ошибка! Изменение невозможно, вы не автор данной статьи!');
  221. }
  222. } else {
  223. show_error('Ошибка! Данной статьи не существует!');
  224. }
  225. } else {
  226. show_login('Вы не авторизованы, чтобы редактировать татьи, необходимо');
  227. }
  228.  
  229. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=view&amp;id=' . $id . '&amp;' . SID . '">Вернуться</a><br />';
  230. echo '<img src="../images/img/reload.gif" alt="image" /> <a href="index.php?' . SID . '">Категории</a><br />';
  231. break;
  232. # ###########################################################################################
  233. # # Редактирование статьи ##
  234. # ###########################################################################################
  235. case 'changeblog':
  236.  
  237. $uid = check($_GET['uid']);
  238. $title = check($_POST['title']);
  239. $text = check($_POST['text']);
  240. $tags = check($_POST['tags']);
  241.  
  242. if (is_user()) {
  243. if ($uid == $_SESSION['token']) {
  244. if (utf_strlen($title) >= 5 && utf_strlen($title) <= 50) {
  245. if (utf_strlen($text) >= 100 && utf_strlen($text) <= $config['maxblogpost']) {
  246. if (utf_strlen($tags) >= 2 && utf_strlen($tags) <= 50) {
  247. $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
  248. $blogs = $queryblog -> fetch();
  249.  
  250. if (!empty($blogs)) {
  251. if ($blogs['blogs_user'] == $log) {
  252. $text = no_br($text);
  253. $text = smiles($text);
  254.  
  255. DB :: $dbh -> query("UPDATE `blogs` SET `blogs_title`=?, `blogs_text`=?, `blogs_tags`=? WHERE `blogs_id`=?;", array($title, $text, $tags, $id));
  256.  
  257. $_SESSION['note'] = 'Статья успешно отредактирована!';
  258. header ("Location: blog.php?act=view&id=$id&" . SID);
  259. exit;
  260. } else {
  261. show_error('Ошибка! Изменение невозможно, вы не автор данной статьи!');
  262. }
  263. } else {
  264. show_error('Ошибка! Данной статьи не существует!');
  265. }
  266. } else {
  267. show_error('Ошибка! Слишком длинные или короткие метки статьи (от 2 до 50 символов)!');
  268. }
  269. } else {
  270. show_error('Ошибка! Слишком длинный или короткий текст статьи (от 100 до ' . $config['maxblogpost'] . ' символов)!');
  271. }
  272. } else {
  273. show_error('Ошибка! Слишком длинный или короткий заголовок (от 5 до 50 символов)!');
  274. }
  275. } else {
  276. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  277. }
  278. } else {
  279. show_login('Вы не авторизованы, чтобы редактировать статьи, необходимо');
  280. }
  281.  
  282. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=editblog&amp;id=' . $id . '&amp;' . SID . '">Вернуться</a><br />';
  283. echo '<img src="../images/img/reload.gif" alt="image" /> <a href="blog.php?act=view&amp;id=' . $id . '&amp;' . SID . '">К статье</a><br />';
  284. break;
  285. # ###########################################################################################
  286. # # Просмотр по категориям ##
  287. # ###########################################################################################
  288. case 'blogs':
  289.  
  290. $config['newtitle'] = 'Статьи пользователей';
  291.  
  292. $total = DB :: $dbh -> querySingle("select COUNT(DISTINCT `blogs_user`) from `blogs`");
  293.  
  294. if ($total > 0) {
  295. if ($start >= $total) {
  296. $start = 0;
  297. }
  298.  
  299. $queryblogs = DB :: $dbh -> query("SELECT COUNT(*) AS cnt, `blogs_user` FROM `blogs` GROUP BY `blogs_user` ORDER BY cnt DESC LIMIT " . $start . ", " . $config['bloggroup'] . ";");
  300.  
  301. while ($data = $queryblogs -> fetch()) {
  302. echo '<img src="../images/img/edit.gif" alt="image" /> ';
  303. echo '<b><a href="active.php?act=blogs&amp;uz=' . $data['blogs_user'] . '&amp;' . SID . '">' . nickname($data['blogs_user']) . '</a></b> (' . $data['cnt'] . ')<br />';
  304. }
  305.  
  306. page_strnavigation('blog.php?act=blogs&amp;', $config['bloggroup'], $start, $total);
  307.  
  308. echo 'Всего пользователей: <b>' . $total . '</b><br /><br />';
  309. } else {
  310. show_error('Статей еще нет!');
  311. }
  312.  
  313. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?' . SID . '">К блогам</a><br />';
  314. break;
  315. # ###########################################################################################
  316. # # Создание статьи ##
  317. # ###########################################################################################
  318. case 'new':
  319.  
  320. $config['newtitle'] = 'Публикация новой статьи';
  321.  
  322. if (is_user()) {
  323. $queryblog = DB :: $dbh -> query("SELECT `cats_id`, `cats_name` FROM `catsblog` ORDER BY `cats_order` ASC;");
  324. $blogs = $queryblog -> fetchAll();
  325.  
  326. if (count($blogs) > 0) {
  327. echo '<div class="form" id="form">';
  328. echo '<form action="blog.php?act=addblog&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  329.  
  330. echo 'Категория*:<br />';
  331. echo '<select name="cid">';
  332. echo '<option value="0">Выберите категорию</option>';
  333.  
  334. foreach ($blogs as $key => $data) {
  335. $selected = ($cid == $data['cats_id']) ? ' selected="selected"' : '';
  336. echo '<option value="' . $data['cats_id'] . '"' . $selected . '>' . $data['cats_name'] . '</option>';
  337. }
  338.  
  339. echo '</select><br />';
  340.  
  341. echo 'Заголовок:<br />';
  342. echo '<input type="text" name="title" size="50" maxlength="50" /><br />';
  343. echo 'Текст:<br />';
  344. echo '<textarea cols="25" rows="10" name="text"></textarea><br />';
  345.  
  346. if (!empty($udata['users_bbpanel'])) {
  347. quickpaste('text');
  348. quickcode();
  349. quicksmiles();
  350. }
  351.  
  352. echo 'Метки:<br />';
  353. echo '<input type="text" name="tags" size="50" maxlength="100" /><br />';
  354.  
  355. echo '<input value="Опубликовать" type="submit" /></form></div><br />';
  356.  
  357. echo 'Метки статьи должны быть от 2 до 20 символов с общей длиной не более 50 символов <br /><br />';
  358. } else {
  359. show_error('Категории блогов еще не созданы!');
  360. }
  361. } else {
  362. show_login('Вы не авторизованы, для создания новой статьи, необходимо');
  363. }
  364.  
  365. echo '<img src="../images/img/back.gif" alt="image" /> <a href="index.php?' . SID . '">К блогам</a><br />';
  366. break;
  367. # ###########################################################################################
  368. # # Публикация скрипта ##
  369. # ###########################################################################################
  370. case 'addblog':
  371.  
  372. $config['newtitle'] = 'Публикация новой статьи';
  373.  
  374. $uid = check($_GET['uid']);
  375. $cid = abs(intval($_POST['cid']));
  376. $title = check($_POST['title']);
  377. $text = check($_POST['text']);
  378. $tags = check($_POST['tags']);
  379.  
  380. if (is_user()) {
  381. if ($uid == $_SESSION['token']) {
  382. if (!empty($cid)) {
  383. if (utf_strlen($title) >= 5 && utf_strlen($title) <= 50) {
  384. if (utf_strlen($text) >= 100 && utf_strlen($text) <= $config['maxblogpost']) {
  385. if (utf_strlen($tags) >= 2 && utf_strlen($tags) <= 50) {
  386. $blogs = DB :: $dbh -> querySingle("SELECT `cats_id` FROM `catsblog` WHERE `cats_id`=? LIMIT 1;", array($cid));
  387. if (!empty($blogs)) {
  388. if (is_quarantine($log)) {
  389. if (is_flood($log)) {
  390. $text = no_br($text);
  391. $text = antimat($text);
  392. $text = smiles($text);
  393.  
  394. DB :: $dbh -> query("INSERT INTO `blogs` (`blogs_cats_id`, `blogs_user`, `blogs_title`, `blogs_text`, `blogs_tags`, `blogs_time`) VALUES (?, ?, ?, ?, ?, ?);", array($cid, $log, $title, $text, $tags, SITETIME));
  395. $lastid = DB :: $dbh -> lastInsertId();
  396.  
  397. DB :: $dbh -> query("UPDATE `catsblog` SET `cats_count`=`cats_count`+1 WHERE `cats_id`=?;", array($cid));
  398.  
  399. $_SESSION['note'] = 'Статья успешно опубликована!';
  400. header ("Location: blog.php?act=view&id=$lastid&" . SID);
  401. exit;
  402. } else {
  403. show_error('Антифлуд! Вы слишком часто добавляете статьи!');
  404. }
  405. } else {
  406. show_error('Карантин! Вы не можете добавлять статьи в течении ' . round($config['karantin'] / 3600) . ' часов!');
  407. }
  408. } else {
  409. show_error('Ошибка! Выбранный вами раздел не существует!');
  410. }
  411. } else {
  412. show_error('Ошибка! Слишком длинные или короткие метки статьи (от 2 до 50 символов)!');
  413. }
  414. } else {
  415. show_error('Ошибка! Слишком длинный или короткий текст статьи (от 100 до ' . $config['maxblogpost'] . ' символов)!');
  416. }
  417. } else {
  418. show_error('Ошибка! Слишком длинный или короткий заголовок (от 5 до 50 символов)!');
  419. }
  420. } else {
  421. show_error('Ошибка! Вы не выбрали категорию для добавления статьи!');
  422. }
  423. } else {
  424. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  425. }
  426. } else {
  427. show_login('Вы не авторизованы, для создания новой статьи, необходимо');
  428. }
  429.  
  430. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=new&amp;cid=' . $cid . '&amp;' . SID . '">Вернуться</a><br />';
  431. break;
  432. # ###########################################################################################
  433. # # Оценка статьи ##
  434. # ###########################################################################################
  435. case 'vote':
  436.  
  437. $uid = check($_GET['uid']);
  438. $vote = check($_GET['vote']);
  439.  
  440. if (is_user()) {
  441. if ($uid == $_SESSION['token']) {
  442. if ($vote == 'up' || $vote == 'down') {
  443. if ($vote == 'up') {
  444. $score = 1;
  445. } else {
  446. $score = -1;
  447. }
  448.  
  449. $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
  450. $blogs = $queryblog -> fetch();
  451.  
  452. if (!empty($blogs)) {
  453. if ($log != $blogs['blogs_user']) {
  454. $queryrated = DB :: $dbh -> querySingle("SELECT `rated_id` FROM `ratedblog` WHERE `rated_blog`=? AND `rated_user`=? LIMIT 1;", array($id, $log));
  455.  
  456. if (empty($queryrated)) {
  457. $expiresrated = SITETIME + 3600 * $config['blogexprated'];
  458.  
  459. DB :: $dbh -> query("DELETE FROM `ratedblog` WHERE `rated_time`<?;", array(SITETIME));
  460. DB :: $dbh -> query("INSERT INTO `ratedblog` (`rated_blog`, `rated_user`, `rated_time`) VALUES (?, ?, ?);", array($id, $log, $expiresrated));
  461. DB :: $dbh -> query("UPDATE `blogs` SET `blogs_rating`=`blogs_rating`+? WHERE `blogs_id`=?", array($score, $id));
  462.  
  463. echo '<b>Спасибо! Ваша оценка принята!</b><br />';
  464. echo 'Рейтинг статьи: ' . ($blogs['blogs_rating'] + $score) . '<br /><br />';
  465. } else {
  466. show_error('Ошибка! Вы уже оценивали данную статью!');
  467. }
  468. } else {
  469. show_error('Ошибка! Нельзя голосовать за свою статью!');
  470. }
  471. } else {
  472. show_error('Ошибка! Данной статьи не существует!');
  473. }
  474. } else {
  475. show_error('Ошибка! Необходимо проголосовать за или против статьи!');
  476. }
  477. } else {
  478. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  479. }
  480. } else {
  481. show_login('Вы не авторизованы, для голосования за статьи, необходимо');
  482. }
  483.  
  484. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=view&amp;id=' . $id . '&amp;' . SID . '">Вернуться</a><br />';
  485. break;
  486. # ###########################################################################################
  487. # # Комментарии ##
  488. # ###########################################################################################
  489. case 'comments':
  490.  
  491. $queryblog = DB :: $dbh -> query("SELECT * FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
  492. $blogs = $queryblog -> fetch();
  493.  
  494. if (!empty($blogs)) {
  495. $config['newtitle'] = 'Комментарии - ' . $blogs['blogs_title'];
  496.  
  497. echo '<img src="../images/img/edit.gif" alt="Статья" /> <b><a href="blog.php?act=view&amp;id=' . $id . '&amp;' . SID . '">' . $blogs['blogs_title'] . '</a></b><br /><br />';
  498.  
  499. echo '<a href="#down"><img src="../images/img/downs.gif" alt="Вниз" /></a> ';
  500. echo '<a href="blog.php?act=comments&amp;id=' . $id . '&amp;rand=' . mt_rand(100, 999) . '&amp;' . SID . '">Обновить</a> / <a href="rss.php?id=' . $id . '&amp;' . SID . '">RSS-лента</a><hr />';
  501.  
  502. $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `commblog` WHERE `commblog_blog`=?;", array($id));
  503.  
  504. if ($total > 0) {
  505. if ($start >= $total) {
  506. $start = 0;
  507. }
  508.  
  509. $is_admin = is_admin(array(101, 102, 103, 105));
  510. if ($is_admin) {
  511. echo '<form action="blog.php?act=del&amp;id=' . $id . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';
  512. }
  513.  
  514. $querycomm = DB :: $dbh -> query("SELECT * FROM `commblog` WHERE `commblog_blog`=? ORDER BY `commblog_time` DESC LIMIT " . $start . ", " . $config['blogcomm'] . ";", array($id));
  515.  
  516. while ($data = $querycomm -> fetch()) {
  517. echo '<div class="b">';
  518. echo '<div class="img">';
  519.  
  520. if ($is_admin) {
  521. echo '<input type="checkbox" name="del[]" value="' . $data['commblog_id'] . '" /> ';
  522. }
  523.  
  524. echo user_avatars($data['commblog_author']) . '</div>';
  525.  
  526. echo '<b><a href="../pages/anketa.php?uz=' . $data['commblog_author'] . '&amp;' . SID . '">' . nickname($data['commblog_author']) . '</a></b>';
  527. echo ' <small>(' . date_fixed($data['commblog_time']) . ')</small><br />';
  528. echo user_title($data['commblog_author']) . ' ' . user_online($data['commblog_author']) . '</div>';
  529.  
  530. if (!empty($log) && $log != $data['commblog_author']) {
  531. echo '<div class="right">';
  532. echo '<a href="blog.php?act=reply&amp;id=' . $id . '&amp;pid=' . $data['commblog_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Отв</a> / ';
  533. echo '<a href="blog.php?act=quote&amp;id=' . $id . '&amp;pid=' . $data['commblog_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Цит</a> / ';
  534. echo '<a href="blog.php?act=spam&amp;id=' . $id . '&amp;pid=' . $data['commblog_id'] . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" onclick="return confirm(\'Вы подтверждаете факт спама?\')">Спам</a></div>';
  535. }
  536.  
  537. if ($log == $data['commblog_author'] && $data['commblog_time'] + 600 > SITETIME) {
  538. echo '<div class="right"><a href="blog.php?act=edit&amp;id=' . $id . '&amp;pid=' . $data['commblog_id'] . '&amp;start=' . $start . '&amp;' . SID . '">Редактировать</a></div>';
  539. }
  540.  
  541. echo '<div>' . bb_code($data['commblog_text']) . '<br />';
  542.  
  543. if (is_admin() || empty($config['anonymity'])) {
  544. echo '<span class="data">(' . $data['commblog_brow'] . ', ' . $data['commblog_ip'] . ')</span>';
  545. }
  546.  
  547. echo '</div>';
  548. }
  549.  
  550. if ($is_admin) {
  551. echo '<br /><input type="submit" value="Удалить выбранное" /></form>';
  552. }
  553.  
  554. page_strnavigation('blog.php?act=comments&amp;id=' . $id . '&amp;', $config['blogcomm'], $start, $total);
  555. } else {
  556. show_error('Комментариев еще нет!');
  557. }
  558.  
  559. if (is_user()) {
  560. echo '<div class="form">';
  561. echo '<form action="blog.php?act=add&amp;id=' . $id . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  562. echo '<b>Сообщение:</b><br />';
  563. echo '<textarea cols="25" rows="3" name="msg"></textarea><br />';
  564.  
  565. if (!empty($udata['users_bbpanel'])) {
  566. quickpaste('msg');
  567. quickcode();
  568. quicksmiles();
  569. }
  570.  
  571. echo '<input type="submit" value="Написать" /></form></div><br />';
  572.  
  573. echo '<a href="#up"><img src="../images/img/ups.gif" alt="image" /></a> ';
  574. echo '<a href="../pages/rules.php?' . SID . '">Правила</a> / ';
  575. echo '<a href="../pages/smiles.php?' . SID . '">Смайлы</a> / ';
  576. echo '<a href="../pages/tegi.php?' . SID . '">Теги</a><br /><br />';
  577. } else {
  578. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  579. }
  580. } else {
  581. show_error('Ошибка! Данной статьи не существует!');
  582. }
  583.  
  584. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=view&amp;id=' . $id . '&amp;' . SID . '">Вернуться</a><br />';
  585. echo '<img src="../images/img/edit.gif" alt="image" /> <a href="index.php?' . SID . '">К блогам</a><br />';
  586. break;
  587. # ###########################################################################################
  588. # # Добавление комментариев ##
  589. # ###########################################################################################
  590. case "add":
  591.  
  592. $uid = check($_GET['uid']);
  593. $id = abs(intval($_GET['id']));
  594. $msg = check($_POST['msg']);
  595.  
  596. if (is_user()) {
  597. if ($uid == $_SESSION['token']) {
  598. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 1000) {
  599. $queryblog = DB :: $dbh -> querySingle("SELECT `blogs_cats_id` FROM `blogs` WHERE `blogs_id`=? LIMIT 1;", array($id));
  600.  
  601. if (!empty($queryblog)) {
  602. if (is_quarantine($log)) {
  603. if (is_flood($log)) {
  604. $msg = no_br($msg);
  605. $msg = antimat($msg);
  606. $msg = smiles($msg);
  607.  
  608. DB :: $dbh -> query("INSERT INTO `commblog` (`commblog_cats`, `commblog_blog`, `commblog_text`, `commblog_author`, `commblog_time`, `commblog_ip`, `commblog_brow`) VALUES (?, ?, ?, ?, ?, ?, ?);", array($queryblog, $id, $msg, $log, SITETIME, $ip, $brow));
  609.  
  610. DB :: $dbh -> query("DELETE FROM `commblog` WHERE `commblog_blog`=? AND `commblog_time` < (SELECT MIN(`commblog_time`) FROM (SELECT `commblog_time` FROM `commblog` WHERE `commblog_blog`=? ORDER BY `commblog_time` DESC LIMIT " . $config['maxblogcomm'] . ") AS del);", array($id, $id));
  611.  
  612. DB :: $dbh -> query("UPDATE `blogs` SET `blogs_comments`=`blogs_comments`+1 WHERE `blogs_id`=?;", array($id));
  613. DB :: $dbh -> query("UPDATE `users` SET `users_allcomments`=`users_allcomments`+1, `users_point`=`users_point`+1, `users_money`=`users_money`+5 WHERE `users_login`=?", array($log));
  614.  
  615. $_SESSION['note'] = 'Сообщение успешно добавлено!';
  616. header ("Location: blog.php?act=comments&id=$id&" . SID);
  617. exit;
  618. } else {
  619. show_error('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
  620. }
  621. } else {
  622. show_error('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
  623. }
  624. } else {
  625. show_error('Ошибка! Данной статьи не существует!');
  626. }
  627. } else {
  628. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  629. }
  630. } else {
  631. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  632. }
  633. } else {
  634. show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
  635. }
  636.  
  637. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;' . SID . '">Вернуться</a><br />';
  638. break;
  639. # ###########################################################################################
  640. # # Жалоба на спам ##
  641. # ###########################################################################################
  642. case "spam":
  643.  
  644. $uid = check($_GET['uid']);
  645. $pid = abs(intval($_GET['pid']));
  646.  
  647. if (is_user()) {
  648. if ($uid == $_SESSION['token']) {
  649. $queryblog = DB :: $dbh -> query("SELECT * FROM `commblog` WHERE `commblog_id`=? LIMIT 1;", array($pid));
  650. $data = $queryblog -> fetch();
  651.  
  652. if (!empty($data)) {
  653. $queryspam = DB :: $dbh -> querySingle("SELECT `spam_id` FROM `spam` WHERE `spam_key`=? AND `spam_idnum`=? LIMIT 1;", array(6, $pid));
  654.  
  655. if (empty($queryspam)) {
  656. if (is_flood($log)) {
  657. DB :: $dbh -> query("INSERT INTO `spam` (`spam_key`, `spam_idnum`, `spam_user`, `spam_login`, `spam_text`, `spam_time`, `spam_addtime`, `spam_link`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", array(6, $data['commblog_id'], $log, $data['commblog_author'], $data['commblog_text'], $data['commblog_time'], SITETIME, $config['home'] . '/blog/blog.php?act=comments&amp;id=' . $id . '&amp;start=' . $start));
  658.  
  659. $_SESSION['note'] = 'Жалоба успешно отправлена!';
  660. header ("Location: blog.php?act=comments&id=$id&start=$start&" . SID);
  661. exit;
  662. } else {
  663. show_error('Антифлуд! Разрешается жаловаться на спам не чаще чем раз в ' . flood_period() . ' секунд!');
  664. }
  665. } else {
  666. show_error('Ошибка! Жалоба на данное сообщение уже отправлена!');
  667. }
  668. } else {
  669. show_error('Ошибка! Выбранное вами сообщение для жалобы не существует!');
  670. }
  671. } else {
  672. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  673. }
  674. } else {
  675. show_login('Вы не авторизованы, чтобы подать жалобу, необходимо');
  676. }
  677.  
  678. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  679. break;
  680. # ###########################################################################################
  681. # # Ответ на сообщение ##
  682. # ###########################################################################################
  683. case "reply":
  684.  
  685. $id = abs(intval($_GET['id']));
  686. $pid = abs(intval($_GET['pid']));
  687.  
  688. echo '<b><big>Ответ на сообщение</big></b><br /><br />';
  689.  
  690. if (is_user()) {
  691. $queryblog = DB :: $dbh -> query("SELECT * FROM `commblog` WHERE `commblog_id`=? LIMIT 1;", array($pid));
  692. $post = $queryblog -> fetch();
  693.  
  694. if (!empty($post)) {
  695. echo '<div class="b"><img src="../images/img/edit.gif" alt="image" /> <b><a href="../pages/anketa.php?uz=' . $post['commblog_author'] . '&amp;' . SID . '">' . nickname($post['commblog_author']) . '</a></b> ' . user_title($post['commblog_author']) . ' ' . user_online($post['commblog_author']) . ' <small>(' . date_fixed($post['commblog_time']) . ')</small></div>';
  696. echo '<div>Сообщение: ' . bb_code($post['commblog_text']) . '</div><hr />';
  697.  
  698. echo '<div class="form" id="form">';
  699. echo '<form action="blog.php?act=add&amp;id=' . $id . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  700. echo 'Сообщение:<br />';
  701. echo '<textarea cols="25" rows="5" name="msg">[b]' . nickname($post['commblog_author']) . '[/b], </textarea><br />';
  702.  
  703. if (!empty($udata['users_bbpanel'])) {
  704. quickpaste('msg');
  705. quickcode();
  706. quicksmiles();
  707. }
  708.  
  709. echo '<input type="submit" value="Ответить" /></form></div><br />';
  710. } else {
  711. show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
  712. }
  713. } else {
  714. show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
  715. }
  716.  
  717. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  718. break;
  719. # ###########################################################################################
  720. # # Цитирование сообщения ##
  721. # ###########################################################################################
  722. case "quote":
  723.  
  724. $pid = abs(intval($_GET['pid']));
  725.  
  726. echo '<b><big>Цитирование</big></b><br /><br />';
  727. if (is_user()) {
  728. $queryblog = DB :: $dbh -> query("SELECT * FROM `commblog` WHERE `commblog_id`=? LIMIT 1;", array($pid));
  729. $post = $queryblog -> fetch();
  730.  
  731. if (!empty($post)) {
  732. $post['commblog_text'] = nosmiles($post['commblog_text']);
  733. $post['commblog_text'] = preg_replace('|\[q\](.*?)\[/q\](<br />)?|', '', $post['commblog_text']);
  734. $post['commblog_text'] = str_replace('<br />', "\r\n", $post['commblog_text']);
  735.  
  736. echo '<div class="form" id="form">';
  737. echo '<form action="blog.php?act=add&amp;id=' . $id . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  738. echo 'Сообщение:<br />';
  739. echo '<textarea cols="25" rows="5" name="msg">[q][b]' . nickname($post['commblog_author']) . '[/b] (' . date_fixed($post['commblog_time']) . ')' . "\r\n" . $post['commblog_text'] . '[/q]' . "\r\n" . '</textarea><br />';
  740.  
  741. if (!empty($udata['users_bbpanel'])) {
  742. quickpaste('msg');
  743. quickcode();
  744. quicksmiles();
  745. }
  746.  
  747. echo '<input type="submit" value="Цитировать" /></form></div><br />';
  748. } else {
  749. show_error('Ошибка! Выбранное вами сообщение для цитирования не существует!');
  750. }
  751. } else {
  752. show_login('Вы не авторизованы, чтобы цитировать сообщения, необходимо');
  753. }
  754.  
  755. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  756. break;
  757. # ###########################################################################################
  758. # # Подготовка к редактированию ##
  759. # ###########################################################################################
  760. case "edit":
  761.  
  762. $config['newtitle'] = 'Редактирование сообщения';
  763.  
  764. $pid = abs(intval($_GET['pid']));
  765.  
  766. if (is_user()) {
  767. $querypost = DB :: $dbh -> query("SELECT * FROM `commblog` WHERE `commblog_id`=? AND `commblog_author`=? LIMIT 1;", array($pid, $log));
  768. $post = $querypost -> fetch();
  769.  
  770. if (!empty($post)) {
  771. if ($post['commblog_time'] + 600 > SITETIME) {
  772. $post['commblog_text'] = nosmiles($post['commblog_text']);
  773. $post['commblog_text'] = yes_br($post['commblog_text']);
  774.  
  775. echo '<img src="../images/img/edit.gif" alt="image" /> <b>' . nickname($post['commblog_author']) . '</b> <small>(' . date_fixed($post['commblog_time']) . ')</small><br /><br />';
  776.  
  777. echo '<div class="form" id="form">';
  778. echo '<form action="blog.php?act=editpost&amp;id=' . $post['commblog_blog'] . '&amp;pid=' . $pid . '&amp;start=' . $start . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" name="form" method="post">';
  779. echo 'Редактирование сообщения:<br />';
  780. echo '<textarea cols="25" rows="5" name="msg" id="msg">' . $post['commblog_text'] . '</textarea><br />';
  781.  
  782. if (!empty($udata['users_bbpanel'])) {
  783. quickpaste('msg');
  784. quickcode();
  785. quicksmiles();
  786. }
  787.  
  788. echo '<input type="submit" value="Редактировать" /></form></div><br />';
  789. } else {
  790. show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
  791. }
  792. } else {
  793. show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
  794. }
  795. } else {
  796. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  797. }
  798.  
  799. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  800. break;
  801. # ###########################################################################################
  802. # # Редактирование сообщения ##
  803. # ###########################################################################################
  804. case "editpost":
  805.  
  806. $uid = check($_GET['uid']);
  807. $pid = abs(intval($_GET['pid']));
  808. $msg = check($_POST['msg']);
  809.  
  810. if (is_user()) {
  811. if ($uid == $_SESSION['token']) {
  812. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 1000) {
  813. $querypost = DB :: $dbh -> query("SELECT * FROM `commblog` WHERE `commblog_id`=? AND `commblog_author`=? LIMIT 1;", array($pid, $log));
  814. $post = $querypost -> fetch();
  815.  
  816. if (!empty($post)) {
  817. if ($post['commblog_time'] + 600 > SITETIME) {
  818. $msg = no_br($msg);
  819. $msg = antimat($msg);
  820. $msg = smiles($msg);
  821.  
  822. DB :: $dbh -> query("UPDATE `commblog` SET `commblog_text`=? WHERE `commblog_id`=?", array($msg, $pid));
  823.  
  824. $_SESSION['note'] = 'Сообщение успешно отредактировано!';
  825. header ("Location: blog.php?act=comments&id=$id&start=$start&" . SID);
  826. exit;
  827. } else {
  828. show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
  829. }
  830. } else {
  831. show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
  832. }
  833. } else {
  834. show_error('Ошибка! Слишком длинное или короткое сообщение!');
  835. }
  836. } else {
  837. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  838. }
  839. } else {
  840. show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
  841. }
  842.  
  843. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=edit&amp;id=' . $id . '&amp;pid=' . $pid . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  844. break;
  845. # ###########################################################################################
  846. # # Удаление комментариев ##
  847. # ###########################################################################################
  848. case "del":
  849.  
  850. $uid = check($_GET['uid']);
  851. if (isset($_POST['del'])) {
  852. $del = intar($_POST['del']);
  853. } else {
  854. $del = 0;
  855. }
  856.  
  857. if (is_admin(array(101, 102, 103, 105))) {
  858. if ($uid == $_SESSION['token']) {
  859. if (!empty($del)) {
  860. $del = implode(',', $del);
  861.  
  862. $delcomments = DB :: $dbh -> exec("DELETE FROM `commblog` WHERE `commblog_id` IN (" . $del . ") AND `commblog_blog`=" . $id . ";");
  863. DB :: $dbh -> query("UPDATE `blogs` SET `blogs_comments`=`blogs_comments`-? WHERE `blogs_id`=?;", array($delcomments, $id));
  864.  
  865. $_SESSION['note'] = 'Выбранные комментарии успешно удалены!';
  866. header ("Location: blog.php?act=comments&id=$id&start=$start&" . SID);
  867. exit;
  868. } else {
  869. show_error('Ошибка! Отстутствуют выбранные комментарии для удаления!');
  870. }
  871. } else {
  872. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  873. }
  874. } else {
  875. show_error('Ошибка! Удалять комментарии могут только модераторы!');
  876. }
  877.  
  878. echo '<img src="../images/img/back.gif" alt="image" /> <a href="blog.php?act=comments&amp;id=' . $id . '&amp;start=' . $start . '&amp;' . SID . '">Вернуться</a><br />';
  879. break;
  880.  
  881. default:
  882. header("location: blog.php?" . SID);
  883. endswitch;
  884.  
  885. echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a>';
  886.  
  887. include_once ("../themes/" . $config['themes'] . "/foot.php");
  888.  
  889. ?>