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

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

$periods = array(
        
'0'   => 'За все время',
        
'7'   => 'Последние 7 дней',
        
'30'  => 'Последние 30 дней',
        
'60'  => 'Последние 60 дней',
        
'90'  => 'Последние 90 дней',
        
'180' => 'Последние 180 дней',
        
'365' => 'Последние 365 дней');

$forums get_vars('forum_select_search');

if (!
$forums) {

    
$rows $db->select("SELECT `forums_id`, `forums_parent`, `forums_title` FROM ?_forums ORDER BY `forums_order` ASC;");

    
$forums[0] = 'Не имеет значения';

    if (!empty(
$rows) && count($rows) > 0) {

        
$output = array();
        foreach(
$rows as $row) {
            
$i $row['forums_id'];
            
$p $row['forums_parent'];
            
$output[$p][$i] = $row;
        }

        foreach(
$output[0] as $key => $row) {

            
$forums[$row['forums_id']] = $row['forums_title'];

            if (isset(
$output[$key])) {

                foreach(
$output[$key] as $rowsub) {

                    
$forums[$rowsub['forums_id']] = '– ' $rowsub['forums_title'];
                }
            }
        }
    }
    
set_vars('forum_select_search'$forums);
}

$section = !empty($_REQUEST['section']) ? abs(intval($_REQUEST['section'])) : 0// Раздел
$period = !empty($_REQUEST['period']) ? abs(intval($_REQUEST['period'])) : 0;   // Период
$where = !empty($_REQUEST['where']) ? abs(intval($_REQUEST['where'])) : 0;     // Где Искать
$type = !empty($_REQUEST['type']) ? abs(intval($_REQUEST['type'])) : 0;       // Тип запроса

if (!empty($mod) && $mod == 'search') {

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

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

        
$q check(trim($_REQUEST['q']));

        
$logic = (empty($type)) ? 'AND' 'OR';
        
$title = (empty($where)) ? 'в сообщениях' 'в темах';

        
show_header($q ' - Результаты поиска ' $title);

        echo 
'<div class="b"><a href="#down">' icon('down.png') . '</a> ';

        if (
$is_logged) {

            echo 
'Мои: <a href="' gen_uri('mythemes'''RND) . '">темы</a>, ';
            echo 
'<a href="' gen_uri('myposts'''RND) . '">сообщения</a> | ';
        }

        echo 
'Новые: <a title="Новые темы" href="' gen_uri('new_themes'''RND) . '">темы</a>, ';
        echo 
'<a title="Новые сообщения" href="' gen_uri('new_posts'''RND) . '">сообщения</a></div>';

        if (
cms_strlen($q) < 50) {

            
$q explode(' '$q);

            
$find $query = array();
            foreach(
$q as $val) {

                if (
cms_strlen($val) >= 3) {

                    
$query[] = sprintf($lang['SEARCH_WORD'], check($val));
                    
$find[]  = $val;
                }
            }
            
array_splice($find3);
            
$query implode(' ' $lang[$logic] . ' '$query);

            if (
count($find) > 0) {

                if (!empty(
$where)) { // Поиск в темах

                    
$searchsec = ($section 0) ? "`topics_forums_id` = " $section " AND" '';
                    
$searchper = ($period 0) ? "`topics_last_time` > " . (SITE_TIME - ($period 24 60 60)) . " AND" '';

                    if (
$type == 2) {
                        
$find[0] = implode(' '$q);
                    }
                    
$search1 = (isset($find[1]) && $type != 2) ? $logic " `topics_title` LIKE '%" $find[1] . "%'" '';
                    
$search2 = (isset($find[2]) && $type != 2) ? $logic " `topics_title` LIKE '%" $find[2] . "%'" '';

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

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

                    
$rows $db->selectPage($total"SELECT * FROM ?_forums_topics WHERE " $searchsec " " $searchper " `topics_title` LIKE '%" $find[0] . "%' " $search1 " " $search2 " LIMIT ?d, ?d"$from$onpage);

                    if (
$total 0) {

                        
$c $from 1;
                        list(
$start$stop) = get_page();
                        
?>
                        <div class="b">
                        - Поиск запроса <b><?=$query?></b> в темах<br />
                        - Всего найдено: <strong><?=intval$total )?></strong><br />
                        - Показаны результаты с <strong><?=intval$start 1)?></strong> 
                          по <strong><?=intval$stop )?></strong> место<br />
                        </div>
                        <?php

                        
foreach($rows as $row) {

                            if (
$row['topics_locked'] == 1) {

                                
$icon icon('sticky-notes-pin.png''icons');
                            }
                            else if (
$row['topics_closed'] == 1) {

                                
$icon icon('lock.png''icons');
                            }
                            else 
$icon icon('post_new.png''icons');

                            echo 
'<div class="b">' $icon;
                            echo 
'<a href="' gen_uri('topic'$row['topics_id'], RND) . '"><b>' $row['topics_title'] . '</b></a> (' $row['topics_posts'] . ')<br />Страницы: ' forum_navigation('topic'$row['topics_id'], $config['post_num'], $row['topics_posts']);
                            echo 
'Сообщение: ' nickname($row['topics_last_user']) . ' (' get_date($row['topics_last_time']) . ')</div>';
                        }

                        
$qq  '';
                        
$qq  = !empty($type) ? 'type=' $type '';
                        
$qq  = !empty($where) ? 'where=' $where '';
                        
$qq  = !empty($period) ? 'period=' $period '';
                        
$qq  = !empty($section) ? 'section=' $section '';
                        
$qq .= '&amp;q=' implode(' '$q);

                        echo 
show_pages(gen_uri('search'''$qq) . '&amp;' RND);
                    }
                    else {
                        
show_error('По вашему запросу ничего не найдено!');
                    }
                }
                else { 
// Поиск в сообщениях

                    
$searchsec = ($section 0) ? "`posts_forums_id` = " $section " AND" '';
                    
$searchper = ($period 0) ? "`posts_time` > " . (SITE_TIME - ($period 24 60 60)) . " AND" '';

                    if (
$type == 2) {
                        
$find[0] = implode(' '$q);
                    }
                    
$search1 = (isset($find[1]) && $type != 2) ? $logic " `posts_text` LIKE '%" $find[1] . "%'" '';
                    
$search2 = (isset($find[2]) && $type != 2) ? $logic " `posts_text` LIKE '%" $find[2] . "%'" '';

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

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

                    
$rows $db->selectPage($total"SELECT `p`.*, `t`.`topics_title`
                                                     FROM ?_forums_posts `p` LEFT JOIN ?_forums_topics `t`
                                                     ON `p`.`posts_topics_id` = `t`.`topics_id`
                                                     WHERE " 
$searchsec " " $searchper " `posts_text` LIKE '%" $find[0] . "%' " $search1 " " $search2 "
                                                     LIMIT ?d, ?d"
$from$onpage);

                    if (
$total 0) {

                        
$c $from 1;
                        list(
$start$stop) = get_page();
                        
?>
                        <div class="b">
                        - Поиск запроса <b><?=$query?></b> в сообщениях<br />
                        - Всего найдено: <strong><?=intval$total )?></strong><br />
                        - Показаны результаты с <strong><?=intval$start 1)?></strong> 
                          по <strong><?=intval$stop )?></strong> место<br />
                        </div>
                        <?php

                        
