Вход Регистрация
Файл: CMS/comm/comm_forum_search.php
Строк: 161
<?php

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

$data '';
$data $db->selectRow("SELECT ?_comm_comm.*, ?_comm_category.*
                       FROM ?_comm_comm LEFT JOIN ?_comm_category 
                       ON ?_comm_comm.`comm_cats_id` = ?_comm_category.`cats_id` 
                       WHERE `comm_url` = ? LIMIT 1;"
$soo);


if (empty(
$data) || !is_array($data)) {

    
$inSes->addMessage('Ошибка! Сообщество не найдено или ссылка неверна!');
    
gen_red('index'''RND);
}

if (empty(
$data['comm_forum'])) {

    
$inSes->addMessage('Ошибка! Форум не найден или ссылка неверна!');
    
gen_red('index'''RND);
}

$arr_admins = @explode(','$data['comm_admins']);

$users = array();

if (
$is_logged) {

    
$users $db->selectRow("SELECT * FROM ?_comm_users WHERE `cu_comm` = ? AND `cu_user` = ? LIMIT 1;"$data['comm_id'], $log);

    if (
$data['comm_user'] == $log) {

        
$is_admin_soo true;
    }

    if (
in_array($log$arr_admins) && $users['cu_admin'] == 1) {

        
$is_moder_soo true;
    }
}

if (
$data['comm_status'] == && empty($users)) {

    
$inSes->addMessage('Форум только для участников сообщества!');
    
gen_red('index'''RND);
}

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

$forums = array();

$rows   $db->select("SELECT `forums_id`,`forums_name` FROM ?_comm_forums WHERE `forums_comm` = ? ORDER BY `forums_order` ASC;"$data['comm_id']);

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

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

    foreach(
$rows as $row) {

        
$forums[$row['forums_id']] = $row['forums_name'];
    }
}

$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;       // Тип запроса

$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> ';
    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 ?_comm_topics WHERE `topics_comm` = ? AND " $searchsec " " $searchper " `topics_title` LIKE '%" $find[0] . "%' " $search1 " " $search2 " LIMIT ?d, ?d"$data['comm_id'], $from$onpage);

                if (!empty(
$rows) && $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 'sticky-notes-pin.png';
                        }
                        else if (
$row['topics_closed'] == 1) {

                            
$icon 'lock.png';
                        }
                        else 
$icon 'post_new.png';

                        echo 
'<div class="b">' icon($icon'icons');
                        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 ?_comm_posts `p` LEFT JOIN ?_comm_topics `t`
                                                 ON `p`.`posts_topics_id` = `t`.`topics_id`
                                                 WHERE `p`.`posts_comm` = ? AND " 
$searchsec " " $searchper " `posts_text` LIKE '%" $find[0] . "%' " $search1 " " $search2 "
                                                 LIMIT ?d, ?d"
$data['comm_id'], $from$onpage);

                if (!empty(
$rows) && $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('topic'$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> ';
    echo 
'Новые: <a title="Новые темы" href="' gen_uri('new_themes'''RND) . '">темы</a>, ';
    echo 
'<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);

    echo 
'<div class="b"><a href="#up">' icon('up.png') . '</a> ';
    echo 
' <a href="' gen_uri('index'''RND) . '">В сообщество</a> | ';
    echo 
'<a href="' gen_uri('forum'''RND) . '">Форум</a> | ';
    echo 
'<a href="' gen_uri('top'''RND) . '">Топ тем</a> | ';
    echo 
'<b>Поиск</b></div>';
Онлайн: 2
Реклама