View file forum/search.php

File size: 15.96Kb
<?php
#-----------------------------------------------------#
#          ********* WAP-MOTORS *********             #
#             Made by   :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#-----------------------------------------------------#	
require_once"../template/start.php";
require_once"../template/regglobals.php";
require_once"../template/config.php";
require_once"../template/functions.php";
require_once"../template/antidos.php";
require_once"../template/cookies.php";
require_once"../template/gzip.php";
require_once"../template/header.php";
require_once"../template/referer.php";
include_once"../themes/$config_themes/index.php";
include_once"../template/isset.php";

$minfindme=3; // Минимальное кол-во символов в слове для поиска
$maxfindme=25; // Максимальное кол-во символов в слове для поиска
$config_searchforum=10;	//Сообщений на страницу

if (isset($_GET['action'])){$action = $_GET['action'];} else {$action = "";}
if (isset($_GET['start'])){$start = (int)$_GET['start'];} else {$start = 0;}

echo '<img src="../images/img/bsearch.gif" alt="">  <b>Поиск по форуму</b><br><br>';

if($action==""){	
	
if($config_themes!="wml"){	
echo '<form action="search.php?action=search&amp;'.SID.'" method="post">';
echo '<b>Запрос:</b><br><input type="text" name="findme" /><br>';
echo '<br><b>Искать:</b><br>';
echo '<input name="ftype" type="radio" value="1" checked> В темах<br>';
echo '<input name="ftype" type="radio" value="2"> В сообщениях<br>';
echo '<br><b>Тип запроса:</b><br>';
echo '<input name="tip" type="radio" value="1" checked> Или<br>';
echo '<input name="tip" type="radio" value="2"> И<br>';
echo '<br><input type="submit" value="Поиск" /></form><hr>';

}else{
	
echo '<br>Запрос:<br>';
echo '<input name="findme" /><br>';
echo '<br>Искать: <br><select name="ftype">';
echo '<option value="1">В темах</option>';
echo '<option value="2">В сообщениях</option></select><br>';
echo '<br>Тип запроса: <br><select name="tip">';
echo '<option value="1">Или</option>';
echo '<option value="2">И</option></select><br>';
echo '<br><anchor>Поиск';
echo '<go href="search.php?action=search&amp;'.SID.'" method="post">';
echo '<postfield name="findme" value="$(findme)"/>';
echo '<postfield name="ftype" value="$(ftype)"/>';
echo '<postfield name="tip" value="$(tip)"/>';
echo '</go></anchor><br>--------------------<br>';	
}
echo '<b>Последние запросы</b><br><br>';
if(file_exists(BASEDIR."local/datatmp/forumsearch.dat")){
$file = file(BASEDIR."local/datatmp/forumsearch.dat");
$file = array_reverse($file);
$countf=count($file); 
if ($countf>5){$countf=5;}
if ($countf>0){
for ($i = 0; $i < $countf; $i++){
echo $file[$i].'<br>';
}
}else{ echo 'Запросов еще не было!<br>'; }
}else{ echo 'Запросов еще не было!<br>'; }
}


