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; }
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; }
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; }