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

Размер файла: 34.17Kb
  1. <?php
  2.  
  3. require_once ("../includes/start.php");
  4. require_once ("../includes/functions.php");
  5. require_once ("../includes/header.php");
  6. include_once ("../themes/".$config['themes']."/verh.dat");
  7.  
  8. $act = (isset($_GET['act'])) ? check($_GET['act']) : 'index';
  9. $start = (isset($_GET['start'])) ? abs(intval($_GET['start'])) : 0;
  10. $fid = (isset($_GET['fid'])) ? abs(intval($_GET['fid'])) : 0;
  11. $id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : 0;
  12.  
  13. if (is_admin()){
  14.  
  15. show_title('Дневник '.$config['title']);
  16.  
  17. switch ($act):
  18. ############################################################################################
  19. ## Вывод перечня категорий ##
  20. ############################################################################################
  21. case "index":
  22.  
  23. $config['newtitle'] = 'Дневник - Список разделов';
  24.  
  25. if (file_exists(DATADIR."dataforum/mainforum.dat")) {
  26. $fileforum = file(DATADIR."dataforum/mainforum.dat");
  27. $total = count($fileforum);
  28.  
  29. if ($total>0) {
  30.  
  31. foreach($fileforum as $key=>$forumval){
  32. $forum = explode("|", $forumval);
  33.  
  34. echo'<div class="b">';
  35. echo'<b><a href="forum.php?act=forum&amp;fid='.$forum[0].'">'.$forum[1].'</a></b> ('.$forum[2].'/'.$forum[3].')';
  36.  
  37. if (is_admin(array(101,102))){
  38. echo'<br>';
  39. if ($key != 0){echo'<a href="forum.php?act=move&amp;fid='.$forum[0].'&amp;where=0&amp;uid='.$_SESSION['token'].'">Вверх</a> / ';} else {echo'Вверх / ';}
  40. if ($total > ($key+1)){echo'<a href="forum.php?act=move&amp;fid='.$forum[0].'&amp;where=1&amp;uid='.$_SESSION['token'].'">Вниз</a>';} else {echo'Вниз';}
  41. echo' / <a href="forum.php?act=editforum&amp;fid='.$forum[0].'">Редактировать</a>';
  42. if (is_admin(array(101))){
  43. echo' / <a href="forum.php?act=delforum&amp;fid='.$forum[0].'&amp;uid='.$_SESSION['token'].'" onclick="return confirm(\'Вы действительно хотите удалить раздел?\')">Удалить</a>';
  44. }
  45. }
  46. echo'</div>';
  47.  
  48. $totalforum = counter_string(DATADIR."dataforum/topic".$forum[0].".dat");
  49.  
  50. if($totalforum>0){
  51. $filetopic = file(DATADIR."dataforum/topic".$forum[0].".dat");
  52. $topic = explode("|", end($filetopic));
  53.  
  54. if (file_exists(DATADIR.'dataforum/'.$forum[0].'-'.$topic[0].'.dat')) {
  55. $filepost = file(DATADIR.'dataforum/'.$forum[0].'-'.$topic[0].'.dat');
  56. $post = explode("|", end($filepost));
  57.  
  58. if (utf_strlen($topic[3])>35) {$topic[3]=utf_substr($topic[3], 0, 30); $topic[3].="...";}
  59.  
  60. echo'<div>Тема: <a href="forum.php?act=end&amp;fid='.$forum[0].'&amp;id='.$topic[0].'">'.$topic[3].'</a><br>';
  61. echo'Сообщение: '.nickname($post[2]).' ('.date_fixed($post[6]).')</div>';
  62.  
  63. } else {echo'Последняя тема не найдена!';}
  64. } else {echo'Раздел пустой! Темы еще не созданы!';}
  65. }
  66.  
  67. echo'<br><br>Всего разделов: <b>'.$total.'</b><br>';
  68.  
  69. } else {show_error('Дневник пустой! Разделы еще не созданы!');}
  70. } else {show_error('Дневник пустой! Разделы еще не созданы!');}
  71.  
  72. if (is_admin(array(101))){
  73. echo'<br><div class="form">';
  74. echo'<form action="forum.php?act=addforum&amp;uid='.$_SESSION['token'].'" method="post">';
  75. echo'Заголовок:<br>';
  76. echo'<input type="text" name="title" size="50" maxlength="50"><br>';
  77. echo'<input value="Создать раздел" type="submit"></form></div><br>';
  78.  
  79. echo'<a href="forum.php?act=recount">Пересчитать</a><br>';
  80. }
  81. break;
  82.  
  83. ############################################################################################
  84. ## Список тем ##
  85. ############################################################################################
  86. case "forum":
  87.  
  88. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  89. if ($forum) {
  90.  
  91. $config['newtitle'] = $forum[1];
  92.  
  93. $total = counter_string(DATADIR."dataforum/topic$fid.dat");
  94.  
  95. echo'<a href="forum.php">Дневник</a> / ';
  96. echo'<a href="../forum/forum.php?act=new&amp;fid='.$fid.'">Новая тема</a> / ';
  97. echo'<a href="../forum/forum.php?&amp;fid='.$fid.'&amp;start='.$start.'">Обзор</a><br><br>';
  98.  
  99.  
  100. echo'<b>'.$forum[1].'</b> ('.$total.' тем.)<hr>';
  101.  
  102. if ($total>0) {
  103. $files = file(DATADIR."dataforum/topic$fid.dat");
  104. $files = array_reverse($files);
  105.  
  106. // Выводим сперва закрепленные темы
  107. $fixed = array();
  108. foreach ($files as $key=>$value){
  109. $data = explode("|", $value);
  110. if (!empty($data[5])){
  111. unset($files[$key]);
  112. $fixed[] = $value;
  113. }
  114. }
  115. $files = array_merge($fixed, $files);
  116. //-------------------------------//
  117.  
  118. echo'<form action="forum.php?act=deltopic&amp;fid='.$fid.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'" method="post">';
  119.  
  120. echo'<div class="form">';
  121. echo'<input type="checkbox" id="all" onchange="var o=this.form.elements;for(var i=0;i&lt;o.length;i++)o[i].checked=this.checked"> <b><label for="all">Отметить все</label></b>';
  122. echo'</div>';
  123.  
  124. if ($start < 0 || $start >= $total){$start = 0;}
  125. if ($total < $start + $config['forumtem']){ $end = $total; }
  126. else {$end = $start + $config['forumtem']; }
  127. for ($i = $start; $i < $end; $i++){
  128.  
  129. $data = explode("|", $files[$i]);
  130.  
  131. if ($data[5] == 1) {
  132. } elseif($data[6] == 1) {
  133. } else {
  134. }
  135.  
  136. $totalpost = counter_string(DATADIR.'dataforum/'.$fid.'-'.$data[0].'.dat');
  137.  
  138. echo'<div class="b">';
  139. echo'<b><a href="forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$data[0].'">'.$data[3].'</a></b> ('.$totalpost.')<br>';
  140.  
  141. echo'<input type="checkbox" name="del[]" value="'.$data[0].'"> ';
  142. echo'<a href="forum.php?act=edittopic&amp;fid='.$fid.'&amp;id='.$data[0].'&amp;start='.$start.'">Редактировать</a>';
  143. echo'</div>';
  144.  
  145. if($totalpost>0){
  146. $filepost = file(DATADIR.'dataforum/'.$fid.'-'.$data[0].'.dat');
  147. $datapost = explode("|", end($filepost));
  148.  
  149. $lastpage = ceil($totalpost/$config['forumpost']) * $config['forumpost'] - $config['forumpost'];
  150.  
  151. echo'<div>Страницы: ';
  152. forum_navigation('topic.php?fid='.$datapost[1].'&amp;id='.$datapost[0].'&amp;', $config['forumpost'], $totalpost);
  153.  
  154. echo'Сообщение: '.nickname($datapost[2]).' ('.date_fixed($datapost[6]).')</div>';
  155.  
  156. } else {echo'Тема пустая! Сообщений еще нет!';}
  157. }
  158.  
  159. echo'<br><input type="submit" value="Удалить выбранное"></form>';
  160.  
  161. page_strnavigation('forum.php?act=forum&amp;fid='.$fid.'&amp;', $config['forumtem'], $start, $total);
  162.  
  163. } else {show_error('Раздел пустой! Темы еще не созданы!');}
  164. } else {show_error('Ошибка! Данного раздела не существует!');}
  165.  
  166. echo'<a href="forum.php">Вернуться</a><br>';
  167. break;
  168.  
  169. ############################################################################################
  170. ## Список постов ##
  171. ############################################################################################
  172. case "topic":
  173.  
  174. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  175. if ($forum) {
  176.  
  177. echo'<a href="forum.php">Дневник</a> / ';
  178. echo'<a href="forum.php?act=forum&amp;fid='.$fid.'">'.$forum[1].'</a> / ';
  179. echo'<a href="../forum/forum.php?act=new&amp;fid='.$fid.'">Новая тема</a>';
  180.  
  181. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  182. if ($topic) {
  183.  
  184. $config['newtitle'] = $topic[3];
  185.  
  186. $total = counter_string(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat');
  187. echo'<br><br><b>'.$topic[3].'</b> ('.$total.' пост.)<hr>';
  188.  
  189. $lock = (empty($topic[5])) ? 'Закрепить' : 'Открепить';
  190. echo'<a href="forum.php?act=lockedtopic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'">'.$lock.'</a> / ';
  191.  
  192.  
  193. $close = (empty($topic[6])) ? 'Закрыть' : 'Открыть';
  194. echo'<a href="forum.php?act=closedtopic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'">'.$close.'</a> / ';
  195.  
  196. echo'<a href="forum.php?act=edittopic&amp;fid='.$fid.'&amp;id='.$id.'">Изменить</a> / ';
  197. echo'<a href="forum.php?act=deltopic&amp;del='.$id.'&amp;fid='.$fid.'&amp;uid='.$_SESSION['token'].'" onclick="return confirm(\'Вы действительно хотите удалить тему?\')">Удалить</a> / ';
  198. echo'<a href="../forum/topic.php?fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'">Обзор</a>';
  199.  
  200. echo'<form action="forum.php?act=delpost&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'" method="post">';
  201.  
  202. echo'<div class="form">';
  203. echo'<input type="checkbox" id="all" onchange="var o=this.form.elements;for(var i=0;i&lt;o.length;i++)o[i].checked=this.checked"> <b><label for="all">Отметить все</label></b>';
  204. echo'</div>';
  205.  
  206. if ($total>0) {
  207. $file = file(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat');
  208.  
  209. if ($start < 0 || $start >= $total){$start = 0;}
  210. if ($total < $start + $config['forumpost']){ $end = $total; }
  211. else {$end = $start + $config['forumpost']; }
  212. for ($i = $start; $i < $end; $i++){
  213.  
  214. $data = explode("|", $file[$i]);
  215.  
  216. echo'<div class="b">';
  217. echo user_avatars($data[2]).' <b><a href="../pages/anketa.php?uz='.$data[2].'">'.nickname($data[2]).'</a></b> ';
  218. echo user_title($data[2]).user_online($data[2]);
  219. echo' <small>('.date_fixed($data[5]).')</small><br>';
  220. echo'<input type="checkbox" name="del[]" value="'.$i.'"> ';
  221. echo'<a href="forum.php?act=editpost&amp;fid='.$fid.'&amp;id='.$data[0].'&amp;post='.$i.'&amp;start='.$start.'">Редактировать</a>';
  222. echo'</div>';
  223. echo'<div>'.bb_code($data[3]).'<br>';
  224. //echo'<span class="data">('.$data[4].')</span>';
  225. echo'</div>';
  226. }
  227.  
  228. echo'<br><input type="submit" value="Удалить выбранное"></form>';
  229.  
  230. page_strnavigation('forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$id.'&amp;', $config['forumpost'], $start, $total);
  231.  
  232. } else {show_error('Тема пустая! Сообщений еще нет!');}
  233.  
  234. // Форма для добавления сообщений
  235. if (empty($topic[6])){
  236. if (is_user()){
  237.  
  238. echo'<div class="form" id="form">';
  239. echo'<form action="../forum/topic.php?act=add&amp;fid='.$fid.'&amp;id='.$id.'&amp;uid='.$_SESSION['token'].'" method="post">';
  240. echo'Сообщение:<br>';
  241. echo'<textarea cols="25" rows="10" name="msg"></textarea><br>';
  242. echo'<input type="submit" value="Написать"></form></div><br>';
  243.  
  244. } else {show_login('');}
  245. } else {show_error('Данная тема закрыта для обсуждения!');}
  246.  
  247. echo'<a href="../pages/pravila.php">Правила</a> / ';
  248. echo'<a href="../pages/smiles.php">Смайлы</a> / ';
  249. echo'<a href="../pages/tegi.php">Теги</a><br><br>';
  250.  
  251. } else {show_error('Ошибка! Данной темы не существует!');}
  252. } else {show_error('Ошибка! Данного раздела не существует!');}
  253.  
  254. echo'<a href="forum.php?act=forum&amp;fid='.$fid.'">Вернуться</a><br>';
  255. break;
  256.  
  257. ############################################################################################
  258. ## Пересчет разделов ##
  259. ############################################################################################
  260. case "recount":
  261. $config['newtitle'] = 'Пересчет разделов';
  262.  
  263. if (file_exists(DATADIR."dataforum/mainforum.dat")) {
  264. $fileforum = file(DATADIR."dataforum/mainforum.dat");
  265.  
  266. if (count($fileforum)>0){
  267. foreach($fileforum as $key=>$forumval){
  268. $forum = explode("|", $forumval);
  269.  
  270. $totaltopic = 0;
  271. $totalpost = 0;
  272.  
  273. if (file_exists(DATADIR.'dataforum/topic'.$forum[0].'.dat')){
  274. $filetopic = file(DATADIR.'dataforum/topic'.$forum[0].'.dat');
  275. $totaltopic = count($filetopic);
  276.  
  277. foreach($filetopic as $topicval){
  278. $topic = explode("|", $topicval);
  279. $totalpost += counter_string(DATADIR.'dataforum/'.$forum[0].'-'.$topic[0].'.dat');
  280. }
  281. }
  282.  
  283. // Обновление mainforum
  284. $maintext = $forum[0].'|'.$forum[1].'|'.$totaltopic.'|'.$totalpost.'|';
  285. replace_lines(DATADIR."dataforum/mainforum.dat", $key, $maintext);
  286. }
  287.  
  288. $_SESSION['note'] = 'Данные Дневника успешно пересчитаны!';
  289. redirect("forum.php");
  290.  
  291. } else {show_error('Дневник пустой! Разделы еще не созданы!');}
  292. } else {show_error('Дневник пустой! Разделы еще не созданы!');}
  293.  
  294. echo'<a href="forum.php">Вернуться</a><br>';
  295. break;
  296.  
  297. ############################################################################################
  298. ## Сдвиг раздела ##
  299. ############################################################################################
  300. case "move":
  301. $config['newtitle'] = 'Перемещение раздела';
  302.  
  303. $uid = check($_GET['uid']);
  304. $where = (isset($_GET['where'])) ? abs(intval($_GET['where'])) : null;
  305.  
  306. if (is_admin(array(101,102))){
  307. if ($uid==$_SESSION['token']){
  308. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  309. if ($forum) {
  310. if (!is_null($where)){
  311.  
  312. move_lines(DATADIR."dataforum/mainforum.dat", $forum['line'], $where);
  313.  
  314. $_SESSION['note'] = 'Раздел успешно перемещен!';
  315. redirect("forum.php");
  316.  
  317. } else {echo show_error('Ошибка! Не выбрано действие для сдвига!');}
  318. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  319. } else {echo show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  320. } else {echo show_error('Ошибка! Двигать рубрики могут только администраторы!');}
  321.  
  322. echo'<a href="forum.php">Вернуться</a><br>';
  323. break;
  324.  
  325. ############################################################################################
  326. ## Редактирование Дневника ##
  327. ############################################################################################
  328. case "editforum":
  329. $config['newtitle'] = 'Редактирование Дневника';
  330. if (is_admin(array(101,102))){
  331. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  332. if ($forum) {
  333.  
  334. echo'<div class="form">';
  335. echo'<form action="forum.php?act=changeforum&amp;fid='.$fid.'&amp;uid='.$_SESSION['token'].'" method="post">';
  336. echo'Заголовок:<br>';
  337. echo'<input type="text" name="title" size="50" maxlength="50" value="'.$forum[1].'"><br>';
  338. echo'Кол. тем:<br>';
  339. echo'<input type="text" name="themes" size="10" value="'.$forum[2].'"><br>';
  340. echo'Кол. постов:<br>';
  341. echo'<input type="text" name="posts" size="10" value="'.$forum[3].'"><br>';
  342. echo'<input value="Изменить" type="submit"></form></div><br>';
  343.  
  344. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  345. } else {show_error('Ошибка! Доступ разрешен только админам!');}
  346. echo'<a href="forum.php">Вернуться</a><br>';
  347. break;
  348.  
  349. ############################################################################################
  350. ## Изменение Дневника ##
  351. ############################################################################################
  352. case "changeforum":
  353. $config['newtitle'] = 'Изменение Дневника';
  354. $uid = check($_GET['uid']);
  355. $title = check($_POST['title']);
  356. $themes = abs(intval($_POST['themes']));
  357. $posts = abs(intval($_POST['posts']));
  358.  
  359. if ($uid==$_SESSION['token']){
  360. if (is_admin(array(101,102))){
  361. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  362. if ($forum) {
  363.  
  364. if (utf_strlen(trim($title))>=5 && utf_strlen($title)<=50){
  365.  
  366. $maintext = $forum[0].'|'.$title.'|'.$themes.'|'.$posts.'|';
  367. replace_lines(DATADIR."dataforum/mainforum.dat", $forum['line'], no_br($maintext));
  368.  
  369. $_SESSION['note'] = 'Раздел успешно изменен!';
  370. redirect("forum.php");
  371.  
  372. } else {show_error('Слишком длинный или короткий заголовок (Необходимо от 5 до 50 символов)');}
  373. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  374. } else {show_error('Ошибка! Доступ разрешен только админам!');}
  375. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  376.  
  377. echo'<a href="forum.php?act=editforum&amp;fid='.$fid.'">Вернуться</a><br>';
  378. break;
  379.  
  380. ############################################################################################
  381. ## Удаление Дневника ##
  382. ############################################################################################
  383. case "delforum":
  384. $config['newtitle'] = 'Удаление Дневника';
  385. $uid = check($_GET['uid']);
  386.  
  387. if ($uid==$_SESSION['token']){
  388. if (is_admin(array(101))){
  389. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  390. if ($forum) {
  391.  
  392. // Удаление всех тем в топике
  393. $file = file(DATADIR."dataforum/topic$fid.dat");
  394. if (count($file)>0){
  395. foreach ($file as $data) {
  396. $data = explode("|", $data);
  397. if (file_exists(DATADIR.'dataforum/'.$fid.'-'.$data[0].'.dat')){
  398. unlink(DATADIR.'dataforum/'.$fid.'-'.$data[0].'.dat');
  399. }
  400. }
  401. }
  402.  
  403. // Удаление файла топика
  404. if (file_exists(DATADIR."dataforum/topic$fid.dat")){
  405. unlink(DATADIR."dataforum/topic$fid.dat");
  406. }
  407.  
  408. // Удаление раздела Дневника
  409. delete_lines(DATADIR."dataforum/mainforum.dat", $forum['line']);
  410.  
  411. $_SESSION['note'] = 'Раздел успешно удален!';
  412. redirect("forum.php");
  413.  
  414. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  415. } else {show_error('Ошибка! Доступ разрешен только суперадминам!');}
  416. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  417.  
  418. echo'<a href="forum.php">Вернуться</a><br>';
  419. break;
  420.  
  421. ############################################################################################
  422. ## Создание Дневника ##
  423. ############################################################################################
  424. case "addforum":
  425. $config['newtitle'] = 'Создание Дневника';
  426. $uid = check($_GET['uid']);
  427. $title = check($_POST['title']);
  428.  
  429. if ($uid==$_SESSION['token']){
  430. if (is_admin(array(101))){
  431.  
  432. if (utf_strlen(trim($title))>=5 && utf_strlen($title)<=50){
  433.  
  434. $id = unifile(DATADIR."dataforum/mainforum.dat", 0);
  435.  
  436. $maintext = $id.'|'.$title.'|0|0|';
  437. write_files(DATADIR."dataforum/mainforum.dat", "$maintext\r\n", 0, 0666);
  438.  
  439. $_SESSION['note'] = 'Раздел успешно создан!';
  440. redirect("forum.php");
  441.  
  442. } else {show_error('Слишком длинный или короткий заголовок (Необходимо от 5 до 50 символов)');}
  443. } else {show_error('Ошибка! Доступ разрешен только суперадминам!');}
  444. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  445.  
  446. echo'<a href="forum.php">Вернуться</a><br>';
  447. break;
  448.  
  449. //------------------------------------- Темы Дневника --------------------------------------//
  450.  
  451. ############################################################################################
  452. ## Удаление темы ##
  453. ############################################################################################
  454. case "deltopic":
  455. $config['newtitle'] = 'Удаление темы';
  456.  
  457. $uid = check($_GET['uid']);
  458.  
  459. if (isset($_POST['del'])) {
  460. $del = intar($_POST['del']);
  461. } elseif (isset($_GET['del'])) {
  462. $del = array(abs(intval($_GET['del'])));
  463. } else {
  464. $del = 0;
  465. }
  466.  
  467. if ($uid==$_SESSION['token']){
  468. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  469. if ($forum) {
  470.  
  471. if (!empty($del)){
  472. $delete = array();
  473.  
  474. foreach ($del as $val){
  475.  
  476. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $val, 0);
  477. if ($topic) {
  478.  
  479. // Удаление файла темы
  480. if (file_exists(DATADIR.'dataforum/'.$fid.'-'.$topic[0].'.dat')) {
  481. unlink (DATADIR.'dataforum/'.$fid.'-'.$topic[0].'.dat');
  482. }
  483.  
  484. $delete[] = $topic['line'];
  485. }
  486. }
  487.  
  488. // Удаление записи в темах
  489. delete_lines(DATADIR."dataforum/topic$fid.dat", $delete);
  490.  
  491. $_SESSION['note'] = 'Выбранные темы успешно удалены!';
  492. redirect("forum.php?act=forum&fid=$fid&start=$start");
  493.  
  494. } else {show_error('Ошибка! Не выбраны темы для удаления!');}
  495. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  496. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  497.  
  498. echo'<a href="forum.php?act=forum&amp;fid='.$fid.'&amp;start='.$start.'">Вернуться</a><br>';
  499. break;
  500.  
  501. ############################################################################################
  502. ## Редактирование темы ##
  503. ############################################################################################
  504. case "edittopic":
  505. $config['newtitle'] = 'Редактирование темы';
  506.  
  507. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  508. if ($forum) {
  509.  
  510. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  511. if ($topic) {
  512.  
  513. echo'<div class="form">';
  514. echo'<form action="forum.php?act=changetopic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'" method="post">';
  515. echo'Заголовок:<br>';
  516. echo'<input type="text" name="title" size="50" maxlength="50" value="'.$topic[3].'"><br>';
  517.  
  518. echo'Автор темы:<br>';
  519. echo'<input type="text" name="author" size="20" maxlength="20" value="'.$topic[2].'"><br>';
  520.  
  521. echo'Закрепить тему: ';
  522. $checked = ($topic[5] == 1) ? ' checked="checked"' : '';
  523. echo'<input name="locked" type="checkbox" value="1"'.$checked.'><br>';
  524.  
  525. echo'Закрыть тему: ';
  526. $checked = ($topic[6] == 1) ? ' checked="checked"' : '';
  527. echo'<input name="closed" type="checkbox" value="1"'.$checked.'><br>';
  528.  
  529. echo'<input value="Изменить тему" type="submit"></form></div><br>';
  530.  
  531. } else {show_error('Ошибка! Данной темы не существует!');}
  532. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  533.  
  534. echo'<a href="forum.php?act=forum&amp;fid='.$fid.'&amp;start='.$start.'">Вернуться</a><br>';
  535. break;
  536.  
  537. ############################################################################################
  538. ## Изменение темы ##
  539. ############################################################################################
  540. case "changetopic":
  541. $config['newtitle'] = 'Изменение темы';
  542.  
  543. $uid = check($_GET['uid']);
  544. $title = check($_POST['title']);
  545. $author = check($_POST['author']);
  546. $locked = (empty($_POST['locked'])) ? 0 : 1;
  547. $closed = (empty($_POST['closed'])) ? 0 : 1;
  548.  
  549. if ($uid==$_SESSION['token']){
  550. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  551. if ($forum) {
  552.  
  553. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  554. if ($topic) {
  555.  
  556. if (check_user($author)){
  557. if (utf_strlen(trim($title))>=5 && utf_strlen($title)<=50){
  558.  
  559. $topictext = $topic[0].'|'.$topic[1].'|'.$author.'|'.$title.'|'.$topic[4].'|'.$locked.'|'.$closed.'|';
  560. replace_lines(DATADIR."dataforum/topic$fid.dat", $topic['line'], no_br($topictext, '<br>'));
  561.  
  562. $_SESSION['note'] = 'Тема успешно изменена!';
  563. redirect("forum.php?act=forum&fid=$fid&start=$start");
  564.  
  565. } else {show_error('Слишком длинный или короткий заголовок (Необходимо от 5 до 50 символов)');}
  566. } else {show_error('Аккаунт пользователя '.$author.' не найден!');}
  567.  
  568. } else {show_error('Ошибка! Данной темы не существует!');}
  569. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  570. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  571.  
  572. echo'<a href="forum.php?act=edittopic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'">Вернуться</a><br>';
  573. break;
  574.  
  575. ############################################################################################
  576. ## Закрытие темы ##
  577. ############################################################################################
  578. case "closedtopic":
  579. $config['newtitle'] = 'Закрытие темы';
  580.  
  581. $uid = check($_GET['uid']);
  582.  
  583. if ($uid==$_SESSION['token']){
  584. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  585. if ($forum) {
  586.  
  587. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  588. if ($topic) {
  589.  
  590. $closed = (empty($topic[6])) ? 1 : 0;
  591.  
  592. $topictext = $topic[0].'|'.$topic[1].'|'.$topic[2].'|'.$topic[3].'|'.$topic[4].'|'.$topic[5].'|'.$closed.'|';
  593. replace_lines(DATADIR."dataforum/topic$fid.dat", $topic['line'], no_br($topictext, '<br>'));
  594.  
  595. $_SESSION['note'] = 'Тема успешно изменена!';
  596. redirect("forum.php?act=topic&fid=$fid&id=$id&start=$start");
  597.  
  598. } else {show_error('Ошибка! Данной темы не существует!');}
  599. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  600. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  601.  
  602. echo'<a href="forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$id.'">Вернуться</a><br>';
  603. break;
  604.  
  605.  
  606. ############################################################################################
  607. ## Закрепление темы ##
  608. ############################################################################################
  609. case "lockedtopic":
  610. $config['newtitle'] = 'Закрепление темы';
  611.  
  612. $uid = check($_GET['uid']);
  613.  
  614. if ($uid==$_SESSION['token']){
  615. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  616. if ($forum) {
  617.  
  618. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  619. if ($topic) {
  620.  
  621. $locked = (empty($topic[5])) ? 1 : 0;
  622.  
  623. $topictext = $topic[0].'|'.$topic[1].'|'.$topic[2].'|'.$topic[3].'|'.$topic[4].'|'.$locked.'|'.$topic[6].'|';
  624. replace_lines(DATADIR."dataforum/topic$fid.dat", $topic['line'], no_br($topictext, '<br>'));
  625.  
  626. $_SESSION['note'] = 'Тема успешно изменена!';
  627. redirect("forum.php?act=topic&fid=$fid&id=$id&start=$start");
  628.  
  629. } else {show_error('Ошибка! Данной темы не существует!');}
  630. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  631. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  632.  
  633. echo'<a href="forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$id.'">Вернуться</a><br>';
  634. break;
  635.  
  636. //--------------------------------- Сообщения Дневника -------------------------------------//
  637.  
  638. ############################################################################################
  639. ## Удаление сообщений ##
  640. ############################################################################################
  641. case "delpost":
  642. $config['newtitle'] = 'Удаление сообщений';
  643.  
  644. $uid = check($_GET['uid']);
  645. $del = (isset($_POST['del'])) ? intar($_POST['del']) : null;
  646.  
  647. if ($uid==$_SESSION['token']){
  648. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  649. if ($forum) {
  650.  
  651. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  652. if ($topic) {
  653.  
  654. if (!is_null($del)) {
  655.  
  656. delete_lines(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat', $del);
  657.  
  658. $_SESSION['note'] = 'Выбранные сообщения успешно удалены!';
  659. redirect("forum.php?act=topic&fid=$fid&id=$id&start=$start");
  660.  
  661. } else {show_error('Ошибка! Не выбраны сообщения для удаления!');}
  662. } else {show_error('Ошибка! Данной темы не существует!');}
  663. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  664. } else {show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');}
  665.  
  666. echo'<a href="forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'">Вернуться</a><br>';
  667. break;
  668.  
  669.  
  670. ############################################################################################
  671. ## Редактирование сообщения ##
  672. ############################################################################################
  673. case "editpost":
  674. $config['newtitle'] = 'Редактирование сообщения';
  675.  
  676. $post = (isset($_GET['post'])) ? abs(intval($_GET['post'])) : null;
  677.  
  678. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  679. if ($forum) {
  680.  
  681. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  682. if ($topic) {
  683.  
  684. $data = read_string(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat', $post);
  685. if ($data){
  686.  
  687. $data[3] = str_replace("<br>","\r\n",nosmiles($data[3]));
  688.  
  689. echo'<div class="form" id="form">';
  690. echo'<form action="forum.php?act=changepost&amp;fid='.$fid.'&amp;id='.$id.'&amp;post='.$post.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'" method="post">';
  691. echo'Автор:<br>';
  692. echo'<input type="text" name="author" size="20" maxlength="20" value="'.$data[2].'"><br>';
  693. echo'Сообщение:<br>';
  694. echo'<textarea cols="25" rows="10" name="msg">'.$data[3].'</textarea><br>';
  695. echo'<input type="submit" value="Изменить"></form></div><br>';
  696.  
  697. } else {show_error('Ошибка! Данное сообщение не найдено!');}
  698. } else {show_error('Ошибка! Данной темы не существует!');}
  699. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  700.  
  701. echo'<a href="forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'">Вернуться</a><br>';
  702. break;
  703.  
  704.  
  705. ############################################################################################
  706. ## Изменение сообщения ##
  707. ############################################################################################
  708. case "changepost":
  709. $config['newtitle'] = 'Изменение сообщения';
  710.  
  711. $post = (isset($_GET['post'])) ? abs(intval($_GET['post'])) : null;
  712. $msg = check($_POST['msg']);
  713. $author = check($_POST['author']);
  714.  
  715. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  716. if ($forum) {
  717.  
  718. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  719. if ($topic) {
  720.  
  721. $data = read_string(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat', $post);
  722. if ($data){
  723.  
  724. if (check_user($author)){
  725. if (utf_strlen(trim($msg))>=5 && utf_strlen($msg)<=5000){
  726.  
  727. $msg = smiles($msg);
  728.  
  729. $posttext = $data[0].'|'.$data[1].'|'.$author.'|'.$msg.'|'.$data[4].'|'.$data[5].'|';
  730. replace_lines(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat', $post, no_br($posttext, '<br>'));
  731.  
  732. $_SESSION['note'] = 'Сообщение успешно изменено!';
  733. redirect("forum.php?act=topic&fid=$fid&id=$id&start=$start");
  734.  
  735. } else {show_error('Слишком длинный или короткий текст сообщения (Необходимо от 5 до 5000 символов)');}
  736. } else {show_error('Аккаунт пользователя '.$author.' не найден!');}
  737.  
  738. } else {show_error('Ошибка! Данное сообщение не найдено!');}
  739. } else {show_error('Ошибка! Данной темы не существует!');}
  740. } else {show_error('Ошибка! Данный раздел Дневника не найден!');}
  741. echo'<a href="forum.php?act=editpost&amp;fid='.$fid.'&amp;id='.$id.'&amp;post='.$post.'&amp;start='.$start.'">Редактировать</a><br>';
  742. break;
  743.  
  744. ############################################################################################
  745. ## Переход к последней странице ##
  746. ############################################################################################
  747. case "end":
  748. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  749. if ($forum) {
  750. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  751. if ($topic) {
  752. $totpage = counter_string(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat');
  753. $lastpage = ceil($totpage/$config['forumpost']) * $config['forumpost'] - $config['forumpost'];
  754.  
  755. redirect("forum.php?act=topic&fid=$fid&id=$id&start=$lastpage");
  756.  
  757. } else {show_error('Ошибка! Данной темы не существует!');}
  758. } else {show_error('Ошибка! Данного раздела не существует!');}
  759.  
  760. echo'<a href="forum.php">Вернуться</a><br>';
  761. break;
  762.  
  763. default:
  764. redirect("forum.php");
  765. endswitch;
  766.  
  767. //----------------------- Концовка -------------------------//
  768. echo'<a href="index.php">В админку</a><br>';
  769. echo'<img src="'.BASEDIR.'images/home.svg" alt="+">
  770. <a href="../index.php">Главъ</a><br>';
  771.  
  772. } else {redirect(BASEDIR.'index.php');}
  773.  
  774. include_once ("../themes/".$config['themes']."/niz.dat");
  775. ?>