foreach($rows as $row) {

                            if (!empty(
$config['anonymity'])) {

                                
$ip_ua '<span class="data">(' $row['posts_brow'] . ', ' $row['posts_ip'] . ')</span>';
                            }
                            else 
$ip_ua '';

                            echo 
'<div class="b">' icon('folder.png''icons');
                            echo 
' <a href="' gen_uri('viewpost'$row['posts_topics_id'], 'pid=' $row['posts_id'] . '&amp;' RND) . '"><b>' $row['topics_title'] . '</b></a><br />' nl2br(bb_code($row['posts_text'])) . '<br />';
                            echo 
'Написал: ' users_anketa($row['posts_user']);
                            echo 
' ' user_online($row['posts_user']) . ' <small>(' get_date($row['posts_time']) . ')</small><br />';
                            echo 
$ip_ua '</div>';
                        }

                        
$qq  '';
                        
$qq  = !empty($type) ? 'type=' $type '';
                        
$qq  = !empty($where) ? 'where=' $where '';
                        
$qq  = !empty($period) ? 'period=' $period '';
                        
$qq  = !empty($section) ? 'section=' $section '';
                        
$qq .= '&amp;q=' implode(' '$q);

                        echo 
show_pages(gen_uri('search'''$qq) . '&amp;' RND);
                    }
                    else {
                        
show_error('По вашему запросу ничего не найдено!');
                    }
                }
            }
            else {
                
show_error('Ошибка! Необходимо не менее 3-х символов в слове!');
            }
        }
        else {
            
show_error('Ошибка! Запрос должен содержать не более 50 символов!');
        }
    }
    else {

        
show_header('Поиск по форуму');

        echo 
'<div class="b"><a href="#down">' icon('down.png') . '</a> ';

        if (
$is_logged) {

            echo 
'Мои: <a href="' gen_uri('mythemes'''RND) . '">темы</a>, <a href="' gen_uri('myposts'''RND) . '">сообщения</a> | ';
        }

        echo 
'Новые: <a title="Новые темы" href="' gen_uri('new_themes'''RND) . '">темы</a>, <a title="Новые сообщения" href="' gen_uri('new_posts'''RND) . '">сообщения</a></div>';

    }

    
$form = new cmsForm(gen_uri('search'$idRND));
    
$form->addText('Запрос:''q'request('q'));
    
$form->addSelect('Раздел:''section'$section$forums);
    
$form->addSelect('Период:''period', (int) request('period'), $periods);
    
$form->addRadio('<br />Где Искать:''where', (int) request('where'), array('0' => 'В сообщениях''1' => 'В темах'));
    
$form->addRadio('<br />Тип запроса:''type', (int) request('type'), array('0' => 'И''1' => 'Или''2' => 'Полный'));
    echo 
$form->Submit('Найти');
    unset(
$form);

}
else {

    
//show_header('Поиск по форуму');
    //show_login('Вы не авторизованы, чтобы использовать поиск, необходимо');
}

    echo 
'<div class="b"><a href="#up">' icon('up.png') . '</a> ';
    echo 
'<a href="' gen_uri('index'''RND) . '">Форум</a> | ';
    echo 
'<a href="' gen_uri('rules'''RND) . '">Правила</a> | ';
    echo 
'<a href="' gen_uri('top'''RND) . '">Топ тем</a> | ';
    echo 
'<b>Поиск</b></div>';

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