Вход Регистрация
Файл: CMS/core/modules/blog_search.php
Строк: 121
<?php

if (!defined('CMS')) { die('Access Denied!'); }


$q = !empty($_REQUEST['q']) ? (string) $_REQUEST['q'] : '';

$logic = !empty($_REQUEST['logic']) ? (string) $_REQUEST['logic'] : 'or';

$lang['OR']          = 'или';
$lang['AND']         = 'и';
$lang['SEARCH_WORD'] = '«%s»';
$error               '';

$search_counts get_vars('search_counts_blog');             // Всего запросов

$search_results = (array) get_vars('search_results_blog');   // Последние запросы

$bad_querius = array("x22""x60""t""n""r""¬"); // Удаляемые символы из запроса

if (!empty($_REQUEST['q'])) {
 
    if (isset(
$_REQUEST['s'])) {

        if (
is_array($_REQUEST['s'])) {

            
$s $_REQUEST['s'];
        }
        else 
$s explode(';'$_REQUEST['s']);
    }
    else 
$s array_keys($categories);

    
$s array_map('intval'$s);

    if (!
in_array($logic, array('and''or'))) {

        
$logic 'or';
    }
    
$logic strtoupper$logic );

    
$q preg_replace('#[^a-zA-Zа-яА-Я0-9 -_@:;()+=.,&*!?<>#$"'/\]#siu', '', $q);
    
$q preg_replace('/s/u'' '$q);
    
$q preg_replace('/ {2,}/u'' '$q);
    
$q str_replace($bad_querius''strip_tags($q));
    if (
get_magic_quotes_gpc()) {

        
$q stripslashes($q);
    }
    
$q trim$q );

    if ( 
$q == '' ) {

        
$error 'Произошла Ошибка! Вы не ввели запрос &quot;Что искать?&quot;';
    }
    else if ( empty(
$s) )  {

        
$error 'Произошла Ошибка! Вы не выбрали категорию &quot;Где искать?&quot;';
    }
    else {

        
$q explode(' '$q);
        
array_splice($q3);
        
$escape_array = array(
                              
"x2a" => ""//*
                              
"x22" => ""//"
                              
"x2b" => ""//+
                              
"x2d" => ""//-
                              
"x7e" => ""//~
                              
"x28" => ""//(
                              
"x29" => ""//)
                              
"x3c" => ""//<
                              
"x3e" => ""  //>
                              
);

        for(
$i 0$query = array(); $i count$q ); $i++) {

            
$query[] = sprintf($lang['SEARCH_WORD'], check($q[$i]));
            
$q[$i]   = strtr($q[$i], $escape_array);
        }

        
$query implode(' ' $lang[$logic] . ' '$query);

        for(
$i 0$part_of_query ''$sep ''$i count$q ); $i++, $sep $logic) {

            
$part_of_query .= $sep " MATCH(`blog_title`,`blog_text`) AGAINST('" mysql_escape_string($q[$i]) . "*' IN BOOLEAN MODE) AND `blog_cats_id` IN(" implode(', '$s) . ") AND `blog_moders` = '0' ";

            
//$part_of_query .= $sep . " (`text` LIKE '%" . mysql_escape_string($q[$i]) . "%' OR `title` LIKE '%" . mysql_escape_string($q[$i]) . "%') ";
            //$part_of_query .= "AND`cid` IN(" . implode(', ', $s) . ") ";
        
}

        
$onpage = !empty($config['post_num']) ? num($config['post_num']) : 10;

        if (
$page 1$from = ($page 1) * $onpage; else $from 0;

        
$rows $db->selectPage$total"SELECT * FROM ?_blog_posts
                                          WHERE " 
$part_of_query "
                                          ORDER BY `blog_time` DESC
                                          LIMIT ?d, ?d"
$from$onpage);

        if ( 
$total == ) {

            
$error 'По вашему запросу ' $query ' ни чего не найдено!';
        }
        else { 
// Запись последних поисков

            
$sq function_exists('cms_substr') ? cms_substr(implode(' '$q), 064) : substr(implode(' '$q), 064);

            if ( 
count($search_results) > 25 ) {

                unset(
$search_results[0], $search_results[1]);
            }

            if (empty(
$search_results) || !in_array($sq,$search_results)) {

                
$search_counts[0] = round(num($search_counts[0]) + 1);
                
array_push($search_results,$sq);
                
set_vars('search_counts_blog',array($search_counts[0]));
                
set_vars('search_results_blog',$search_results);
            }
        }
    }

    if (!empty(
$error)) {

        
$inSes->addMessage($error'error');

        
show_header('Поиск в блогах');
    }
    else {

        
$c $from 1;
        
$start = ($page 1) * $onpage;
        if (
$start 0$start 0
        if (
$start $total 1$start $total 1;
        
$stop $start $onpage;
        if (
$stop $total$stop $total;

        
$desc[] = 'Поиск в блогах';
        
$desc[] = 'Результаты поиска - ' $query;

        
$v[] = '<div class="b">';
        
$v[] = '- Всего найдено: <strong>' intval$total ) . '</strong><br />';
        
$v[] = '- Показаны результаты с <strong>' intval$start 1) . '</strong>';
        
$v[] = '  по <strong>' intval$stop ) . '</strong> место<br /></div>';

        foreach( 
$rows as $row ) {

            
$idk num($row['blog_id']);
            
$cid num($row['blog_cats_id']);
            
$desc[] = $row['blog_title'];

            
$v[] = '<div class="b">' icon('list.gif''icons');
            
$v[] = ' <a href="' gen_uri('post'$idk) . '"><b>' $row['blog_title'] . '</b></a> (' get_date($row['blog_time']) . ')';
            
$v[] = '<br />';
            
$v[] = format_text($row['blog_text']) . '...<br />';
            
$v[] = '<a href="/' gen_uri('post'$idk) . '">Читать далее &#187;</a> | ';
            
$v[] = ' <a href="/' gen_uri('comments'$idk) . '">Комментарии</a> (' $row['blog_comments'] . ')';
            
$v[] = '</div>';
        }

        
show_header('Результаты поиска - ' $queryimplode(' '$desc), implode(' '$desc));

        echo 
implode('',$v);

        
$_q  'q=' urlencode(implode(' '$q));
        
$_q .= '&amp;s=' urlencode(implode(';'$s));
        
$_q .= '&amp;logic=' strtolower($logic);

        echo 
show_pages('search'$_q'p');
    }
}
else
{
    
show_header('Поиск в блогах');
}

    echo 
