Current File : /home/pacjaorg/public_html/kmm/administrator/components/com_djclassifieds/models/items.php
<?php
/**
 * @package DJ-Classifieds
 * @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
 * @license http://www.gnu.org/licenses GNU/GPL
 * @author url: http://dj-extensions.com
 * @author email: contact@dj-extensions.com
 */

defined ('_JEXEC') or die('Restricted access');

class DjClassifiedsModelItems extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields'])) {
			$config['filter_fields'] = array(
				'name', 'i.name',
				'id', 'i.id',				
				'cat_id', 'a.cat_id', 
				'category_name', 'region_name',
				'description', 'i.description',
				'tooltip', 'i.tooltip',
				'art_id', 'i.art_id',
				'details', 'i.details',
				'ordering', 'i.ordering',
				'date_start', 'i.date_start',
				'published', 'i.published',
				'abuse', 'a.c_abuse','i.promotions',
				'special', 'i.special','s_active','u.name',
				'active', 'blocked', 
				'category', 'region', 'type'
			);
		}

		parent::__construct($config);
	}
	
	protected function populateState($ordering = null, $direction = null)
	{
		parent::populateState('i.id', 'desc');

		$search = $this->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		$published = $this->getUserStateFromRequest($this->context.'.filter.published', 'filter_published', '');
		$this->setState('filter.published', $published);

		$category = $this->getUserStateFromRequest($this->context.'.filter.category', 'filter_category', '');
		$this->setState('filter.category', $category);

		$region = $this->getUserStateFromRequest($this->context.'.filter.region', 'filter_region', '');
		$this->setState('filter.region', $region);
		
		$published = $this->getUserStateFromRequest($this->context.'.filter.active', 'filter_active', '');
		$this->setState('filter.active', $published);

		$blocked = $this->getUserStateFromRequest($this->context.'.filter.blocked', 'filter_blocked', '');
		$this->setState('filter.blocked', $blocked);

		$abuse = $this->getUserStateFromRequest($this->context.'.filter.abuse', 'filter_abuse', '');
		$this->setState('filter.abuse', $abuse);

		$type = $this->getUserStateFromRequest($this->context.'.filter.type', 'filter_type', '');
		$this->setState('filter.type', $type);

		$order = $this->getUserStateFromRequest($this->context.'.filter.order', 'filter_order');
		if($order){
			$this->setState('list.ordering', $order);
		}
		$order_dir = $this->getUserStateFromRequest($this->context.'.filter.order_Dir', 'filter_order_Dir');
		if($order_dir){
			$this->setState('list.direction', $order_dir);
		}
	}

	protected function getStoreId($id = '')
	{
		// Compile the store id.
		$id	.= ':'.$this->getState('filter.search');
		$id	.= ':'.$this->getState('filter.published');
		$id	.= ':'.$this->getState('filter.category');
		$id	.= ':'.$this->getState('filter.region');
		$id	.= ':'.$this->getState('filter.active');
		$id	.= ':'.$this->getState('filter.ids');
		$id	.= ':'.$this->getState('filter.blocked');
		$id	.= ':'.$this->getState('filter.abuse');
		$id	.= ':'.$this->getState('filter.type');
		
		return parent::getStoreId($id);
	}

	protected function getListQuery()
	{
		$date_now = JFactory::getDate()->toSQL();

		$orderCol = $this->getState('list.ordering');
		$orderDirn = $this->getState('list.direction');

		if($orderCol == 'i.ordering'){
			$orderCol = 'i.cat_id asc, i.ordering';	
		}elseif($orderCol == 'category_name'){
			$orderCol = 'c.name';
		}elseif($orderCol == 'region_name'){
			$orderCol = 'r.name';
		}elseif($orderCol == 's_active'){
			$active = $this->getState('filter.active');
			if(is_numeric($active)){
				$orderCol = ' i.date_exp ';
			}else{
				$orderCol = 's_active '.$orderDirn.', i.date_exp DESC';
				$orderDirn = '';
			}
		}

		$where = '';
		
		$category = $this->getState('filter.category');		
		if (is_numeric($category) && $category != 0) {
			$catlist = ''; 
			$cats = DJClassifiedsCategory::getSubCatItemsCount((int) $category);
			$catlist = (int) $category;			
			foreach($cats as $c){
				$catlist .= ','. $c->id;
			}

			if(JPluginHelper::isEnabled('djclassifieds', 'multicategories')){
				$where .= ' AND (i.cat_id IN ('.$catlist.') OR mc.mcat_c>0) ';
			}else{
				$where .= ' AND i.cat_id IN ('.$catlist.') ';
			}
		}

		$region = $this->getState('filter.region');		
		if($region){
			$reglist = ''; 
			$regs = DJClassifiedsCategory::getSubCatItemsCount((int) $region);
			$reglist = (int) $region;
			foreach($regs as $r){
				$reglist .= ','. $r->id;
			}

			$where .= ' AND i.region_id IN ('.$reglist.') ';
		}

		$search = $this->getState('filter.search');		
		if (!empty($search)) {
			$db = JFactory::getDBO();			
			$search_id = $db->Quote($db->escape($search, true));
			$search = $db->Quote('%'.$db->escape($search, true).'%');
			$where .= " AND (CONCAT_WS(' ',i.name,IFNULL(i.alias,''),IFNULL(i.intro_desc,''),IFNULL(i.description,''),IFNULL(i.contact,''),IFNULL(i.address,''),IFNULL(i.post_code,''),IFNULL(i.website,''),IFNULL(i.video,''),IFNULL(c.name,''),IFNULL(r.name,''),IFNULL(u.name,''),IFNULL((CASE i.user_id WHEN 0 THEN i.email ELSE u.email END),'')) LIKE ".$search." OR i.id=".$search_id.")";
			//$where .= " AND (i.name LIKE ".$search." OR u.name LIKE ".$search." OR u.username LIKE ".$search." OR u.email LIKE ".$search." OR i.email LIKE ".$search." OR i.id=".$search_id." )";
			// $par = JComponentHelper::getParams('com_djclassifieds');
			// $par->set('search_by',array(0,1,2,3,4,5,6,7,8,9,10,11,12));
			// $where .= " AND (".DJClassifiedsTheme::getSearchPhraseQueryFilter($search, $par).")";
		}
		
		$published = $this->getState('filter.published');
		if (is_numeric($published) && $published!='-1') {
			$where .= ' AND i.published = ' . (int) $published;
		}
		
		$active = $this->getState('filter.active');
		if (is_numeric($active) && $active!='-1') {
			$date_now = JFactory::getDate()->toSQL();
			if($active){
				$where .= " AND i.date_start <= '".$date_now."' AND i.date_exp >= '".$date_now."' ";
			}else{
				$where .= " AND (i.date_start >= '".$date_now."' OR i.date_exp <= '".$date_now."' ) ";
			}
		}
		
		$item_ids = $this->getState('filter.ids');
		if ($item_ids != '') {
			$where .= ' AND i.id IN ('.$item_ids.') ';
		}

		$blocked = $this->getState('filter.blocked');
		if (is_numeric($blocked) && $blocked!='-1') {
			$where .= ' AND i.blocked = ' . (int) $blocked;
		}

		$abuse = $this->getState('filter.abuse');
		if (is_numeric($abuse)) {
			$where .= ' AND IFNULL(a.c_abuse,0) = ' . (int) $abuse;
		}

		$type = $this->getState('filter.type');
		if ($type) {
			$where .= ' AND i.type_id = ' . (int) $type;
		}

		$query = "SELECT i.*, c.name as cat_name, c.alias as c_alias, r.name as reg_name, r.alias as r_alias, u.name as user_name, u.email as u_email, a.c_abuse, i.date_start <= '".$date_now."' AND i.date_exp >= '".$date_now."' AS s_active "
				."FROM #__djcf_items i "
				."LEFT JOIN #__djcf_categories c ON i.cat_id=c.id "
				."LEFT JOIN #__djcf_regions r ON i.region_id=r.id "
				."LEFT JOIN #__users u ON i.user_id=u.id "
				."LEFT JOIN ( SELECT count(a.id) as c_abuse, a.item_id 
							FROM #__djcf_items_abuse a GROUP BY a.item_id ) a ON i.id=a.item_id "
				.(JPluginHelper::isEnabled('djclassifieds', 'multicategories') && !empty($catlist) ? "LEFT JOIN ( SELECT item_id, count(id) as mcat_c FROM #__djcf_items_categories WHERE cat_id IN (".$catlist.") GROUP BY item_id ) mc ON i.id=mc.item_id " : "")
				."WHERE 1 ".$where." "
				."ORDER BY ".$orderCol." ".$orderDirn;

		return $query;
	}

	function getItems()
	{
		$items = parent::getItems();

		if($items){
			$id_list = '';
			foreach($items as $item){
				$id_list .= ($id_list) ? ','.$item->id : $item->id;
			}
		
			$items_img = DJClassifiedsImage::getAdsImages($id_list, true);
		
			for($i=0; $i<count($items); $i++){
				$items[$i]->img = !empty($items_img[$items[$i]->id]) ? $items_img[$items[$i]->id][0] : null;

				if(JPluginHelper::isEnabled('djclassifieds', 'plans')){
					$items[$i]->added_from_plan = $this->getItemPlan($items[$i]->id);
					$renewed_from_plans = $this->getItemPlansRenew($items[$i]->id);
					if($renewed_from_plans){
						$plans_renew_arr = array();
						foreach($renewed_from_plans as $key => $r){
							$plans_renew_arr['plans_renew'.$key] = array(
								'plan_name' => $r->name,
								'renew_date' => $r->date,
							);
						}
						$items[$i]->plans_renew_data = $plans_renew_arr;
					}
				}
			}
		}

		return $items;
	}

	function getItemPlan($item_id)
	{
		$db = JFactory::getDBO();
		$query = "SELECT p.* "
		."FROM #__djcf_plans_subscr_items psi "
		."INNER JOIN #__djcf_plans_subscr ps ON psi.subscr_id=ps.id "
		."INNER JOIN #__djcf_plans p ON ps.plan_id=p.id WHERE psi.item_id=".$item_id;
		$db->setQuery($query);
		return $db->loadObject();
	}

	function getItemPlansRenew($item_id)
	{
		$db = JFactory::getDBO();
		$query = "SELECT p.name, psir.date "
		."FROM #__djcf_plans_subscr_items_renew psir "
		."INNER JOIN #__djcf_plans_subscr ps ON psir.subscr_id=ps.id "
		."INNER JOIN #__djcf_plans p ON ps.plan_id=p.id WHERE psir.item_id=".$item_id;
		$db->setQuery($query);
		return $db->loadObjectList();
	}
	
	protected function getReorderConditions($table)
	{
		$condition = array();
		$condition[] = 'cat_id = '.(int) $table->cat_id;
		return $condition;
	}

	function getBatchForm()
	{
		return JForm::getInstance('batch_items', JPATH_ROOT.'/administrator/components/com_djclassifieds/models/forms/batch_items.xml');
	}
}
?>
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!