Your IP : 216.73.216.170


Current Path : /var/www/iplanru/data/www/www.i-plan.ru/libraries/zoolib/
Upload File :
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;
		}
	}
}

?>