'<div class="b"><form action="' gen_uri('search') . '" method="post"><span class="blink">*</span> Ваш запрос:<br /><input name="q" type="text" value="' request('q') . '" /><br />Искать в:<br /><select name="s[]" multiple="multiple">';

    if (!empty(
$categories)) {

        foreach( 
$categories as $key => $val ) {

            list(
$name,$text,$count) = $val;

            echo 
'<option value="' $key '">' $name '</option>';
        }
    }
    else echo 
'<option>Разделы ещё не созданы!</option>';

    echo 
'</select><br />';

    if (
$logic == 'AND') {

        echo 
'<input type="radio" name="logic" value="and" checked="checked"> Все слова<br />';
        echo 
'<input type="radio" name="logic" value="or"> Любое из слов<br />';
    }
    else {

        echo 
'<input type="radio" name="logic" value="and"> Все слова<br />';
        echo 
'<input type="radio" name="logic" value="or" checked="checked"> Любое из слов<br />';
    }
    echo 
'<input name="send" type="submit" class="btns" value="Искать" /></form></div>';

    echo 
'<div class="b"><b>Последние запросы:</b><br />';

    
$search_results  get_vars('search_results_blog');

    if (
is_array($search_results)) {

        
$search_results  array_reverse$search_results );
        
$count count$search_results );
        
$show  = array();
        if ( 
$count 25 ) { $count 25; }

        if ( 
$count ) {

            
$sizes  = array('12pt''15.5pt''19pt''21.5pt''25pt');

            for (
$s 0$s $count$s++) {

                if (empty(
$search_results[$s])) continue;

                
$search[$s] = urldecode(preg_replace("|[rnt]+|si"""$search_results[$s]));

                
$path gen_uri('search''''q=' urlencode($search[$s]));

                if ( 
$config['themes'] == 'web' ) {

                    
$rand_keys array_rand($sizes2);

                    
$show[] = '<a href="' $path '" title="' $search[$s] . '" style="font-size:' $sizes[$rand_keys[0]] . ';">' $search[$s] . '</a>';
                }
                else 
$show[] = '<a href="' $path '" title="' $search[$s] . '">' $search[$s] . '</a>';
            }

            echo 
implode(', ',$show);
        }
        else echo 
'<b>Запросов ещё не было!</b>';
    }

    echo 
'</div><div class="b">Всего запросов: <b>' num($search_counts[0]) . '</b></div>';
    echo 
'<div class="b">' icon('return.png');
    echo 
' <a href="' gen_uri('index') . '">Блоги</a> | ';
    echo 
'<a href="' gen_uri('new') . '">Новые</a> | ';
    echo 
'<a href="' gen_uri('top') . '">Топ статей</a> | ';
    echo 
'<b>Поиск</b> / ';
    echo 
'<a href="' gen_uri('category') . '">Категории</a> | ';
    echo 
'<a href="' gen_uri('add') . '">Написать</a><br /></div>';


?>
Онлайн: 0
Реклама