Вход Регистрация
Файл: CMS/comm/comm_search.php
Строк: 92
<?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               = '';

$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($q, 3);
        
$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(`comm_name`,`comm_about`) AGAINST('" . mysql_escape_string($q[$i]) . "*' IN BOOLEAN MODE) AND `comm_cats_id` 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 ?_comm_comm
                                          WHERE " 
. $part_of_query . "
                                          ORDER BY `comm_count` DESC
                                          LIMIT ?d, ?d"
, $from, $onpage);

        if ( 
$total == 0 ) {

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

        
}
    }

    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['comm_id']);
            
$cid = num($row['comm_cats_id']);
            
$desc[] = $row['comm_name'];
            
$icon   = ($row['comm_status'] == 1) ? 'com_closed.gif' : 'com_open.gif';

            
$v[] = '<div class="b">' . icon($icon, 'icons');
            
$v[] = '<a href="' . $row['comm_url'] . DS . gen_uri('comm', '', RND) . '">' . $row['comm_name'] . '</a> (' . $row['comm_count'] . ')<br />';
            
$v[] = format_text($row['comm_about']) . '</div>';

        }

        
show_header('Результаты поиска - ' . $query, implode(' ', $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', '', RND) . '" 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">' . icon('return.png');
    echo 
' <a href="' . gen_uri('index', '', RND) . '">Сообщества</a> | ';
    echo 
'<a href="' . gen_uri('new', '', RND) . '">Новые</a> | ';
    echo 
'<a href="' . gen_uri('top', '', RND) . '">Популярные</a> | ';
    echo 
'<a href="' . gen_uri('open', '', RND) . '">Открытые</a><br /></div>';


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