<?php
/*
* @package LabCMS
* @copyright (c) 2006 Alexander Levin aka Loki (loki_angel@mail.ru)
* @support http://labcms.ru
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
if (!LabConfig::$mcfg['search_modules']) LabCMS::i()->error("Поиск запрещен! Проверьте настройки модуля поиска.");
else
{
	$mod_template="default.tpl";
	$page=intval($_GET['var1']);
	if ($page < 1) $page = 1;
	
	$_GET['search']=isset($_GET['search'])?$_GET['search']:'';
	$_GET['module']=isset($_GET['module'])?$_GET['module']:'';
	
	//если не указаны никакие параметры, то ставим ALL чтобы отметить все чекбоксы
	if (!is_array($_GET['module'])) $_GET['all']='on';

	$search_url="search=".urlencode($_GET['search'])
				."&all=".($_GET['all']?'all':'');
	if  (is_array($_GET['module']))
	{
		foreach($_GET['module'] as $module_id)
		{
			$search_url.='&module[]='.intval($module_id);
		}
	}
	Tpl::i()->assign("search_params", $search_url);
		
	LabConfig::$mcfg['search_results_at_page']=15;
	$count=0;

	$search_modules=Db::i()->select("SELECT module, name, module_id FROM ?_modules WHERE module IN (?a) AND disable=0", LabConfig::$mcfg['search_modules']);
	foreach($search_modules as $key=>$val)
	{
		$search_modules[$key]['module']=str_replace("/", "", $search_modules[$key]['module']);
	}
	Tpl::i()->assign("modules", $search_modules);

	$query_text='';
	if (trim($_GET['search']))
	{
		//разделяем фразу на отдельные слова, выделяем у них корень и составляем поисковый запрос
		$text_array=explode(" ", trim($_GET['search']));
		$stemmer = new Stem_Ru();

			//определяем с какой страницы запрашивать
			$start=($page-1)*LabConfig::$mcfg['search_results_at_page'];
			$limit=LabConfig::$mcfg['search_results_at_page'];
			
		//формируем условия для всех слов
		$query_text=array();
		foreach ($text_array as $val)
		{
			if ($val) $query_text[]="+".$stemmer->stem_word($val)."*";
		}
		$query_text=implode(' ', $query_text);
	}

	if ($query_text)
	{
		foreach($search_modules as $search_module)
		{
			if ((is_array($_GET['module']) && in_array($search_module['module_id'], $_GET['module'])) || $_GET['all'])
			{
				include LAB_PATH_MODULES.'/'.$search_module['module']."/mod_search.inc";
				
				$function_name=$search_module['module']."_search_count";
				$search=$function_name($query_text);
				$search_count=count($search);
				$count+=$search_count;
				if ($search_count && ($search_count-$start)>0 && $limit>0)
				{
					$function_name=$search_module['module']."_search_result";
					$search_result=$function_name($search, $start, $limit, $search_module);
					Tpl::i()->append('search_result', $search_result);
					Tpl::i()->append('module_name', $search_module['name']);
					$start=0;		
					$limit-=count($search_result);
				}	
				else
				{
					$start-=$search_count;
				}
			}
		}

		if ($count)
		{
			$pg=new Paginator($count, LabConfig::$mcfg['search_results_at_page'], $page);
			$pager=$pg->getPages();
			Tpl::i()->assign("pager", $pager);
		}
		else
		{
			Tpl::i()->assign("no_result",1);
		}
	}
}
