Вход Регистрация
Файл: 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($find, 3);
            
$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', $id, RND));
    
$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>';

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