Example #1
0
function sphinx_add_result_forum($items) {
    $inCore = cmsCore::getInstance();

    global $_LANG;
    cmsCore::loadLanguage('components/forum');
    $config = $inCore->loadComponentConfig('forum');
    $search_model = cms_model_search::initModel();
    
    foreach ($items as $id => $item) {
        if (!cmsCore::checkContentAccess($item['attrs']['access_list'])) { continue; }
            
        $pages = ceil($item['attrs']['post_count'] / $config['pp_thread']);

        $result_array = array(
            'link' => '/forum/thread'. $id .'-'. $pages .'.html',
            'place' => $item['attrs']['forum'],
            'placelink' => '/forum/'. $item['attrs']['forum_id'],
            'description' => $search_model->getProposalWithSearchWord($item['attrs']['description']),
            'title' => $item['attrs']['title'],
            'pubdate' => date('Y-m-d H:i:s', $item['attrs']['pubdate'])
        );

        $search_model->addResult($result_array);
    }
    
    // Ищем в тексте постов
    
    $cl = new SphinxClient();

    $cl->SetServer('127.0.0.1', 9312);
    $cl->SetMatchMode(SPH_MATCH_EXTENDED2);
    $cl->SetLimits(0, 100);
    
    $result = $cl->Query($search_model->against, $search_model->config['Sphinx_Search']['prefix'] .'_forum_posts');
            
    if ($result !== false) {
        foreach ($result['matches'] as $id => $item) {
            $pages = ceil($item['attrs']['post_count'] / $config['pp_thread']);
            $post_page = ($pages > 1) ? postPage::getPage($item['attrs']['thread_id'], $id, $config['pp_thread']) : 1;
            
            $result_array = array(
                'link' => '/forum/thread'. $item['attrs']['thread_id'] .'-'. $post_page .'.html#'. $id,
                'place' => $_LANG['FORUM_POST'],
                'placelink' => '/forum/thread'. $item['attrs']['thread_id'] .'-'. $post_page .'.html#'. $id,
                'description' => $search_model->getProposalWithSearchWord($item['attrs']['content_html']),
                'title' => $item['attrs']['thread'],
                'imageurl' => $item['attrs']['fileurl'],
                'pubdate' => date('Y-m-d H:i:s', $item['attrs']['pubdate'])
            );

            $search_model->addResult($result_array);
        }
    }
    
    return;
}
Example #2
0
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\r\n            FROM cms_forum_threads t\r\n            INNER JOIN cms_forums f ON f.id = t.forum_id\r\n            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, img.fileurl\r\n            FROM cms_forum_posts p\r\n            INNER JOIN cms_forum_threads t ON t.id = p.thread_id AND t.is_hidden=0\r\n            LEFT JOIN cms_upload_images img ON img.target_id = p.id AND img.target = 'post' AND img.component = 'forum'\r\n            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['imageurl'] = $item['fileurl'];
            $result_array['session_id'] = session_id();
            $searchModel->addResult($result_array);
        }
    }
    return;
}
Example #3
0
function search_forum($query, $look) {
    $inCore = cmsCore::getInstance();

    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 = cmsCore::c('db')->query($sql);

    if (cmsCore::c('db')->num_rows($result)) {
        while($item = cmsCore::c('db')->fetch_assoc($result)) {
            if (!cmsCore::checkContentAccess($item['access_list'])) { continue; }
            
            $pages = ceil($item['post_count'] / $config['pp_thread']);
            
            $result_array = array(
                'link' => '/forum/thread'. $item['id'] .'-'. $pages .'.html',
                'place' => $item['forum'],
                'placelink' => '/forum/'. $item['forum_id'],
                'description' => cmsCore::m('search')->getProposalWithSearchWord($item['description']),
                'title' => $item['title'],
                'pubdate' => $item['pubdate']
            );

            cmsCore::m('search')->addResult($result_array);
        }
    }

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

    $result = cmsCore::c('db')->query($sql);

    if (cmsCore::c('db')->num_rows($result)) {
        while($item = cmsCore::c('db')->fetch_assoc($result)){
            $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 = array(
                'link' => '/forum/thread'. $item['thread_id'] .'-'. $post_page .'.html#'. $item['id'],
                'place' => $_LANG['FORUM_POST'],
                'placelink' => $result_array['link'],
                'description' => cmsCore::m('search')->getProposalWithSearchWord($item['content_html']),
                'title' => $item['thread'],
                'imageurl' => $item['fileurl'],
                'pubdate' => $item['pubdate']
            );

            cmsCore::m('search')->addResult($result_array);
        }
    }

    return;
}