| Current Path : /var/www/iplanru/data/www/iplan.5018.vps.agava.net/components/com_workfilter/helpers/ |
| Current File : /var/www/iplanru/data/www/iplan.5018.vps.agava.net/components/com_workfilter/helpers/workfilter.php |
<?php
// No direct access
defined( '_JEXEC' ) or die;
/**
* Component helper
* @author kirdinyuri
*/
class WorkfilterHelper
{
/**
* @var array $menuIds List Id depending of view component
*/
static $menuIds = array();
/**
* Create sef links
* @param $option string
* @param $view string
* @param $query string
* @return string link
* @throws Exception
*/
static function getRoute( $option, $view, $query = '' )
{
if ( empty( self::$menuIds[$option . '.' . $view] ) ) {
$items = JMenuSite::getInstance( 'site' )->getItems( 'component', $option );
foreach ( $items as $item ) {
if ( isset( $item->query['view'] ) && $item->query['view'] === $view ) {
self::$menuIds[$option . '.' . $view] = $item->id;
}
}
}
return JRoute::_( 'index.php?view=' . $view . $query . '&Itemid=' . self::$menuIds[$option . '.' . $view] );
}
static function setDocument( $title = '', $basepath, $metadesc = '', $metakey = '' )
{
$doc = JFactory::getDocument();
$doc->addScript( $basepath . '/components/com_workfilter/assets/scripts/workfilter.js' );
$doc->addStyleSheet( $basepath . '/components/com_workfilter/assets/styles/workfilter.css' );
$app = JFactory::getApplication();
if ( empty( $title ) ) {
$title = $app->get( 'sitename' );
} elseif ( $app->get( 'sitename_pagetitles', 0 ) == 1 ) {
$title = JText::sprintf( 'JPAGETITLE', $app->get( 'sitename' ), $title );
} elseif ( $app->get( 'sitename_pagetitles', 0 ) == 2 ) {
$title = JText::sprintf( 'JPAGETITLE', $title, $app->get( 'sitename' ) );
}
$doc->setTitle( $title );
if ( trim( $metadesc ) ) {
$doc->setDescription( $metadesc );
}
if ( trim( $metakey ) ) {
$doc->setMetaData( 'keywords', $metakey );
}
}
static function getSubCat($cat,$level)
{
//$jinput = JFactory::getApplication()->input;
$db = JFactory::getDbo();
$m=array();
jimport('imagecache.imagecache');
$ImageCache = new ImageCache();
//output cat
if ($level==0) {$m[]="<div id=\"wf-cat\">";} else {$m[]="<div id=\"wf-subcat\">";}
if ($cat==2376) {$name="Работы по отраслям";}
else
{
$crnt = $db->setQuery('SELECT id,name FROM #__zoo_category where published=1 and id='.$cat)->loadObject();
$name=$crnt->name;
}
$level_separator=' style="margin-left:'.($level*10+5).'px;"';
$hlevel=$level+1;
$m[]=" <a onClick=\" for (var i = 0; i < document.getElementById('wfcat').options.length; i++)
{
if (document.getElementById('wfcat').options[i].value == {$cat})
{document.getElementById('wfcat').options[i].selected = true;break;}
}
document.getElementById('wfcat').value={$cat};
for (var i = 0; i < document.getElementById('wftype').options.length; i++)
{
if (document.getElementById('wftype').options[i].value == 'all')
{document.getElementById('wftype').options[i].selected = true;break;}
}
for (var i = 0; i < document.getElementById('wflang').options.length; i++)
{
if (document.getElementById('wflang').options[i].value == 'all')
{document.getElementById('wflang').options[i].selected = true;break;}
}
for (var i = 0; i < document.getElementById('wfreg').options.length; i++)
{
if (document.getElementById('wfreg').options[i].value == '0')
{document.getElementById('wfreg').options[i].selected = true;break;}
}
/*document.getElementById('wfname').value='';*/
document.getElementById('yearamountfrom').value='2009';
document.getElementById('yearamountto').value='2015';
document.getElementById('priceamountfrom').value='10000';
document.getElementById('priceamountto').value='60000';
document.forms['workfilter'].submit();
\" style=\"cursor:pointer\" >
<div id=\"cat\">
<span{$level_separator}>{$name}</span>
</div>
</a>";
$m[]="</div>";
//get cat
$mcatcount=0;
$list = $db->setQuery('SELECT id,name
FROM #__zoo_category
where
parent='.$cat.'
and published=1
order by ordering')->loadObjectList();
foreach($list as $row)
{
$mcat=array();
$mcat=workfilterHelper::getSubCat($row->id,$level+1);
$mcatcount=$mcatcount+count($mcat);
if (count($mcat)>0) {$m = array_merge($m, $mcat);}
}
//materials
$tmat=array();
$tmat=workfilterHelper::getMat($cat);
//$m[]=$name.'---'.count($mcat).'---'.count($tmat);
//output mat
if (count($tmat)>0)
{
$m[]="<div class=\"wf-items\">";
$m[]="<ul>";
foreach($tmat as $item)
{
if ($item["image"]<>'')
{
$imagepath=$ImageCache->ImageCacheJPG($item["image"],"com_workfilter",80,113,70);
}
$mattype = $db->setQuery(" SELECT elements FROM #__zoo_item WHERE id={$item["id"]}")->loadArray();
$a=json_decode($$mattype['elements'],true);
if ($a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0']<>'mi'){$matitemid="109";}else {$matitemid="108";}
$matlink="/index.php?option=com_zoo&item_id={$item["id"]}&Itemid=117&view=item";
$m[]=" <li>
<a href=\"{$matlink}\">
<div class=\"wf-item\">
<table>
<tr>
<td>
<img src=\"{$imagepath}\" style=\"margin-right: 15px; float:left; \" />
</td>
<td>
<ul>
<li class=\"caption\">{$item["name"]}</li>
<li><span class=\"created\"><strong>Дата создания: </strong>{$item["date"]}</span></li>
<li><span class=\"price\"><strong>Цена: </strong>{$item["price"]} руб.</span></li>
<li class=\"readmore\">Подробнее...</li>
</ul>
</td>
</tr>
</table>
</div>
</a>
</li>";
}
$m[]="<div class=\"clearfix\"></div>";
$m[]="</ul>";
$m[]="</div>";
}
if ($mcatcount+count($tmat)==0) {$m=array();}
return $m;
}
static function getMat($cat)
{
$jinput = JFactory::getApplication()->input;
$date = getdate();
$wfyearfrom=preg_replace('/[^0-9]/', '',$jinput->get( 'wfyearfrom'));
if ($wfyearfrom=='') {$wfyearfrom='2009';}
$wfyearto=preg_replace('/[^0-9]/', '',$jinput->get( 'wfyearto', $date['year']));
if ($wfyearfrom=='') {$wfyearfrom=$date['year'];}
$wfname=$_POST['wfname'];
//if ($wfname){$sqlwfname=" and instr(upper(i.name), upper('{$wfname}'))<>0";}//точное совпадение
if ($wfname){$sqlwfname=" and MATCH (i.name) AGAINST ('-\"Бизнес-план\" {$wfname}*' IN BOOLEAN MODE)";}//релевантное совпадение
$wfpricefrom=preg_replace('/[^0-9]/', '',$jinput->get( 'wfpricefrom'));
if ($wfpricefrom=='') {$wfpricefrom='10000';}
$wfpriceto=preg_replace('/[^0-9]/', '',$jinput->get( 'wfpriceto'));
if ($wfpriceto=='') {$wfpriceto='60000';}
$wflang=$jinput->get( 'wflang', 'all' );
$wftype=$jinput->get( 'wftype', 'all' );
$wfreg=$jinput->get( 'wfreg', '0' );
$db = JFactory::getDbo();
$list = $db->setQuery(" SELECT i.id as id, i.name as name, i.elements as elements, DATE_FORMAT(created,'%d.%m.%y') as fdate
FROM #__zoo_category_item ci, #__zoo_item i
WHERE ci.item_id=i.id
and ci.category_id={$cat}
and i.state=1
and YEAR(`created`) >= {$wfyearfrom} and YEAR(`created`) <= {$wfyearto}
{$sqlwfname}
order by created desc
")->loadObjectList();
if (count($list)<>0)
{
foreach($list as $row)
{
$a=json_decode($row->elements,true);
$flag=true;
if ($a['aed9068f-8fd9-4c38-89d1-83187a602ac5']['0']['value'] < $wfpricefrom or $a['aed9068f-8fd9-4c38-89d1-83187a602ac5']['0']['value'] > $wfpriceto)
{$flag=false;}
if ($flag==true and $wflang=='ru' and $a['43191a2a-0fb3-4578-b7e0-dbf5e584873d']['option']['0']=='est'){$flag=false;}
if ($flag==true and $wflang=='en' and $a['43191a2a-0fb3-4578-b7e0-dbf5e584873d']['option']['0']<>'est'){$flag=false;}
if ($flag==true and $wftype=='bp' and $a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0']<>'bp'){$flag=false;}
if ($flag==true and $wftype=='mi' and $a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0']<>'mi'){$flag=false;}
if ($flag==true and $wfreg<>'0' and $wfreg<>'' and $a['e3ce3621-7e91-4e89-8884-73298523a076']['option']['0']<>$wfreg){$flag=false;}
if ($flag) {$matlist[]=array( "id"=>$row->id,
"name"=>$row->name,
"image"=>$a['57172c66-27cb-442d-a964-19f64f744a3b']['file'],
"date"=>$row->fdate,
"price"=>$a['aed9068f-8fd9-4c38-89d1-83187a602ac5']['0']['value']
);}
}
}
return $matlist;
}
static function getCat2lvl($mymenuitem)
{
$m=array();
$jinput = JFactory::getApplication()->input;
$db = JFactory::getDbo();
$list = $db->setQuery(" SELECT id,name
FROM #__zoo_category
where
parent=\"2376\"
and published=1
order by ordering")->loadAssocList();
if ($list)
{
$cnt=(int)count($list)/2;
$i=0;
foreach($list as $row)
{
if ($i==0){$m[]="<table><tr><td>";}
if ($i==$cnt){$m[]="</td><td>";}
$m[]="<div class=\"fwmenu-cat\">";
$m[]="<div class=\"fwmenu-cat-caption\"><a onClick=\" for (var i = 0; i < document.getElementById('wfcat').options.length; i++)
{
if (document.getElementById('wfcat').options[i].value == {$row['id']})
{document.getElementById('wfcat').options[i].selected = true;break;}
}
document.getElementById('wfcat').value={$row['id']};
for (var i = 0; i < document.getElementById('wftype').options.length; i++)
{
if (document.getElementById('wftype').options[i].value == 'all')
{document.getElementById('wftype').options[i].selected = true;break;}
}
for (var i = 0; i < document.getElementById('wflang').options.length; i++)
{
if (document.getElementById('wflang').options[i].value == 'all')
{document.getElementById('wflang').options[i].selected = true;break;}
}
for (var i = 0; i < document.getElementById('wfreg').options.length; i++)
{
if (document.getElementById('wfreg').options[i].value == '0')
{document.getElementById('wfreg').options[i].selected = true;break;}
}
/*document.getElementById('wfname').value='';*/
document.getElementById('yearamountfrom').value='2009';
document.getElementById('yearamountto').value='2015';
document.getElementById('priceamountfrom').value='10000';
document.getElementById('priceamountto').value='60000';
document.forms['workfilter'].submit();
\" style=\"cursor:pointer\" ><span>{$row['name']}</span></a></div>";
$subcat = $db->setQuery(" SELECT id,name
FROM #__zoo_category
where
parent=\"{$row['id']}\"
and published=1
order by ordering")->loadAssocList();
if ($subcat)
{
$m[]="<div class=\"fwmenu-subcat\">";
$m[]="<ul>";
foreach($subcat as $item)
{
$m[]="<li><a onClick=\" for (var i = 0; i < document.getElementById('wfcat').options.length; i++)
{
if (document.getElementById('wfcat').options[i].value == {$item['id']})
{document.getElementById('wfcat').options[i].selected = true;break;}
}
document.getElementById('wfcat').value={$item['id']};
for (var i = 0; i < document.getElementById('wftype').options.length; i++)
{
if (document.getElementById('wftype').options[i].value == 'all')
{document.getElementById('wftype').options[i].selected = true;break;}
}
for (var i = 0; i < document.getElementById('wflang').options.length; i++)
{
if (document.getElementById('wflang').options[i].value == 'all')
{document.getElementById('wflang').options[i].selected = true;break;}
}
for (var i = 0; i < document.getElementById('wfreg').options.length; i++)
{
if (document.getElementById('wfreg').options[i].value == '0')
{document.getElementById('wfreg').options[i].selected = true;break;}
}
/*document.getElementById('wfname').value='';*/
document.getElementById('yearamountfrom').value='2009';
document.getElementById('yearamountto').value='2015';
document.getElementById('priceamountfrom').value='10000';
document.getElementById('priceamountto').value='60000';
document.forms['workfilter'].submit();
\" style=\"cursor:pointer\" ><span>{$item['name']}</span></a></li>";
}
$m[]="</ul>";
$m[]="</div>";
}
$m[]="</div>";
if ($i==count($list)-1){$m[]="</td></tr></table>";}
$i++;
}
}
return $m;
}
}