//----------------------- Поиск файлов ----------------------------//
if($action=="search"){

if(isset($_POST['findme'])){$findme = $_POST['findme'];} else {$findme = $_GET['findme'];}
if(isset($_POST['ftype'])){$ftype = $_POST['ftype'];} else {$ftype = $_GET['ftype'];}
if(isset($_POST['tip'])){$tip = $_POST['tip'];} else {$tip = $_GET['tip'];}

$findme=check(trim($findme));
$findmetol=rus_utf_tolower($findme);
$findmewords=explode(" ",$findmetol);
$wordsitogos=count($findmewords);
$findmeword = array();

for ($wi = 0; $wi < $wordsitogos; $wi++){
if(utf_strlen($findmewords[$wi])>=3){$findmeword[]=$findmewords[$wi];}	
}
$wordsitogo=count($findmeword);

if ($findme!= "" && utf_strlen($findme) >= $minfindme && utf_strlen($findme)<$maxfindme) {
	
//-------------------------Запись последних поисков--------------------------------//	
$dows= file(BASEDIR."local/datatmp/forumsearch.dat"); 
$dows=no_br($dows);

if (!in_array($findme, $dows)) {
	
$fp=fopen(BASEDIR."local/datatmp/forumsearch.dat","a+");  
flock ($fp,LOCK_EX);                                                              
fputs($fp,"$findme\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);  
chmod ($fp, 0666);
chmod (BASEDIR."local/datatmp/forumsearch.dat", 0666);

$file=file(BASEDIR."local/datatmp/forumsearch.dat"); 
$i = count($file);
if ($i>6) {
$fp=fopen(BASEDIR."local/datatmp/forumsearch.dat","w");
flock ($fp,LOCK_EX);
unset ($file[0],$file[1]);
fputs ($fp, implode($file));
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp);
}}
	
//---------------------------------------------------------------------------------//	
$fa = array();
$fb = array();

$dir = opendir (BASEDIR."local/dataforum"); 
while ($file = readdir ($dir)) {
	
if (ereg("^top", $file)) { $fa[]=$file; }

if (ereg ("\.dat$", $file) && !ereg("^top", $file)&& !ereg("^main", $file)) { 
$fb[]=$file; 
}} 
closedir ($dir); 	

$fatotal = count($fa); 
$fbtotal = count($fb); 

$filtime=filemtime(BASEDIR."local/datatmp/forumthemes.dat");
$filtime=$filtime+(3600*12); //12-часовое индексирование 

if($sitetime>=$filtime){
	
//-------------------- Запись тем ----------------------//
$dat_themes=array();
for ($i = 0; $i < $fatotal; $i++){
$tex = file(BASEDIR."local/dataforum/$fa[$i]");
$toptotal = count($tex); 

for ($x = 0; $x < $toptotal; $x++){
$data = explode("|",$tex[$x]);
if($data[3]!="" && $data[7]!="" && $data[8]!=""){
$dat_themes[]='|'.$data[0].'|'.rus_utf_tolower($data[3]).'||'.$data[9].'|'.$data[7].'|'.$data[8].'|';	
}}}	

$dat_themes=implode("\r\n",$dat_themes);

if($dat_themes!=""){
$fp = fopen(BASEDIR."local/datatmp/forumthemes.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
fputs($fp,"$dat_themes\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
chmod ($fp, 0666); 
chmod (BASEDIR."local/datatmp/forumthemes.dat", 0666); 	
}


//-------------------- Запись сообщений ----------------------//
$dat_topic=array();
for ($i = 0; $i < $fbtotal; $i++){
$tex = file(BASEDIR."local/dataforum/$fb[$i]");
$toptotal = count($tex); 

for ($x = 0; $x < $toptotal; $x++){
$data = explode("|",$tex[$x]);
if($data[3]!="" && $data[4]!="" && $data[7]!="" && $data[8]!=""){

$data[4]=strip_tags($data[4]);
$dat_topic[]='|'.$data[0].'|'.$data[3].'|'.rus_utf_tolower($data[4]).'||'.$data[9].'|'.$data[7].'|'.$data[8].'|'.$x.'|';	
}}}	

$dat_topic=implode("\r\n",$dat_topic);

if($dat_topic!=""){
$fp = fopen(BASEDIR."local/datatmp/forumtopic.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
fputs($fp,"$dat_topic\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
chmod ($fp, 0666); 
chmod (BASEDIR."local/datatmp/forumtopic.dat", 0666); 	
}
}


//----------------------Поиск в темах---------------------------------//
if($ftype==1){	
$search_topic = file(BASEDIR."local/datatmp/forumthemes.dat");
$alltotal = count($search_topic); 	

//--------------------------- Ищем любое сходство --------------------------//
if($tip==1){
	
$array_themauthor=array();
$array_themout=array();
$array_themtime=array();
$array_themid=array();
$array_themfid=array();

for ($i = 0; $i < $alltotal; $i++){

$sdata = explode("|",$search_topic[$i]);

for ($wi = 0; $wi < $wordsitogo; $wi++){
$findmetols=$findmeword[$wi];	

if (strstr($sdata[2],$findmetols)){
	
if (!in_array($sdata[2],$array_themout)){	
	
$sdata[2]=preg_replace("/$findmetols/",'<font color="#FF0000">'.$findmetols.'</font>',$sdata[2],1);	
	
$array_themauthor[]=$sdata[1];
$array_themout[]=$sdata[2];
$array_themtime[]=$sdata[4];
$array_themid[]=$sdata[5];
$array_themfid[]=$sdata[6];

}}}}}

//--------------------------- Ищем полное сходство --------------------------//
if($tip==2){

$array_themauthor=array();
$array_themout=array();
$array_themtime=array();
$array_themid=array();
$array_themfid=array();

for ($i = 0; $i < $alltotal; $i++){

$sdata = explode("|",$search_topic[$i]);

if (strstr($sdata[2],$findmetol)){
	
if (!in_array($sdata[2],$array_themout)){	

$sdata[2]=preg_replace("/$findmetol/",'<font color="#FF0000">'.$findmetol.'</font>',$sdata[2],1);		
	
$array_themauthor[]=$sdata[1];
$array_themout[]=$sdata[2];
$array_themtime[]=$sdata[4];
$array_themid[]=$sdata[5];
$array_themfid[]=$sdata[6];

}}}

}
$total=count($array_themout);

//------------------------------ Вывод найденного ----------------------------------//
if($total>0){
echo '<br>Поиск запроса <b>'.$findme.'</b> в темах<br>';
echo 'Найдено совпадений: <b>'.(int)$total.'</b><br><br>';


$start = (int)$_GET['start'];
if($start < 0 || $start > $total){$start = 0;}
if ($total < $start + $config_searchforum){ $end = $total; }
else {$end = $start + $config_searchforum; }
for ($i = $start; $i < $end; $i++){


echo '<div class=b><img src="../images/img/forums.gif" alt=""> '; 
echo '<b>'.($i+1).'. <a href="../pages/anketa.php?uz='.$array_themauthor[$i].'&amp;'.SID.'">'.nickname($array_themauthor[$i]).'</a></b> ';
echo '('.date_fixed($array_themtime[$i]).')</div>';
echo '<div><b><a href="index.php?fid='.$array_themfid[$i].'&amp;id='.$array_themid[$i].'&amp;'.SID.'">'.$array_themout[$i].'</a></b></div>';
}

echo '<hr>'; 
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;-Назад';}
echo ' | '; 
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;';}

if($total>0){

$ba=ceil($total/$config_searchforum);
$ba2=$ba*$config_searchforum-$config_searchforum;

echo '<br><hr>Страницы:';
$asd=$start-($config_searchforum*3);
$asd2=$start+($config_searchforum*4);

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> ... ';}

for($i=$asd; $i<$asd2;){
if($i<$total && $i>=0){
$ii=floor(1+$i/$config_searchforum);

if ($start==$i) {
echo ' <b>('.$ii.')</b>';
} else {
echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.$i.'&amp;'.SID.'">'.$ii.'</a>';
}}

$i=$i+$config_searchforum;}
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>';}
}
echo '<br><br>';

}else{echo '<b>По вашему запросу ничего не найдено.</b><br><br>';}

}


//----------------------Поиск в сообщениях---------------------------------//
if($ftype==2){	
$search_topic = file(BASEDIR."local/datatmp/forumtopic.dat");
$alltotal = count($search_topic); 	

//--------------------------- Ищем любое сходство --------------------------//
if($tip==1){

$array_topauthor=array();
$array_topthemes=array();
$array_topout=array();
$array_toptime=array();
$array_topid=array();
$array_topfid=array();
$array_toppost=array();

for ($i = 0; $i < $alltotal; $i++){

$sdata = explode("|",$search_topic[$i]);

for ($wi = 0; $wi < $wordsitogo; $wi++){
$findmetols=$findmeword[$wi];	

if (strstr($sdata[3],$findmetols)){
	
if (!in_array($sdata[2],$array_topthemes)){	

$sdata[3]=preg_replace("/$findmetols/",'[b][red]'.$findmetols.'[/red][/b]',$sdata[3],1);

$array_topauthor[]=$sdata[1];
$array_topthemes[]=$sdata[2];
$array_topout[]=$sdata[3];
$array_toptime[]=$sdata[5];
$array_topid[]=$sdata[6];
$array_topfid[]=$sdata[7];
$array_toppost[]=$sdata[8];
}}}}}

//--------------------------- Ищем полное сходство --------------------------//
if($tip==2){

$array_topauthor=array();
$array_topthemes=array();
$array_topout=array();
$array_toptime=array();
$array_topid=array();
$array_topfid=array();
$array_toppost=array();

for ($i = 0; $i < $alltotal; $i++){

$sdata = explode("|",$search_topic[$i]);

if (strstr($sdata[3],$findmetol)){
	
if (!in_array($sdata[2],$array_topthemes)){	
	
$sdata[3]=preg_replace("/$findmetol/",'[b][red]'.$findmetol.'[/red][/b]',$sdata[3],1);	
	
$array_topauthor[]=$sdata[1];
$array_topthemes[]=$sdata[2];
$array_topout[]=$sdata[3];
$array_toptime[]=$sdata[5];
$array_topid[]=$sdata[6];
$array_topfid[]=$sdata[7];
$array_toppost[]=$sdata[8];
}}}}

$total=count($array_topout);


//------------------------------ Вывод найденного ----------------------------------//
if($total>0){
echo '<br>Поиск запроса <b>'.$findme.'</b> в сообщениях<br>';
echo 'Найдено совпадений: <b>'.(int)$total.'</b><br><br>';


$start = (int)$_GET['start'];
if ($start < 0 || $start > $total){$start = 0;}
if ($total < $start + $config_searchforum){ $end = $total; }
else {$end = $start + $config_searchforum; }
for ($i = $start; $i < $end; $i++){

$page = floor($array_toppost[$i] / $config_forumpost) * $config_forumpost;

echo '<div class=b><img src="../images/img/forums.gif" alt=""> '; 
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> ';
echo '('.date_fixed($array_toptime[$i]).')</div>';

echo '<div>Автор: <b><a href="../pages/anketa.php?uz='.$array_topauthor[$i].'&amp;'.SID.'">'.nickname($array_topauthor[$i]).'</a></b><br>';
echo 'Сообщение: '.bb_code($array_topout[$i]).'</div>';
}

echo '<hr>'; 
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;-Назад';}
echo ' | '; 
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;';}

if($total>0){

$ba=ceil($total/$config_searchforum);
$ba2=$ba*$config_searchforum-$config_searchforum;

echo '<br><hr>Страницы:';
$asd=$start-($config_searchforum*3);
$asd2=$start+($config_searchforum*4);

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> ... ';}

for($i=$asd; $i<$asd2;)
{
if($i<$total && $i>=0){
$ii=floor(1+$i/$config_searchforum);

if ($start==$i) {
echo ' <b>('.$ii.')</b>';
}else {
	
echo ' <a href="search.php?action=search&amp;findme='.$findme.'&amp;ftype='.$ftype.'&amp;tip='.$tip.'&amp;start='.$i.'&amp;'.SID.'">'.$ii.'</a>';
}}

$i=$i+$config_searchforum;}
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>';}
}
echo '<br><br>';

}else{echo '<b>По вашему запросу ничего не найдено.</b><br><br>';}

}	

}else{echo '<b>Ваш запрос пуст, менее '.(int)$minfindme.' или более '.(int)$maxfindme.' символов!</b><br><br>'; }

echo '<img src="../images/img/back.gif" alt=""> <a href="search.php?'.SID.'">Вернуться</a>'; 
}

echo '<br><img src="../images/img/panel.gif" alt=""> <a href="index.php?'.SID.'">В форум</a>'; 
echo '<br><img src="../images/img/homepage.gif" alt=""> <a href="../index.php?'.SID.'">На главную</a>'; 
include_once"../themes/$config_themes/foot.php";
?>