View file forum/search.php

File size: 15.03Kb
  1. <?php
  2. require_once"../template/start.php";
  3. require_once"../template/regglobals.php";
  4. require_once"../template/config.php";
  5. require_once"setforum.php";
  6. require_once"../template/functions.php";
  7. require_once"../template/antidos.php";
  8. require_once"../template/cookies.php";
  9. require_once"../template/gzip.php";
  10. require_once"../template/header.php";
  11. require_once"../template/referer.php";
  12. include_once"../themes/$config_themes/index.php";
  13.  
  14. echo '<img src="../images/img/bsearch.gif" alt=""> <b>Поиск по форуму</b><br><br>';
  15.  
  16. $suf = @file(BASEDIR."local/dataforumset/dataforumuser/$log.dat");
  17. if ($suf!=""){
  18. $lsf = explode(":||:",$suf[0]);}
  19.  
  20. if($config_forum_off=="1"){
  21.  
  22. if ($provlog==$_SESSION['log'] && $provpar==md5($_SESSION['par']) && $_SESSION['log']!="" && md5($_SESSION['par'])!=""){
  23.  
  24. if($config_search=="1"){
  25. if(!empty($lsf[6]) || $config_usnastr==0){
  26.  
  27. $minfindme=3; // Минимальное кол-во символов в слове для поиска
  28. $maxfindme=25; // Максимальное кол-во символов в слове для поиска
  29. $config_searchforum=10; //Сообщений на страницу
  30.  
  31. if(!isset($action)){
  32. if($config_themes!="wml"){
  33. echo '<form action="search.php?action=search&amp;'.SID.'" method="post">';
  34. echo '<b>Запрос:</b><br><input type="text" name="findme" /><br>';
  35. echo '<br><b>Искать:</b><br>';
  36. echo '<input name="ftype" type="radio" value="1" checked> В темах<br>';
  37. echo '<input name="ftype" type="radio" value="2"> В сообщениях<br>';
  38. echo '<br><b>Тип запроса:</b><br>';
  39. echo '<input name="tip" type="radio" value="1" checked> Или<br>';
  40. echo '<input name="tip" type="radio" value="2"> И<br>';
  41. echo '<br><input type="submit" value="Поиск" /></form><hr>';
  42.  
  43. }else{
  44. echo '<br>Запрос:<br>';
  45. echo '<input name="findme" /><br>';
  46. echo '<br>Искать: <br><select name="ftype">';
  47. echo '<option value="1">В темах</option>';
  48. echo '<option value="2">В сообщениях</option></select><br>';
  49. echo '<br>Тип запроса: <br><select name="tip">';
  50. echo '<option value="1">Или</option>';
  51. echo '<option value="2">И</option></select><br>';
  52. echo '<br><anchor>Поиск';
  53. echo '<go href="search.php?action=search&amp;'.SID.'" method="post">';
  54. echo '<postfield name="findme" value="$(findme)"/>';
  55. echo '<postfield name="ftype" value="$(ftype)"/>';
  56. echo '<postfield name="tip" value="$(tip)"/>';
  57. echo '</go></anchor><br>--------------------<br>';
  58. }
  59. echo '<b>Последние запросы</b><br><br>';
  60. $file = file(BASEDIR."local/datatmp/forumsearch.dat");
  61. $file = array_reverse($file);
  62. $countf=count($file); if($countf>5){$countf=5;}
  63. if($countf>0){
  64. for ($i = 0; $i < $countf; $i++){
  65. echo $file[$i].'<br>';}
  66. }else{echo 'Запросов еще не было!<br>';}}
  67.  
  68.  
  69. //----------------------- Поиск файлов ----------------------------//
  70. if($action=="search"){
  71. $findme=check(trim($findme));
  72. $findmetol=rus_utf_tolower($findme);
  73. $findmewords=explode(" ",$findmetol);
  74. $wordsitogos=count($findmewords);
  75.  
  76. for ($wi = 0; $wi < $wordsitogos; $wi++){
  77. if(strlen(utf_to_win($findmewords[$wi]))>=3){$findmeword[]=$findmewords[$wi];}
  78. }
  79. $wordsitogo=count($findmeword);
  80.  
  81. if ($findme!= "" && strlen(utf_to_win($findme)) >= $minfindme && strlen(utf_to_win($findme))<$maxfindme) {
  82. //-------------------------Запись последних поисков--------------------------------//
  83. $dows= file(BASEDIR."local/datatmp/forumsearch.dat");
  84. $dows=preg_replace ("|[\r\n]+|si","",$dows);
  85. if (!in_array($findme, $dows)) {
  86. $fp=fopen(BASEDIR."local/datatmp/forumsearch.dat","a+");
  87. flock ($fp,LOCK_EX);
  88. fputs($fp,"$findme\r\n");
  89. fflush ($fp);
  90. flock ($fp,LOCK_UN);
  91. fclose($fp);
  92. chmod ($fp, 0666);
  93. chmod (BASEDIR."local/datatmp/forumsearch.dat", 0666);
  94.  
  95. $file=file(BASEDIR."local/datatmp/forumsearch.dat");
  96. $i = count($file);
  97. if ($i>6) {
  98. $fp=fopen(BASEDIR."local/datatmp/forumsearch.dat","w");
  99. flock ($fp,LOCK_EX);
  100. unset($file[0],$file[1]);
  101. fputs($fp, implode("",$file));
  102. flock ($fp,LOCK_UN);
  103. fclose($fp);
  104. }}
  105. //---------------------------------------------------------------------------------//
  106. $dir = opendir ("../local/dataforum");
  107. while ($file = readdir ($dir)) {
  108. if (ereg("^top", $file)) { $fa[]=$file; }
  109.  
  110. if (ereg (".dat$", $file) && !ereg("^top", $file)&& !ereg("^main", $file)) { $fb[]=$file; }}
  111.  
  112. closedir ($dir);
  113. $fatotal = count($fa);
  114. $fbtotal = count($fb);
  115.  
  116.  
  117. $filtime=filemtime("../local/datatmp/forumthemes.dat");
  118. $filtime=$filtime+(3600*12); //12-часовое индексирование
  119. $ttime=time();
  120.  
  121. if($ttime>=$filtime){
  122. //-------------------- Запись тем ----------------------//
  123. clear_files("../local/datatmp/forumthemes.dat");
  124. for ($i = 0; $i < $fatotal; $i++){
  125. $tex = file("../local/dataforum/$fa[$i]");
  126. $toptotal = count($tex);
  127.  
  128. for ($x = 0; $x < $toptotal; $x++){
  129. $data = explode("|",$tex[$x]);
  130. if($data[3]!="" && $data[7]!="" && $data[8]!=""){
  131.  
  132. $dat_themes='|'.$data[0].'|'.rus_utf_tolower($data[3]).'|'.$data[5].'|'.$data[6].'|'.$data[7].'|'.$data[8].'|';
  133. $fp = fopen("../local/datatmp/forumthemes.dat","a+");
  134. flock ($fp,LOCK_EX);
  135. fputs($fp,"$dat_themes\r\n");
  136. fflush ($fp);
  137. flock ($fp,LOCK_UN);
  138. fclose($fp);
  139. chmod ($fp, 0666);
  140. chmod ("../local/datatmp/forumthemes.dat", 0666);
  141.  
  142.  
  143. }}}
  144.  
  145. //-------------------- Запись сообщений ----------------------//
  146. clear_files("../local/datatmp/forumtopic.dat");
  147. for ($i = 0; $i < $fbtotal; $i++){
  148. $tex = file("../local/dataforum/$fb[$i]");
  149. $toptotal = count($tex);
  150.  
  151. for ($x = 0; $x < $toptotal; $x++){
  152.  
  153. $data = explode("|",$tex[$x]);
  154.  
  155. if($data[3]!="" && $data[4]!="" && $data[7]!="" && $data[8]!=""){
  156.  
  157. $data[4]=strip_tags($data[4]);
  158. $dat_topic='|'.$data[0].'|'.$data[3].'|'.rus_utf_tolower($data[4]).'|'.$data[5].'|'.$data[6].'|'.$data[7].'|'.$data[8].'|'.$x.'|';
  159. $fp = fopen("../local/datatmp/forumtopic.dat","a+");
  160. flock ($fp,LOCK_EX);
  161. fputs($fp,"$dat_topic\r\n");
  162. fflush ($fp);
  163. flock ($fp,LOCK_UN);
  164. fclose($fp);
  165. chmod ($fp, 0666);
  166. chmod ("../local/datatmp/forumtopic.dat", 0666);
  167.  
  168.  
  169. }}}}
  170.  
  171.  
  172.  
  173. //----------------------Поиск в темах---------------------------------//
  174. if($ftype==1){
  175. $search_topic = file("../local/datatmp/forumthemes.dat");
  176. $alltotal = count($search_topic);
  177.  
  178. //--------------------------- Ищем любое сходство --------------------------//
  179. if($tip==1){
  180. for ($i = 0; $i < $alltotal; $i++){
  181.  
  182. $sdata = explode("|",$search_topic[$i]);
  183.  
  184. for ($wi = 0; $wi < $wordsitogo; $wi++){
  185. $findmetols=$findmeword[$wi];
  186.  
  187. if (strstr($sdata[2],$findmetols)){
  188. if (!in_array($sdata[2],$array_themout)){
  189. $sdata[2]=preg_replace("/$findmetols/",'<font color="#FF0000">'.$findmetols.'</font>',$sdata[2],1);
  190. $array_themauthor[]=$sdata[1];
  191. $array_themout[]=$sdata[2];
  192. $array_themdate[]=$sdata[3];
  193. $array_themtime[]=$sdata[4];
  194. $array_themid[]=$sdata[5];
  195. $array_themfid[]=$sdata[6];
  196.  
  197. }}}}}
  198.  
  199. //--------------------------- Ищем полное сходство --------------------------//
  200. if($tip==2){
  201.  
  202. for ($i = 0; $i < $alltotal; $i++){
  203.  
  204. $sdata = explode("|",$search_topic[$i]);
  205.  
  206.  
  207. if (strstr($sdata[2],$findmetol)){
  208. if (!in_array($sdata[2],$array_themout)){
  209.  
  210. $sdata[2]=preg_replace("/$findmetol/",'<font color="#FF0000">'.$findmetol.'</font>',$sdata[2],1);
  211. $array_themauthor[]=$sdata[1];
  212. $array_themout[]=$sdata[2];
  213. $array_themdate[]=$sdata[3];
  214. $array_themtime[]=$sdata[4];
  215. $array_themid[]=$sdata[5];
  216. $array_themfid[]=$sdata[6];
  217.  
  218. }}}
  219.  
  220. }
  221. $total=count($array_themout);
  222.  
  223. //------Вывод найденного--------//
  224. if($total>0){
  225. echo '<br>Поиск запроса <b>'.$findme.'</b> в темах<br>';
  226. echo 'Найдено совпадений: <b>'.(int)$total.'</b><br><br>';
  227.  
  228.  
  229. if (empty($_GET['start'])) $start = 0;
  230. else $start = $_GET['start'];
  231. if ($total < $start + $config_searchforum){ $end = $total; }
  232. else {$end = $start + $config_searchforum; }
  233. for ($i = $start; $i < $end; $i++){
  234.  
  235.  
  236. echo '<div class=b><img src="../images/img/forums.gif" alt=""> ';
  237. echo '<b>'.($i+1).'. <a href="../pages/anketa.php?uz='.$array_themauthor[$i].'&amp;'.SID.'">'.nickname($array_themauthor[$i]).'</a></b> ';
  238. echo '('.$array_themdate[$i].'/'.$array_themtime[$i].')</div>';
  239. echo '<div><b><a href="index.php?fid='.$array_themfid[$i].'&amp;id='.$array_themid[$i].'&amp;'.SID.'">'.$array_themout[$i].'</a></b></div>';
  240. }
  241.  
  242. echo '<hr>';
  243. if ($start != 0) {echo '<a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.($start - $config_searchforum).'&amp;'.SID.'">&lt;-Назад </a>';}else{echo '&lt;-Назад';}
  244. echo ' | ';
  245. if ($total > $start + $config_searchforum) {echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.($start + $config_searchforum).'&amp;'.SID.'">Далее-&gt;</a>';}else{echo 'Далее-&gt;';}
  246.  
  247. if($total>0){
  248.  
  249. $ba=ceil($total/$config_searchforum);
  250. $ba2=$ba*$config_searchforum-$config_searchforum;
  251.  
  252. echo '<br><hr>Страницы:';
  253. $asd=$start-($config_searchforum*3);
  254. $asd2=$start+($config_searchforum*4);
  255.  
  256. if($asd<$total && $asd>0){echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start=0&amp;'.SID.'">1</a> ... ';}
  257.  
  258. for($i=$asd; $i<$asd2;)
  259. {
  260. if($i<$total && $i>=0){
  261. $ii=floor(1+$i/$config_searchforum);
  262.  
  263. if ($start==$i) {
  264. echo ' <b>('.$ii.')</b>';
  265. }else {
  266. echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.$i.'&amp;'.SID.'">'.$ii.'</a>';
  267. }}
  268.  
  269. $i=$i+$config_searchforum;}
  270. if($asd2<$total){echo ' ... <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.$ba2.'&amp;'.SID.'">'.$ba.'</a>';}
  271. }
  272. echo '<br><br>';
  273.  
  274. }else{echo '<br>По вашему запросу ничего не найдено.<br>';}
  275.  
  276. }
  277.  
  278.  
  279. //----------------------Поиск в сообщениях---------------------------------//
  280. if($ftype==2){
  281. $search_topic = file("../local/datatmp/forumtopic.dat");
  282. $alltotal = count($search_topic);
  283.  
  284. //--------------------------- Ищем любое сходство --------------------------//
  285. if($tip==1){
  286. for ($i = 0; $i < $alltotal; $i++){
  287.  
  288. $sdata = explode("|",$search_topic[$i]);
  289.  
  290. for ($wi = 0; $wi < $wordsitogo; $wi++){
  291. $findmetols=$findmeword[$wi];
  292.  
  293. if (strstr($sdata[3],$findmetols)){
  294. if (!in_array($sdata[2],$array_topthemes)){
  295.  
  296. $sdata[3]=preg_replace("/$findmetols/",'[b][red]'.$findmetols.'[/red][/b]',$sdata[3],1);
  297.  
  298. $array_topauthor[]=$sdata[1];
  299. $array_topthemes[]=$sdata[2];
  300. $array_topout[]=$sdata[3];
  301. $array_topdate[]=$sdata[4];
  302. $array_toptime[]=$sdata[5];
  303. $array_topid[]=$sdata[6];
  304. $array_topfid[]=$sdata[7];
  305. $array_toppost[]=$sdata[8];
  306. }}}}}
  307.  
  308. //--------------------------- Ищем полное сходство --------------------------//
  309. if($tip==2){
  310.  
  311. for ($i = 0; $i < $alltotal; $i++){
  312.  
  313. $sdata = explode("|",$search_topic[$i]);
  314.  
  315.  
  316. if (strstr($sdata[3],$findmetol)){
  317. if (!in_array($sdata[2],$array_topthemes)){
  318. $sdata[3]=preg_replace("/$findmetol/",'[b][red]'.$findmetol.'[/red][/b]',$sdata[3],1);
  319. $array_topauthor[]=$sdata[1];
  320. $array_topthemes[]=$sdata[2];
  321. $array_topout[]=$sdata[3];
  322. $array_topdate[]=$sdata[4];
  323. $array_toptime[]=$sdata[5];
  324. $array_topid[]=$sdata[6];
  325. $array_topfid[]=$sdata[7];
  326. $array_toppost[]=$sdata[8];
  327.  
  328. }}}
  329.  
  330. }
  331.  
  332.  
  333.  
  334. $total=count($array_topout);
  335.  
  336.  
  337. //------------------------------ Вывод найденного ----------------------------------//
  338. if($total>0){
  339. echo '<br>Поиск запроса <b>'.$findme.'</b> в сообщениях<br>';
  340. echo 'Найдено совпадений: <b>'.(int)$total.'</b><br><br>';
  341.  
  342.  
  343. if (empty($_GET['start'])) $start = 0;
  344. else $start = $_GET['start'];
  345. if ($total < $start + $config_searchforum){ $end = $total; }
  346. else {$end = $start + $config_searchforum; }
  347. for ($i = $start; $i < $end; $i++){
  348.  
  349. $page = floor($array_toppost[$i] / $config_forumpost) * $config_forumpost;
  350.  
  351. echo '<div class=b><img src="../images/img/forums.gif" alt=""> ';
  352. echo '<b>'.($i+1).'. <a href="index.php?fid='.$array_topfid[$i].'&amp;id='.$array_topid[$i].'&amp;page='.$page.'&amp;'.SID.'">'.$array_topthemes[$i].'</a></b> ';
  353. echo '('.$array_topdate[$i].'/'.$array_toptime[$i].')</div>';
  354.  
  355. echo '<div>Автор: <b><a href="../pages/anketa.php?uz='.$array_topauthor[$i].'&amp;'.SID.'">'.nickname($array_topauthor[$i]).'</a></b><br>';
  356. echo 'Сообщение: '.bb_code($array_topout[$i]).'</div>';
  357. }
  358.  
  359. echo '<hr>';
  360. if ($start != 0) {echo '<a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.($start - $config_searchforum).'&amp;'.SID.'">&lt;-Назад</a> ';}else{echo '&lt;-Назад';}
  361. echo ' | ';
  362. if ($total > $start + $config_searchforum) {echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.($start + $config_searchforum).'&amp;'.SID.'">Далее-&gt;</a>';}else{echo 'Далее-&gt;';}
  363.  
  364. if($total>0){
  365.  
  366. $ba=ceil($total/$config_searchforum);
  367. $ba2=$ba*$config_searchforum-$config_searchforum;
  368.  
  369. echo '<br><hr>Страницы:';
  370. $asd=$start-($config_searchforum*3);
  371. $asd2=$start+($config_searchforum*4);
  372.  
  373. if($asd<$total && $asd>0){echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start=0&amp;'.SID.'">1</a> ... ';}
  374.  
  375. for($i=$asd; $i<$asd2;)
  376. {
  377. if($i<$total && $i>=0){
  378. $ii=floor(1+$i/$config_searchforum);
  379.  
  380. if ($start==$i) {
  381. echo ' <b>('.$ii.')</b>';
  382. }else {
  383. echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.$i.'&amp;'.SID.'">'.$ii.'</a>';
  384. }}
  385.  
  386. $i=$i+$config_searchforum;}
  387. if($asd2<$total){echo ' ... <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.$ba2.'&amp;'.SID.'">'.$ba.'</a>';}
  388. }
  389. echo '<br><br>';
  390.  
  391. }else{echo '<br>По вашему запросу ничего не найдено.<br>';}
  392.  
  393.  
  394.  
  395.  
  396. }
  397.  
  398.  
  399. }else{echo '<br>Ваш запрос пуст, менее '.(int)$minfindme.' или более '.(int)$maxfindme.' символов!<br>'; }
  400. echo '<br><img src="../images/img/back.gif" alt=""> <a href="search.php?'.SID.'">Вернуться</a>';
  401. }
  402.  
  403. }else{
  404. echo'<center><font color="red">Поиск по форуму отключен вами в личных настройках!!!</font></center>';}}
  405.  
  406. if($config_top=="0"){
  407. echo'<center><font color="red">Поиск по форуму отключен!!!</font></center>';}
  408.  
  409. }else{
  410. echo'Вы не авторизованы для просмотра';}
  411. }
  412.  
  413. if($config_forum_off=="0"){
  414. echo'<center><font color="red">Форум сайта отключен!</font></center>';}
  415.  
  416. echo '<br><img src="../images/img/panel.gif" alt=""> <a href="index.php?'.SID.'">В форум</a>';
  417. echo '<br><img src="../images/img/homepage.gif" alt=""> <a href="../index.php?'.SID.'">На главную</a>';
  418. include_once"../themes/$config_themes/foot.php";
  419. ?>