| Current Path : /var/www/iplanru/data/www/www.i-plan.ru/libraries/zoolib/ |
| Current File : /var/www/iplanru/data/www/www.i-plan.ru/libraries/zoolib/zoolib.php |
<?php
/*
*
* jimport('zoolib.zoolib');
$zoolib = new ZooLib();
$params=$zoolib->get_item_params($this->item->id);
*
* */
class ZooLib
{
//Возвращает массив id всех подкатегорий исключая текущую.
function get_subcat($cat)
{
$m=array();
$list=array();
$db = JFactory::getDbo();
$list = $db->setQuery(" SELECT id
FROM #__zoo_category
where
parent=\"{$cat}\"
and published=1
order by ordering")->loadAssocList();
foreach($list as $row)
{
$m[]=$row['id'] ;
$m = array_merge($m, $this->get_cat_and_subcat($row['id'] ));
}
$m = array_unique($m);
return $m;
}
//Возвращает массив id всех подкатегорий включая текущую.
function get_cat_and_subcat($cat)
{
$m=array();
$list=array();
$db = JFactory::getDbo();
$list = $db->setQuery(" SELECT id
FROM #__zoo_category
where
parent=\"{$cat}\"
and published=1
order by ordering")->loadAssocList();
$m[]=$cat ;
foreach($list as $row)
{
$m = array_merge($m, $this->get_cat_and_subcat($row['id'] ));
}
return $m;
}
//возвращает элементы по полям из списка категорий
function get_items($fields="*",$categories="",$order="",$limit="")
{
$db = JFactory::getDbo();
//prepare
if (is_array($fields))
$sql_fields=implode(", ", $fields);
else
$sql_fields=$fields;
if ($categories)
{
if (is_array($categories))
{
foreach($categories as $key=>$catid) $categories[$key]="ci.category_id={$catid}";
$sql_categories=" and (".implode(" or ", $categories).")";
}
else
$sql_categories="ci.category_id={$categories}";
}
else
$sql_categories="";
if (is_array($order))
$sql_order="ORDER BY ".implode(", ", $order);
else
$sql_order=$order;
if ($limit) $sql_limit="LIMIT {$limit}";
$sql="
SELECT distinct {$sql_fields}
FROM #__zoo_item i, #__zoo_category_item ci
WHERE i.id=ci.item_id and publish_up {$sql_categories}
{$sql_order}
{$sql_limit}";
return $db->setQuery($sql)->loadObjectList();
}
//формирует пейджер
function getPager($count,$page_count=10)
{
$url=$_SERVER["REQUEST_URI"];
$m = array();
$jinput = JFactory::getApplication()->input;
$limit = $jinput->get('limit',"10", "INT" );
$page = $jinput->get('page',1, "INT" );
if ($page>(int)($count/$limit+1)) $page=1;
if ($count>$limit)
{
$lastpage = (int)($count/$limit+1);
$firstlink=$page-(int)($page_count/2);
if ($firstlink<1)$firstlink=1;
$lastlink=$page+(int)($page_count/2);
if ($lastlink>(int)($count/$limit+1)) $lastlink=$lastpage;
$m[] = "<div class=\"pager\">";
if ($firstlink<>1) $m[] = '<a href="'.$this->sgp($url, "page", 1).'"><<</a>';
for( $i=$firstlink; $i <= $lastlink; $i++)
{
if ($i==$page)
$m[] = '<span>'.$i.'</span>';
else
$m[] = '<a href="'.$this->sgp($url, "page", $i).'">'.$i.'</a>';
}
if ($lastlink<>$lastpage) $m[] = '<a href="'.$this->sgp($url, "page", $lastpage).'">>></a>';
$m[] = "</div>";
return implode("\r\n",$m);
}
}
//заменяет GET параметры в URL. параметры могут передаваться как массивы
function sgp($url, $varname, $value)
{
if (is_array($varname)) {
foreach ($varname as $i => $n) {
$v = (is_array($value))
? ( isset($value[$i]) ? $value[$i] : NULL )
: $value;
$url = sgp($url, $n, $v);
}
return $url;
}
preg_match('/^([^?]+)(\?.*?)?(#.*)?$/', $url, $matches);
$gp = (isset($matches[2])) ? $matches[2] : ''; // GET-parameters
if (!$gp) return $url;
$pattern = "/([?&])$varname=.*?(?=&|#|\z)/";
if (preg_match($pattern, $gp)) {
$substitution = ($value !== '') ? "\${1}$varname=" . preg_quote($value) : '';
$newgp = preg_replace($pattern, $substitution, $gp); // new GET-parameters
$newgp = preg_replace('/^&/', '?', $newgp);
}
else {
$s = ($gp) ? '&' : '?';
$newgp = $gp.$s.$varname.'='.$value;
}
$anchor = (isset($matches[3])) ? $matches[3] : '';
$newurl = $matches[1].$newgp.$anchor;
return $newurl;
}
//возвращает параметры элемента
function get_item_params($itemid)
{
if ($itemid)
{
$db = JFactory::getDbo();
$sql=" SELECT params FROM #__zoo_item WHERE id={$itemid}";
$par=$db->setQuery($sql)->loadAssoc();
return json_decode($par["params"],TRUE);
}
}
//возвращает параметры категории
function get_cat_params($catid)
{
if ($catid)
{
$db = JFactory::getDbo();
$sql=" SELECT params FROM #__zoo_category WHERE id={$catid}";
$par=$db->setQuery($sql)->loadAssoc();
return json_decode($par["params"],TRUE);
}
}
//возвращает поле категории
function get_cat_field($catid, $field)
{
if ($catid and $field)
{
$db = JFactory::getDbo();
$sql=" SELECT {$field} FROM #__zoo_category WHERE id={$catid}";
$par=$db->setQuery($sql)->loadAssoc();
return $par[$field];
}
}
//устанавливает поле категории
function set_cat_field($catid, $field, $value)
{
if ($catid and $field)
{
$db = JFactory::getDbo();
$sql="update #__zoo_category set {$field} = \"{$value}\" where id = {$catid}; ";
$pr=$db->setQuery($sql)->Execute();
return $pr;
}
}
}
?>