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

Размер файла: 8.12Kb
  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.  
  14. if (file_exists(DATADIR."dataforum/topic$fid.dat")){
  15. if (file_exists(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat')){
  16.  
  17. switch ($act):
  18. ############################################################################################
  19. ## Вывод всех сообщений ##
  20. ############################################################################################
  21. case "index":
  22.  
  23. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  24. if ($forum) {
  25.  
  26. echo'<a href="index.php">Дневник</a> / ';
  27. echo'<a href="forum.php?fid='.$fid.'">'.$forum[1].'</a>';
  28. if (is_admin()) {
  29. echo' / <a href="forum.php?act=new&amp;fid=' . $fid . '">Новая тема</a>';
  30. }
  31.  
  32.  
  33. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  34. if ($topic) {
  35.  
  36. $config['newtitle'] = $topic[3];
  37.  
  38. $total = counter_string(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat');
  39. echo'<br><br><h1>'.$topic[3].'</h1> ('.$total.' пост.)<hr>';
  40.  
  41. if (is_admin()){
  42. $lock = (empty($topic[5])) ? 'Закрепить' : 'Открепить';
  43. echo'<a href="'.ADMINDIR.'forum.php?act=lockedtopic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'">'.$lock.'</a> / ';
  44.  
  45.  
  46. $close = (empty($topic[6])) ? 'Закрыть' : 'Открыть';
  47. echo'<a href="'.ADMINDIR.'forum.php?act=closedtopic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'">'.$close.'</a> / ';
  48.  
  49. echo'<a href="'.ADMINDIR.'forum.php?act=edittopic&amp;fid='.$fid.'&amp;id='.$id.'">Изменить</a> / ';
  50. echo'<a href="'.ADMINDIR.'forum.php?act=deltopic&amp;del='.$id.'&amp;fid='.$fid.'&amp;uid='.$_SESSION['token'].'" onclick="return confirm(\'Вы действительно хотите удалить тему?\')">Удалить</a> / ';
  51. echo'<a href="'.ADMINDIR.'forum.php?act=topic&amp;fid='.$fid.'&amp;id='.$id.'&amp;start='.$start.'">Управление</a>';
  52. }
  53.  
  54. if ($total>0) {
  55. $file = file(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat');
  56.  
  57. if ($start < 0 || $start >= $total){$start = 0;}
  58. if ($total < $start + $config['forumpost']){ $end = $total; }
  59. else {$end = $start + $config['forumpost']; }
  60. for ($i = $start; $i < $end; $i++){
  61.  
  62. $data = explode("|", $file[$i]);
  63.  
  64. echo'<div class="b">';
  65. echo user_avatars($data[2]).' <b><a href="/pages/anketa.php?uz='.$data[2].'">'.nickname($data[2]).'</a></b> ';
  66. echo user_title($data[2]).user_online($data[2]);
  67. echo' <small>('.date_fixed($data[5]).')</small></div>';
  68. echo'<div>'.bb_code($data[3]).'<br>';
  69. echo'</div>';
  70. }
  71.  
  72. page_strnavigation('topic.php?fid='.$fid.'&amp;id='.$id.'&amp;', $config['forumpost'], $start, $total);
  73.  
  74. } else {show_error('Сообщений еще нет!');}
  75.  
  76. // Форма для добавления сообщений
  77. if (empty($topic[6])){
  78. if (is_user()){
  79.  
  80. echo'<div class="form" id="form">';
  81. echo'<form action="topic.php?act=add&amp;fid='.$fid.'&amp;id='.$id.'&amp;uid='.$_SESSION['token'].'" method="post">';
  82. echo'Сообщение:<br>';
  83. echo'<textarea cols="25" rows="10" name="msg"></textarea><br>';
  84. echo'<input type="submit" value="Написать"></form></div><br>';
  85.  
  86. } else {show_login('');}
  87. } else {show_error('Данная тема закрыта для обсуждения!');}
  88.  
  89. echo'<a href="/pages/pravila.php">Правила</a> / ';
  90. echo'<a href="/pages/smiles.php">Смайлы</a> / ';
  91. echo'<a href="/pages/tegi.php">Теги</a><br><br>';
  92.  
  93. } else {show_error('Ошибка! Данной темы не существует!');}
  94. } else {show_error('Ошибка! Данного раздела не существует!');}
  95. echo'<a href="forum.php?fid='.$fid.'">Вернуться</a><br>';
  96. break;
  97.  
  98. ############################################################################################
  99. ## Добавление сообщения ##
  100. ############################################################################################
  101. case "add":
  102. $config['newtitle'] = 'Добавление сообщения';
  103.  
  104. $uid = check($_GET['uid']);
  105. $msg = check($_POST['msg']);
  106.  
  107. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  108. if ($forum) {
  109. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  110. if ($topic) {
  111. if (is_user()) {
  112. if ($uid==$_SESSION['token']){
  113.  
  114. if (empty($topic[6])){
  115.  
  116. if (is_flood($log)) {
  117. if (is_quarantine($log)) {
  118. if (utf_strlen(trim($msg))>=5 && utf_strlen($msg)<=5000){
  119.  
  120. statistics(2);
  121.  
  122. $msg = no_br($msg, '<br>');
  123. $msg = antimat($msg);
  124. $msg = smiles($msg);
  125.  
  126. $text = $id.'|'.$fid.'|'.$log.'|'.$msg.'|'.$brow.', '.$ip.'|'.SITETIME.'|';
  127.  
  128. // Запись сообщения
  129. write_files(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat', "$text\r\n", 0, 0666);
  130.  
  131. // Поднятие темы в списке
  132. shift_lines(DATADIR."dataforum/topic$fid.dat", $topic['line']);
  133.  
  134. // Обновление mainforum
  135. $maintext = $forum[0].'|'.$forum[1].'|'.$forum[2].'|'.($forum[3]+1).'|';
  136. replace_lines(DATADIR."dataforum/mainforum.dat", $forum['line'], $maintext);
  137.  
  138. change_profil($log, array(8=>$udata[8]+1, 14=>$ip, 36=>$udata[36]+1, 41=>$udata[41]+1));
  139.  
  140. $_SESSION['note'] = 'Сообщение успешно добавлено!';
  141. redirect("topic.php?act=end&fid=$fid&id=$id");
  142.  
  143. } else {show_error('Слишком длинный или короткий текст сообщения (Необходимо от 5 до 3000 символов)');}
  144. } else {show_error('Карантин! Вы не можете писать в течении '.round($config['karantin'] / 3600).' часов!');}
  145. } else {show_error('Антифлуд! Разрешается отправлять сообщения раз в '.flood_period().' секунд!');}
  146. } else {show_error('Ошибка! Данная тема закрыта для обсуждения!');}
  147.  
  148. } else {
  149. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  150. }
  151. } else {
  152. show_login('');
  153. }
  154. } else {show_error('Ошибка! Данной темы не существует!');}
  155. } else {show_error('Ошибка! Данного раздела не существует!');}
  156.  
  157. echo'<a href="topic.php?fid='.$fid.'&amp;id='.$id.'">Вернуться</a><br>';
  158. break;
  159.  
  160. ############################################################################################
  161. ## Переход к последней странице ##
  162. ############################################################################################
  163. case "end":
  164. $forum = search_string(DATADIR."dataforum/mainforum.dat", $fid, 0);
  165. if ($forum) {
  166. $topic = search_string(DATADIR."dataforum/topic$fid.dat", $id, 0);
  167. if ($topic) {
  168. $totpage = counter_string(DATADIR.'dataforum/'.$fid.'-'.$id.'.dat');
  169. $lastpage = ceil($totpage/$config['forumpost']) * $config['forumpost'] - $config['forumpost'];
  170.  
  171. redirect("topic.php?fid=$fid&id=$id&start=$lastpage");
  172.  
  173. } else {show_error('Ошибка! Данной темы не существует!');}
  174. } else {show_error('Ошибка! Данного раздела не существует!');}
  175.  
  176. echo'<a href="index.php">Вернуться</a><br>';
  177. break;
  178.  
  179. default:
  180. redirect("index.php");
  181. endswitch;
  182.  
  183. } else {show_error('Данной темы не существует, возможно она была удалена!');}
  184. } else {show_error('Разделы Дневника еще не созданы!');}
  185.  
  186. echo'<a href="/index.php"></a><br>';
  187.  
  188. include_once ('../themes/'.$config['themes'].'/niz.dat');
  189. ?>