| Current Path : /var/www/iplanru/data/www/www.i-plan.ru/modules/mod_zoo_finder/ |
| 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;
}
}