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

Размер файла: 25.56Kb
  1. <?php
  2. #Made By: AngelOfFaith
  3. #ICQ: 410755038
  4. #Email: angeloffaith@inbox.ru
  5. #Url: http://coder-lib.ru
  6. #Все права на скрипт принадлежат автору! Тоесть мне! Скрипт запрещено распространять и/или продавать без согласия автора!
  7. require_once('../lib/inc/fnc.php');
  8. require_once('../lib/inc/db.php');
  9. require_once('../sys/system.php');
  10. $TITLE='Coder-Lib.Ru | Форум';
  11. $TIT='Форум';
  12. require_once('../lib/inc/head.php');
  13.  
  14.  
  15. switch ($act){
  16. //////////////////////////////Выводим главную форума////////////////////////////
  17. default:
  18. whereis($udata['name'],'Форумы');
  19. $x=mysql_query("SELECT * FROM `f_forums`");
  20. if(!mysql_num_rows($x)){textwrite('Форумы не созданы!');break;};
  21. $arrdata=array();
  22. $num=array();
  23. while($row=mysql_fetch_assoc($x)){
  24. $arrdata[]=$row;
  25. $num[]=mysql_result(mysql_query("SELECT count(*) FROM `f_razd` WHERE `fid`='".$row['id']."'"),0);
  26. };
  27. $smarty->assign('DATA',$arrdata);
  28. $smarty->assign('mygroup',$udata['group']);
  29. $smarty->assign('num',$num);
  30. break;
  31.  
  32.  
  33.  
  34. ///////////////////////////////Выводим категории в разделе//////////////////////
  35. case 'f':
  36. whereis($udata['name'],'Разделы форума');
  37. $id=intval($_GET['id']);
  38. if(!$id){textwrite('Пустые параметры!');break;};
  39. $smarty->assign('id',$id);
  40. $fn=mysql_query("SELECT `name`,`group` FROM `f_forums` WHERE `id`='$id'");
  41. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  42. $fn=mysql_fetch_assoc($fn);
  43. if($udata['level']!=7){
  44. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  45. };
  46.  
  47. $smarty->assign('fname',$fn['name']);
  48. $x=mysql_query("SELECT * FROM `f_razd` WHERE `fid`='$id'");
  49. if(!mysql_num_rows($x)){textwrite('Разделы не созданы!');break;};
  50. $arrdata=array();
  51. $num=array();
  52. $lasttema=array();
  53. $lastpost=array();
  54. while($row=mysql_fetch_assoc($x)){
  55. $num[]=mysql_result(mysql_query("SELECT count(*) FROM `f_tems` WHERE `rid`='".$row['id']."'"),0);
  56. $lt=mysql_query("SELECT * FROM `f_tems` WHERE `rid`='".$row['id']."' ORDER BY `lastorder` DESC LIMIT 1");
  57. $lt=mysql_fetch_assoc($lt);
  58. $lasttema[]=$lt;
  59. $lp=mysql_query("SELECT * FROM `f_post` WHERE `tid`='".$lt['id']."' ORDER BY `id` DESC LIMIT 1");
  60. $lp=mysql_fetch_assoc($lp);
  61. $lastpost[]=$lp;
  62. $arrdata[]=$row;
  63. };
  64. $smarty->assign('DATA',$arrdata);
  65. $smarty->assign('num',$num);
  66. $smarty->assign('lt',$lasttema);
  67. $smarty->assign('lp',$lastpost);
  68. break;
  69.  
  70.  
  71.  
  72. ///////////////////////////Выводим темы в категории/////////////////////////////
  73. case 'r':
  74. whereis($udata['name'],'Темы форума');
  75. $id=intval($_GET['id']);
  76. if(!$id){textwrite('Пустые параметры!');break;};
  77. $smarty->assign('fid',$fid);
  78. $smarty->assign('id',$id);
  79. $selectfromrazd=mysql_Fetch_assoc(mysql_query("SELECT `fid` FROM `f_razd` WHERE `id`='$id'"));
  80. $fid=$selectfromrazd['fid'];
  81. $fn=mysql_query("SELECT `name`,`group`,`id` FROM `f_forums` WHERE `id`='$fid'");
  82. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  83. $fn=mysql_fetch_assoc($fn);
  84. if($udata['level']!=7 || $udata['level']==4){
  85. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  86. };
  87. $rn=mysql_query("SELECT `name` FROM `f_razd` WHERE `id`='$id'");
  88. $rn=mysql_fetch_assoc($rn);
  89. $smarty->assign('fn_id',$fn['id']);
  90. $smarty->assign('fn_name',$fn['name']);
  91. $smarty->assign('rn_name',$rn['name']);
  92. $count=mysql_result(mysql_query("SELECT count(*) FROM `f_tems` WHERE `rid`='$id'"),0);
  93. if(!$count){textwrite('Тем нет!');
  94. }else{
  95. $allpage=ceil($count/$onpage);
  96. if($page>$allpage){$page=$allpage;};
  97. $start=($page-1)*$onpage;
  98. $x=mysql_query("SELECT * FROM `f_tems` WHERE `rid`='$id' ORDER BY `stuck` DESC,`lastorder` DESC LIMIT $start,$onpage");
  99. $arrdata=array();
  100. $post=array();
  101. $lastpost=array();
  102. while($row=mysql_fetch_assoc($x)){
  103. $arrdata[]=$row;
  104. $post[]=mysql_result(mysql_query("SELECT count(*) FROM `f_post` WHERE `tid`='".$row['id']."'"),0);
  105. $lp=mysql_query("SELECT * FROM `f_post` WHERE `tid`='".$row['id']."' ORDER BY `id` DESC LIMIT 1");
  106. $lastpost[]=mysql_fetch_assoc($lp);
  107. };
  108. $smarty->assign('DATA',$arrdata);
  109. $smarty->assign('post',$post);
  110. $smarty->assign('lp',$lastpost);
  111. };
  112. pagenavig($allpage,$page,'act=r&amp;id='.$id.'&amp;fid='.$fid);
  113. break;
  114.  
  115.  
  116. //////////////////////////////Вывод сообщений в теме////////////////////////////
  117. case 't':
  118. whereis($udata['name'],'Сообщения форума');
  119. $id=intval($_GET['id']);
  120. if(!$id){textwrite('Пустые параметры!');break;};
  121. $selectfromtem=mysql_fetch_assoc(mysql_query("SELECT `rid` FROM `f_tems` WHERE `id`='$id'"));
  122. $rid=$selectfromtem['rid'];
  123. $smarty->assign('rid',$rid);
  124. $smarty->assign('id',$id);
  125. $rn=mysql_query("SELECT `fid`,`name`,`id` FROM `f_razd` WHERE `id`='$rid'");
  126. if(!mysql_num_rows($rn)){textwrite('Раздела не существует!');break;};
  127. $rn=mysql_fetch_assoc($rn);
  128. $fn=mysql_query("SELECT `group`,`id`,`name` FROM `f_forums` WHERE `id`='".$rn['fid']."'");
  129. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  130. $fn=mysql_fetch_assoc($fn);
  131. if($udata['level']!=7 || $udata['level']==4){
  132. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  133. };
  134. $tn=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$id'");
  135. if(!mysql_num_rows($tn)){textwrite('Тема не существует!');};
  136. $tn=mysql_fetch_assoc($tn);
  137. $smarty->assign('fid',$rn['fid']);
  138. $smarty->assign('fn',$fn);
  139. $smarty->assign('rn',$rn);
  140. $smarty->assign('tname',$tn['name']);
  141.  
  142. $num=mysql_result(mysql_query("SELECT count(*) FROM `f_post` WHERE `tid`='$id'"),0);
  143. if(!$num){textwrite('Нет сообщений!');
  144. }else{
  145. $allpage=ceil($num/$onpage);
  146. if($page>$allpage){$page=$allpage;};
  147. $start=($page-1)*$onpage;
  148. $x=mysql_query("SELECT * FROM `f_post` WHERE `tid`='$id' ORDER BY `id` ASC LIMIT $start,$onpage");
  149. $arrdata=array();
  150. $fpost=array();
  151. $msgs=array();
  152. $isonline=array();
  153. $sps=array();
  154. $ava=array();
  155. while($row=mysql_fetch_assoc($x)){
  156. $forumpost=mysql_query("SELECT `forum_post` FROM `user` WHERE `name`='".$row['name']."'");
  157. $fpost[]=mysql_fetch_assoc($forumpost);
  158. $arrdata[]=$row;
  159. $ava[]=ava($row['name']);
  160. $msg=str_replace("\n",'<br/>',$row['msg']);
  161.  
  162. if($avt!=1){
  163. $msg=preg_replace('/\[ghide\](.*)\[\/ghide\]/isU','<span style="color:red">Скрыто от гостей</span>',$msg);
  164. }else{
  165. $msg=str_replace('[ghide]','',$msg);
  166. $msg=str_replace('[/ghide]','',$msg);
  167. };
  168. if(preg_match('/\[hide=[0-9]+\]/isU',$msg,$mat)){
  169. $hidepost=str_replace('[hide=','',$mat[0]);
  170. $hidepost=intval(str_replace(']','',$hidepost));
  171. if($udata['forum_post']<$hidepost && $udata['level']!=4 && $udata['level']!=7){
  172. $textmsg=($avt==1) ? '<span style="color:red">Скрытый текст. Надо <b>'.$hidepost.'</b> сообщений, у вас пока <b>'.$udata['forum_post'].'</b></span>' : '<span style="color:red">Текст скрыт на <b>'.$hidepost.'</b> постов</span>';
  173. $msg=preg_replace('/\[hide=[0-9]+\](.*)\[\/hide\]/isU',$textmsg,$msg);
  174. }else{
  175. $msg=preg_replace('/\[hide=[0-9]+\]/isU','',$msg);
  176. $msg=str_replace('[/hide]','',$msg);
  177. }
  178. };
  179. #$msgs[]=stripslashes(str_replace('&amp;','&',$msg));
  180. $msgs[]=$msg;
  181. $isonline[]=isonline($row['name']);
  182. $sps[]=mysql_result(mysql_query("SELECT count(*) FROM `sps` WHERE `pid`='".$row['id']."'"),0);
  183. };
  184. pagenavig($allpage,$page,'act=t&amp;id='.$id.'&amp;rid='.$rid);
  185. $smarty->assign('DATA',$arrdata);
  186. $smarty->assign('msgs',$msgs);
  187. $smarty->assign('fpost',$fpost);
  188. $smarty->assign('isonline',$isonline);
  189. $smarty->assign('sps',$sps);
  190. $smarty->assign('ava',$ava);
  191. };
  192. $smarty->assign('temopen',$tn['open']);
  193. $smarty->assign('temavtor',$tn['avtor']);
  194. $smarty->assign('myname',$udata['name']);
  195. $smarty->assign('temid',$tn['id']);
  196. $smarty->assign('temstuck',$tn['stuck']);
  197. break;
  198.  
  199.  
  200. //////////////////////////////Форма создания новой темы/////////////////////////
  201. case 'addtema':
  202. whereis($udata['name'],'Создание темы в форуме');
  203. if($avt!=1){textwrite('Вы не авторизованы!');break;};
  204.  
  205. $rid=intval($_GET['rid']);
  206. if(!$rid){textwrite('Пустые параметры!');break;};
  207.  
  208. $rn=mysql_query("SELECT `name`,`fid` FROM `f_razd` WHERE `id`='$rid'");
  209. if(!mysql_num_rows($rn)){textwrite('Раздела не существует!');break;};
  210. $rn=mysql_fetch_assoc($rn);
  211. $fn=mysql_query("SELECT `group` FROM `f_forums` WHERE `id`='".$rn['fid']."'");
  212. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  213. $fn=mysql_fetch_assoc($fn);
  214. if($udata['level']!=7 || $udata['level']==4){
  215. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  216. };
  217. $smarty->assign('rid',$rid);
  218. $smarty->assign('fid',$rn['fid']);
  219. break;
  220.  
  221.  
  222. //////////////////////////////////Сохранение темы///////////////////////////////
  223. case 'savetem':
  224. if($avt!=1){textwrite('Вы не авторизованы!');break;};
  225.  
  226. $rid=intval($_POST['rid']);
  227. $tname=bug($_POST['tname']);
  228. $tmsg=antimat(smile(bbcode(bug($_POST['tmsg']))));
  229. if(!$rid || !$tname || !$tmsg){textwrite('Пустые параметры!');break;};
  230.  
  231. $rn=mysql_query("SELECT `name`,`fid` FROM `f_razd` WHERE `id`='$rid'");
  232. if(!mysql_num_rows($rn)){textwrite('Раздела не существует!');break;};
  233. $rn=mysql_fetch_assoc($rn);
  234. $fn=mysql_query("SELECT `group`,`id` FROM `f_forums` WHERE `id`='".$rn['fid']."'");
  235. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  236. $fn=mysql_fetch_assoc($fn);
  237. if($udata['level']!=7 || $udata['level']==4){
  238. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  239. };
  240. if($fn['id']==6){
  241. $balls=1;
  242. }else{
  243. $balls=(empty($fn['group'])) ? $sysconf['balforforumtema'] : 0;
  244. };
  245. if($_SESSION['flud']>time()){textwrite('Не пишите так быстро!');break;};
  246. mysql_query("INSERT INTO `f_tems`(`rid`,`name`,`avtor`,`lastorder`)VALUES('$rid','$tname','".$udata['name']."','".time()."')");
  247. $insert=mysql_insert_id();
  248. mysql_query("INSERT INTO `f_post`(`tid`,`name`,`msg`,`date`,`ip`,`brows`)VALUES('$insert','".$udata['name']."','$tmsg','".time()."','$ip','$brows')");
  249. mysql_query("UPDATE `user` SET `bal`=`bal`+'$balls',`forum_post`=`forum_post`+1 WHERE `name`='".$udata['name']."'");
  250. $_SESSION['flud']=time()+$sysconf['flud'];
  251. $smarty->assign('rid',$rid);
  252. $smarty->assign('insert',$insert);
  253. break;
  254.  
  255.  
  256. ////////////////////////////////Форма для написания сообщения///////////////////
  257. case 'addpost':
  258. whereis($udata['name'],'Добавление сообщения в форуме');
  259. if($avt!=1){textwrite('Вы не авторизованы!');break;};
  260.  
  261. $tid=intval($_GET['tid']);
  262. if(!$tid){textwrite('Пустые параметры!');break;};
  263. $selectfromtem=mysql_fetch_Assoc(mysql_query("SELECT `rid` FROM `f_tems` WHERE `id`='$tid'"));
  264. $rid=$selectfromtem['rid'];
  265. $rn=mysql_query("SELECT `name`,`fid` FROM `f_razd` WHERE `id`='$rid'");
  266. if(!mysql_num_rows($rn)){textwrite('Раздела не существует!');break;};
  267. $rn=mysql_fetch_assoc($rn);
  268. $fn=mysql_query("SELECT `group` FROM `f_forums` WHERE `id`='".$rn['fid']."'");
  269. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  270. $fn=mysql_fetch_assoc($fn);
  271. if($udata['level']!=7 || $udata['level']==4){
  272. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  273. };
  274. $x=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$tid'");
  275. if(!mysql_num_rows($x)){textwrite('Темы не существует!');break;};
  276. $x=mysql_fetch_assoc($x);
  277. if($x['open']==1){textwrite('Тема закрыта для обсуждения!');break;};
  278. $otv=(!empty($_GET['otv'])) ? bug($_GET['otv']).', ' : '';
  279. $smarty->assign('tid',$tid);
  280. $smarty->assign('otv',$otv);
  281. break;
  282.  
  283.  
  284. //////////////////////////////////Сохранение сообщения//////////////////////////
  285. case 'savepost':
  286. if($avt!=1){textwrite('Вы не авторизованы!');break;};
  287.  
  288. $tid=intval($_POST['tid']);
  289. $msg=antimat(smile(bbcode(bug($_POST['msg']))));
  290. if(!$tid || !$msg){textwrite('Пустые параметры!');break;};
  291.  
  292. $selectfromtem=mysql_fetch_Assoc(mysql_query("SELECT `rid` FROM `f_tems` WHERE `id`='$tid'"));
  293. $rid=$selectfromtem['rid'];
  294.  
  295. if($_SESSION['flud']>time()){textwrite('Не пишите так быстро!');break;};
  296. $rn=mysql_query("SELECT `name`,`fid` FROM `f_razd` WHERE `id`='$rid'");
  297. if(!mysql_num_rows($rn)){textwrite('Раздела не существует!');break;};
  298. $rn=mysql_fetch_assoc($rn);
  299. $fn=mysql_query("SELECT `group`,`id` FROM `f_forums` WHERE `id`='".$rn['fid']."'");
  300. if(!mysql_num_rows($fn)){textwrite('Форума не существует!');break;};
  301. $fn=mysql_fetch_assoc($fn);
  302. if($udata['level']!=7 || $udata['level']==4){
  303. if((!empty($fn['group']) && $fn['group']!=$udata['group']) || ($avt!=1 && !empty($fn['group']))){textwrite('Доступ закрыт!');break;};
  304. };
  305. if($fn['id']==6){
  306. $balls=1;
  307. }else{
  308. $balls=(empty($fn['group'])) ? $sysconf['balforforum'] : 0;
  309. };
  310.  
  311. $x=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$tid'");
  312. if(!mysql_num_rows($x)){textwrite('Темы не существует!');break;};
  313. $x=mysql_fetch_assoc($x);
  314. if($x['open']==1){textwrite('Тема закрыта для обсуждения!');break;};
  315.  
  316. if($_FILES['attach']['error']!=4){
  317. if($_FILES['attach']['error']>0){textwrite('Ошибка при загрузке файла!');break;};
  318. if($_FILES['attach']['size']>(1024*9848)){textwrite('Слишком большой размер файла!');break;};
  319. if(mb_strlen($_FILES['attach']['name'])>25){textwrite('Слишком длинное название файла!');break;};
  320. if(eregi("[^a-z0-9.()+_-]",$_FILES['attach']['name'])){textwrite('В названии не допустимые символы!');break;};
  321. if(count(explode('.',$_FILES['attach']['name']))!=2){textwrite('Файлы с двойным расширением запрещены!');break;};
  322. $ex=pathinfo($_FILES['attach']['name']);
  323. $ext=mb_strtolower($ex['extension']);
  324. if(!preg_match('/gif$|jpg$|jpeg$|png$|mp3$|mp4$|3gp$|3gpp$|zip$|rar$|jar$|jad$|txt$/isU',$ext)){
  325. textwrite('Попытка загрузки запрещонного расширения '.$ext.'!');break;};
  326. $attach=time().'_'.bug($_FILES['attach']['name']);
  327. if(@move_uploaded_file($_FILES['attach']['tmp_name'],BASE.'forum/file/'.$attach)){
  328. }else{textwrite('Ошибка!');break;};
  329. };
  330. mysql_query("INSERT INTO `f_post`(`tid`,`name`,`msg`,`date`,`ip`,`brows`,`attach`)VALUES('$tid','".$udata['name']."','$msg','".time()."','$ip','$brows','$attach')");
  331. mysql_query("UPDATE `f_tems` SET `lastorder`='".time()."' WHERE `id`='$tid'");
  332. mysql_query("UPDATE `user` SET `bal`=`bal`+'$balls',`forum_post`=`forum_post`+1 WHERE `name`='".$udata['name']."'");
  333. $_SESSION['flud']=time()+$sysconf['flud'];
  334. $smarty->assign('tid',$tid);
  335. $smarty->assign('rid',$rid);
  336. break;
  337.  
  338.  
  339. //////////////////////////Форма редактирования своих постов/////////////////////
  340. case 'editpost':
  341. whereis($udata['name'],'Редактирование своих сообщений в форуме');
  342. if($avt!=1){textwrite('Вы не авторизованы!');break;};
  343.  
  344. $id=intval($_GET['id']);
  345. if(!$id){textwrite('Пустые параметры!');break;};
  346. $selectfromtem=mysql_fetch_assoc(mysql_Query("SELECT `tid` FROM `f_post`"));
  347. $tid=$selectfromtem['tid'];
  348. $x=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$tid'");
  349. if(!mysql_num_rows($x)){textwrite('Темы не существует!');break;};
  350. $x=mysql_fetch_assoc($x);
  351. if($x['open']==1){textwrite('Тема закрыта для обсуждения!');break;};
  352. $p=mysql_query("SELECT * FROM `f_post` WHERE `id`='$id' AND `name`='".$udata['name']."'");
  353. if(!mysql_num_rows($p)){textwrite('Это не ваш пост!');break;};
  354. $p=mysql_fetch_assoc($p);
  355. if((($p['date']+$sysconf['forumedit'])-time())<1){textwrite('Вы не можете редактировать старые сообщения!');break;};
  356. $msg=nobbcode($p['msg']);
  357. $smarty->assign('msg',$msg);
  358. $smarty->assign('id',$id);
  359. #$smarty->assign('tid',$tid);
  360. #$smarty->assign('rid',$x['rid']);
  361. break;
  362.  
  363.  
  364. ////////////////////////////Сохранение изменённого поста////////////////////////
  365. case 'saveeditpost':
  366. if($avt!=1){textwrite('Вы не авторизованы!');break;};
  367.  
  368. $id=intval($_POST['id']);
  369. $msg=antimat(smile(bbcode(bug($_POST['msg']))));
  370. if(!$id || !$msg){textwrite('Пустые параметры!');break;};
  371.  
  372. $selectfromtem=mysql_fetch_assoc(mysql_Query("SELECT `tid` FROM `f_post`"));
  373. $tid=$selectfromtem['tid'];
  374.  
  375. $x=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$tid'");
  376. if(!mysql_num_rows($x)){textwrite('Темы не существует!');break;};
  377. $x=mysql_fetch_assoc($x);
  378. if($x['open']==1){textwrite('Тема закрыта для обсуждения!');break;};
  379. $p=mysql_query("SELECT * FROM `f_post` WHERE `id`='$id' AND `name`='".$udata['name']."'");
  380. if(!mysql_num_rows($p)){textwrite('Это не ваш пост!');break;};
  381. $p=mysql_fetch_assoc($p);
  382. if((($p['date']+$sysconf['forumedit'])-time())<1){textwrite('Вы не можете редактировать старые сообщения!');break;};
  383. mysql_query("UPDATE `f_post` SET `msg`='$msg' WHERE `id`='$id'");
  384. $smarty->assign('tid',$tid);
  385. $smarty->assign('rid',$x['rid']);
  386. break;
  387.  
  388.  
  389. /////////////////////////////Закрытие своей темы////////////////////////////////
  390. case 'closetem':
  391. if($avt!=1){textwrite('Только для зарегистрированых пользователей!');break;};
  392. $id=intval($_GET['id']);
  393. if(!$id){textwrite('Пустые параметры!');break;};
  394. $x=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$id'");
  395. if(!mysql_num_rows($x)){textwrite('Такой темы не существует!');break;};
  396. $x=mysql_fetch_assoc($x);
  397. if($udata['level']!=4 && $udata['level']!=7){
  398. if($x['avtor']!=$udata['name']){textwrite('Закрыть тему может только автор!');break;};
  399. };
  400. if($x['open']==1){textwrite('Тема уже закрыта!');break;};
  401. mysql_query("UPDATE `f_tems` SET `open`='1' WHERE `id`='$id'");
  402. $smarty->assign('id',$x['id']);
  403. $smarty->assign('rid',$x['rid']);
  404. break;
  405.  
  406.  
  407. /////////////////////////////////Открытие своей темы////////////////////////////
  408. case 'opentem':
  409. if($avt!=1){textwrite('Только для зарегистрированых пользователей!');break;};
  410. $id=intval($_GET['id']);
  411. if(!$id){textwrite('Пустые параметры!');break;};
  412. $x=mysql_query("SELECT * FROM `f_tems` WHERE `id`='$id'");
  413. if(!mysql_num_rows($x)){textwrite('Такой темы не существует!');break;};
  414. $x=mysql_fetch_assoc($x);
  415. if($udata['level']!=4 && $udata['level']!=7){
  416. if($x['avtor']!=$udata['name']){textwrite('Открыть тему может только автор!');break;};
  417. };
  418. if($x['open']!=1){textwrite('Тема и так открыта!');break;};
  419. mysql_query("UPDATE `f_tems` SET `open`='' WHERE `id`='$id'");
  420. $smarty->assign('id',$x['id']);
  421. $smarty->assign('rid',$x['rid']);
  422. break;
  423.  
  424.  
  425.  
  426.  
  427. case 'new':
  428. if($avt!=1){textwrite('Эта функция только для зарегистрированых');break;};
  429. $t=time();
  430. $num=mysql_result(mysql_query("SELECT count(*) FROM `f_tems` WHERE `lastorder`>'".($t-40000)."'"),0);
  431. if(!$num){textwrite('Нет новых сообщений');}else{
  432. $allpage=ceil($num/$onpage);
  433. if($page>$allpage){$page=$allpage;};
  434. $start=($page-1)*$onpage;
  435. $x=mysql_query("SELECT `id`,`rid`,`name`,`lastorder` FROM `f_tems` WHERE `lastorder`>'".($t-40000)."' ORDER BY `lastorder` DESC LIMIT $start,$onpage");
  436. $arrdata=array();
  437. $rname=array();
  438. $us=array();
  439. while($row=mysql_fetch_assoc($x)){
  440. if(hideforum($row['rid'],$udata['group'],$udata['level'])){
  441. $arrdata[]=$row;
  442. $rname[]=mysql_fetch_assoc(mysql_query("SELECT `id`,`name`,`fid` FROM `f_razd` WHERE `id`='".$row['rid']."'"));
  443. $us[]=mysql_fetch_assoc(mysql_query("SELECT `name` FROM `f_post` WHERE `tid`='".$row['id']."' ORDER BY `date` DESC"));
  444. };
  445. };
  446. pagenavig($allpage,$page,'act=new');
  447. $smarty->assign('DATA',$arrdata);
  448. $smarty->assign('rname',$rname);
  449. $smarty->assign('us',$us);
  450. };
  451. break;
  452.  
  453.  
  454. case 'search':break;
  455.  
  456.  
  457. case 'gosearch':
  458. $string=(!$_POST['str']) ? bug($_GET['str']) : bug($_POST['str']);
  459. $in=(!$_POST['in']) ? intval($_GET['id']) : intval($_POST['in']);
  460. $smarty->assign('in',$in);
  461. if(!$string || mb_strlen($string)<=3){textwrite('Вы не указали что искать');}else{
  462. $sin=($in==1) ? 'f_tems' : 'f_post';
  463. $wh=($in==1) ? 'name' : 'msg';
  464. $sel=($in==1) ? '`name`,`id`,`rid`' : '`tid`';
  465. $num=mysql_result(mysql_query("SELECT count(*) FROM `$sin` WHERE `$wh` LIKE '%$string%'"),0);
  466. if(!$num){textwrite('Нет совпадений');}else{
  467. $allpage=ceil($num/$onpage);
  468. if($page>$allpage){$page=$allpage;};
  469. $start=($page-1)*$onpage;
  470. $x=mysql_query("SELECT $sel FROM `$sin` WHERE `$wh` LIKE '%$string%' LIMIT $start,$onpage");
  471. $arrdata=array();
  472. $tema=array();
  473. while($row=mysql_fetch_assoc($x)){
  474. $arrdata[]=$row;
  475. if($in!=1){
  476. $tema[]=mysql_fetch_assoc(mysql_query("SELECT `name`,`rid`,`id` FROM `f_tems` WHERE `id`='".$row['tid']."'"));
  477. };
  478. };
  479. pagenavig($allpage,$page,'act=gosearch&amp;str='.$str.'&amp;in='.$in);
  480. $smarty->assign('DATA',$arrdata);
  481. $smarty->assign('tema',$tema);
  482. };
  483. };
  484. break;
  485.  
  486.  
  487.  
  488.  
  489. case 'mytems':
  490. $id=bug($_GET['id']);
  491. if(!$id){textwrite('Пустые параметры!');break;};
  492. $smarty->assign('id',$id);
  493. $num=mysql_result(mysql_query("SELECT count(*) FROM `f_tems` WHERE `avtor`='$id'"),0);
  494. if(!$num){textwrite('Пользователь ещо не создавал темы!');}else{
  495. $allpage=ceil($num/$onpage);
  496. if($page>$allpage){$page=$allpage;};
  497. $start=($page-1)*$onpage;
  498. $x=mysql_query("SELECT `id`,`name`,`rid` FROM `f_tems` WHERE `avtor`='$id' ORDER BY `lastorder` DESC LIMIT $start,$onpage");
  499. $arrdata=array();
  500. while($row=mysql_fetch_Assoc($x)){
  501. if(hideforum($row['rid'],$udata['group'],$udata['level']))
  502. $arrdata[]=$row;
  503. };
  504. pagenavig($allpage,$page,'act=mytems&amp;id='.$id);
  505. $smarty->assign('DATA',$arrdata);
  506. };
  507. break;
  508.  
  509.  
  510. case 'mypost':
  511. $id=bug($_GET['id']);
  512. if(!$id){textwrite('Пустые параметры!');break;};
  513. $smarty->assign('id',$id);
  514. $num=mysql_result(mysql_query("SELECT count(*) FROM `f_post` WHERE `name`='$id'"),0);
  515. if(!$num){textwrite('Пользователь ещо не писал на форуме!');}else{
  516. $allpage=ceil($num/$onpage);
  517. if($page>$allpage){$page=$allpage;};
  518. $start=($page-1)*$onpage;
  519. $x=mysql_query("SELECT `id`,`tid`,`msg` FROM `f_post` WHERE `name`='$id' ORDER BY `date` DESC LIMIT $start,$onpage");
  520. $arrdata=array();
  521. $tema=array();
  522. $msgs=array();
  523. while($row=mysql_fetch_assoc($x)){
  524. $TID=mysql_fetch_assoc(mysql_query("SELECT `rid` FROM `f_tems` WHERE `id`='".$row['tid']."'"));
  525. if(hideforum($TID['rid'],$udata['group'],$udata['level'])){
  526. $tema[]=mysql_fetch_assoc(mysql_query("SELECT `name`,`id`,`rid` FROM `f_tems` WHERE `id`='".$row['tid']."'"));
  527. $arrdata[]=$row;
  528. $msg=$row['msg'];
  529. if($avt!=1){
  530. $msg=preg_replace('/\[ghide\](.*)\[\/ghide\]/isU','<span style="color:red">Скрыто от гостей</span>',$msg);
  531. }else{
  532. $msg=str_replace('[ghide]','',$msg);
  533. $msg=str_replace('[/ghide]','',$msg);
  534. };
  535. if(preg_match('/\[hide=[0-9]+\]/isU',$msg,$mat)){
  536. $hidepost=str_replace('[hide=','',$mat[0]);
  537. $hidepost=intval(str_replace(']','',$hidepost));
  538. if($udata['forum_post']<$hidepost && $udata['level']!=4 && $udata['level']!=7){
  539. $textmsg=($avt==1) ? '<span style="color:red">Скрытый текст. Надо <b>'.$hidepost.'</b> сообщений, у вас пока <b>'.$udata['forum_post'].'</b></span>' : '<span style="color:red">Текст скрыт на <b>'.$hidepost.'</b> постов</span>';
  540. $msg=preg_replace('/\[hide=[0-9]+\](.*)\[\/hide\]/isU',$textmsg,$msg);
  541. }else{
  542. $msg=preg_replace('/\[hide=[0-9]+\]/isU','',$msg);
  543. $msg=str_replace('[/hide]','',$msg);
  544. }
  545. };
  546. $msgs[]=$msg;
  547. };
  548. };
  549. pagenavig($allpage,$page,'act=mypost&amp;id='.$id);
  550. $smarty->assign('DATA',$arrdata);
  551. $smarty->assign('tema',$tema);
  552. $smarty->assign('msgs',$msgs);
  553. };
  554. break;
  555.  
  556.  
  557. case 'sps':
  558. $id=intval($_GET['id']);
  559. if(!$id){textwrite('Пустые параметры');break;};
  560. if($udata['forum_post']<10){textwrite('Надо иметь не менее 10 постов на форуме что бы благодарить!');break;}
  561. $ispost=mysql_query("SELECT `tid`,`name` FROM `f_post` WHERE `id`='$id'");
  562. if(!mysql_num_rows($ispost)){textwrite('Такого сообщения не существует!');break;};
  563. $ispost=mysql_fetch_assoc($ispost);
  564. if($ispost['name']==$udata['name']){textwrite('Нельзя благодарить сам себя!');break;};
  565. $sps=mysql_query("SELECT `id` FROM `sps` WHERE `pid`='$id' AND `kto`='".$udata['name']."'");
  566. if(mysql_num_rows($sps)>0){textwrite('Вы уже благодарили за это сообщение!');break;};
  567. mysql_query("INSERT INTO `sps` (`pid`,`kto`,`komu`,`date`)VALUES('$id','".$udata['name']."','".$ispost['name']."','".time()."')");
  568. $rid=mysql_fetch_assoc(mysql_query("SELECT `rid` FROM `f_tems` WHERE `id`='".$ispost['tid']."'"));
  569. $smarty->assign('tid',$ispost['tid']);
  570. $smarty->assign('rid',$rid['rid']);
  571. break;
  572.  
  573. };
  574. $smarty->display('forum.tpl');
  575. ?>