Вход Регистрация
Файл: components/forum/psearch.php
Строк: 90
<?php
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.10                               //
//                        http://www.instantcms.ru/                           //
//                                                                            //
//                   written by InstantCMS Team, 2007-2012                    //
//                produced by InstantSoft, (www.instantsoft.ru)               //
//                                                                            //
//                        LICENSED BY GNU/GPL v2                              //
//                                                                            //
/******************************************************************************/

if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }

function 
search_forum($query$look){

    
$inCore cmsCore::getInstance();
    
$inDB   cmsDatabase::getInstance();
    
$searchModel cms_model_search::initModel();

    global 
$_LANG;
    
cmsCore::loadLanguage('components/forum');
    
$config $inCore->loadComponentConfig('forum');

    
// Ищем в названиях тем
    
$sql "SELECT t.*, f.title as forum, f.id as forum_id, f.access_list
            FROM cms_forum_threads t
            INNER JOIN cms_forums f ON f.id = t.forum_id
            WHERE MATCH(t.title) AGAINST ('
$query' IN BOOLEAN MODE) AND t.is_hidden=0 LIMIT 50";

    
$result $inDB->query($sql);

    if (
$inDB->num_rows($result)){
        while(
$item $inDB->fetch_assoc($result)){

            if(!
cmsCore::checkContentAccess($item['access_list'])) { continue; }

            
$result_array = array();
            
$pages ceil($item['post_count'] / $config['pp_thread']);
            
$result_array['link']        = "/forum/thread{$item['id']}-{$pages}.html";
            
$result_array['place']       = $item['forum'];
            
$result_array['placelink']   = "/forum/".$item['forum_id'];
            
$result_array['title']       = $item['title'];
            
$result_array['pubdate']     = $item['pubdate'];
            
$result_array['description'] = $searchModel->getProposalWithSearchWord($item['description']);
            
$result_array['session_id']  = session_id();

            
$searchModel->addResult($result_array);
        }
    }

    
// Ищем в тексте постов
    
$sql "SELECT p.*, t.title as thread, t.id as thread_id, t.post_count
            FROM cms_forum_posts p
            INNER JOIN cms_forum_threads t ON t.id = p.thread_id AND t.is_hidden=0
            WHERE MATCH(p.content) AGAINST ('
$query' IN BOOLEAN MODE) LIMIT 50";

    
$result $inDB->query($sql);

    if (
$inDB->num_rows($result)){
        while(
$item $inDB->fetch_assoc($result)){

            
$result_array = array();

            
$pages ceil($item['post_count'] / $config['pp_thread']);
            
$post_page = ($pages 1) ? postPage::getPage($item['thread_id'], $item['id'], $config['pp_thread']) : 1;

            
$result_array['link']        = "/forum/thread{$item['thread_id']}-{$post_page}.html#{$item['id']}";
            
$result_array['place']       = $_LANG['FORUM_POST'];
            
$result_array['placelink']   = $result_array['link'];
            
$result_array['description'] = $searchModel->getProposalWithSearchWord($item['content_html']);
            
$result_array['title']       = $item['thread'];
            
$result_array['pubdate']     = $item['pubdate'];
            
$result_array['session_id']  = session_id();

            
$searchModel->addResult($result_array);
        }
    }

    return;

}

class 
postPage {

    private static 
$post_ids = array();

    private function 
__construct() { }

    public static function 
getPage($thread_id$post_id$perpage) {

        
$ids self::getThreadPostIds($thread_id);

        
$post_num array_search($post_id$ids);

        return 
ceil($post_num $perpage);

    }

  private static function 
getThreadPostIds($thread_id) {

        if(isset(
self::$post_ids[$thread_id])) { return self::$post_ids[$thread_id]; }

        
$inDB cmsDatabase::getInstance();

        
$ids = array();

        
$result $inDB->query("SELECT id FROM cms_forum_posts WHERE thread_id = '$thread_id' ORDER BY pubdate ASC");

        if (!
$inDB->num_rows($result)){ return array(); }

        
$num 1;

        while(
$data $inDB->fetch_assoc($result)){

            
$ids[$num] = $data['id'];

            
$num++;

        }

        return 
$ids;

    }

}



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