Файл: forum/inc/search_act.php
Строк: 35
<?
include_once '../sys/includes/stemmer.php';
$stemmer=new Lingua_Stem_Ru();
if (isset($_POST['in']) && $_POST['in']!=null && preg_match('#^(r|f)([0-9]+)$#', $_POST['in'], $in))
{
if ($in[1]=='f' && mysql_result(mysql_query("SELECT COUNT(*) FROM `forum_f` WHERE `id` = '$in[2]' ".((!isset($user) || $user['level']==0)?"AND `adm` = '0'":null)),0)==1)
{
$searched['in']['m']='f';
$searched['in']['id']=$in[2];
}
else if($in[1]=='r')
{
$searched['in']['m']='r';
$searched['in']['id']=$in[2];
}
}
if (!isset($_POST['text']) || strlen2($_POST['text'])<3)
{
$err='Ошибочный запрос!';
}else{
$s_arr=explode("(t|n|r| )+", $_POST['text']);
$searched['text']=implode(' ',$s_arr);
for ($i=0;$i<count($s_arr) ;$i++ )
{
$st=$stemmer->stem_word($s_arr[$i]);
if (strlen2($st)<3)
{
continue;
}
$searched['mark'][$i]='#('.$st.'[a-zа-я0-9]*)#uim';
$s_arr_mysql[$i]=my_esc('+'.$st.'*');
}
}
if (isset($s_arr_mysql))
{
$adm_add=NULL;
$adm_add2=NULL;
if (!isset($user) || $user['level']==0)
{
$q222=mysql_query("SELECT * FROM `forum_f` WHERE `adm` = '1'");
while ($adm_f = mysql_fetch_assoc($q222))
{
$adm_add[]="`forum_p`.`id_forum` <> '$adm_f[id]'";
}
if (sizeof($adm_add)!=0)
$adm_add2=implode(' AND ', $adm_add).' AND ';
}
$searched['query']=implode(' ', $s_arr_mysql);
$searched['sql_query']="SELECT COUNT(`forum_p`.`id`) AS `k_post`, `forum_t`.`id`, `forum_t`.`name`, `forum_t`.`id_forum`, `forum_t`.`id_razdel`, `forum_t`.`up`, `forum_t`.`close`, `forum_t`.`time_create`, `forum_p`.`id` AS `id_post`, `forum_p`.`msg` FROM `forum_t` LEFT JOIN `forum_p` ON `forum_p`.`id_them` = `forum_t`.`id` WHERE ".$adm_add2.($searched['in']['m']=='f'?"`forum_t`.`id_forum` = '".$searched['in']['id']."' AND ":null).($searched['in']['m']=='r'?"`forum_t`.`id_razdel` = '".$searched['in']['id']."' AND ":null)."MATCH (`forum_p`.`msg`,`forum_t`.`name`) AGAINST ('$searched[query]' IN BOOLEAN MODE) GROUP BY `forum_t`.`id`";
$q=mysql_query($searched['sql_query']);
while ($result=mysql_fetch_assoc($q))
{
$searched['result']=$result;
}
}
?>