Your IP : 216.73.216.170


Current Path : /var/www/iplanru/data/www/www.i-plan.ru/modules/mod_zoo_finder/
Upload File :
Current File : /var/www/iplanru/data/www/www.i-plan.ru/modules/mod_zoo_finder/helper.php

<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * Class Module Helper
 * @author 
 */
class modZoofinderHelper
{

	/**
	 * getData method
	 * @param $params
	 * @return array
	 */
	static function getResult($morphy,$q,$zt,$jinput,$count=false)
	{

		
		$db = JFactory::getDbo();
		$m = array();
		
		//q prepare					
		$q=trim($q);
		$q=strip_tags($q);
		$q=html_entity_decode($q);				
		$q=mb_ereg_replace 	("[^a-zA-Zа-яА-Я0-9ёЁ\s\-]","",$q);		
		$q=str_replace("  ", " ", $q);
		$hl=explode(" ", $q);//highlighter
		$q=mb_strtoupper( $q, 'UTF-8' );
		$q=explode(" ", $q);
		
		//lemmatize
		$res=array();
		foreach($q as $key=>$word)
		{
			$word=mb_ereg_replace ("[^a-zA-Zа-яА-Я0-9ёЁ\-]","",$word);						
			$lemm = $morphy->lemmatize( $word );
			if ($lemm[0]<>'') $res[$key]=$lemm[0];
		}
		$q=array_merge($q,$res);
		//print_r($q);
		unset($res);
		
		//удаление коротких слов
		//foreach ($q as $key=>$word) if (mb_strlen($word)<=2) unset($q[$key]); 
		
		if (!$q) return null;
		
		//sql q
		$sql_q=array();
		foreach($q as $word)
		{						
			//if (!$morphy->lemmatize($word, phpMorphy:: IGNORE_PREDICT)) continue;
			$sql_q[]='instr(f.word, "'.$word.'")>0';
		}
		if ($sql_q) $sql_q=' and ('.implode(' or ',$sql_q).')'; else $sql_q='';
		
		//sql types
		$sql_types=array();
		foreach ($zt as $item)
		{
			$ch='';
			if ($jinput->get( 'alltypes', 0, 'INT' )==1 or $jinput->get( "type-{$item[1]}", 0, 'INT' )==1) 
			$sql_types[]='i.type="'.$item[1].'"';
		}
		if ($sql_types) $sql_types=' and ('.implode(' or ',$sql_types).')'; else $sql_types='';
		
		
		//sql sort
		if ($jinput->get('sortby',"rel")=="rel") $sql_sort= ' order by sw desc';
		if ($jinput->get('sortby',"rel")=="date") $sql_sort= ' order by i.created desc';
		
		$pagepos=($jinput->get('page',"1")-1)*$jinput->get('limit',"10");
		
		$sql="	SELECT 	i.id as id, 
											i.name as name, 
											DATE_FORMAT(i.created, '%d.%m.%Y') as date, 
											i.type as type, 
											sum(f.weight) sw 
									FROM 	jos_zoo_item i, 
											jos_zoo_finder f, 
											jos_zoo_finders fs
									WHERE 	i.id=fs.matid and 
											f.fid=fs.id 
											{$sql_q}
											{$sql_types}
									group by 	i.id,i.name,
												i.type,i.created
									{$sql_sort}";
		
		$result = $db->setQuery($sql)->loadAssocList();
		
		if ($jinput->get( "sql", 0, 'INT' )==1) echo $sql;
		
		
		return $result;
		
	}
	

}