Current File : /home/pacjaorg/public_html/km/components/com_djclassifieds/models/useritems.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 DjclassifiedsModelUserItems extends DJClassifiedsModel
{
	private static $_items_query = '';

	function getItems($catlist = '')
	{
		$app = JFactory::getApplication();
		$db	= JFactory::getDBO();
		$user = JFactory::getUser();
		$par = $app->getParams('com_djclassifieds');
		$date_now = JFactory::getDate()->toSQL();

		$limitstart	= $app->input->getInt('limitstart', 0);
		$limit = $app->input->getInt('limit', $par->get('limit_djitem_show','7'));
		$order = $app->input->getCmd('order', $par->get('useritems_ordering','date_a'));
		$ord_t = $app->input->getCmd('ord_t', $par->get('useritems_ordering_dir','desc'));
		$where = "";

		if($par->get('user_ad_delete',0)){ // delete = archive
			$where .= "AND i.published!=2 ";
		}
			
		$ord = "i.date_start ";
		if($order=="title"){
			$ord="i.name ";
		}elseif($order=="cat"){
			$ord="c.name ";
		}elseif($order=="loc"){
			$ord="r.name ";
		}elseif($order=="price"){
			$ord="CAST(i.price AS DECIMAL(10,2)) ";
		}elseif($order=="display"){
			$ord="i.display ";
		}elseif($order=="date_a"){
			$ord="i.date_start ";
		}elseif($order=="date_e"){
			$ord="i.date_exp ";
		}elseif($order=="published"){
			$ord="i.published ";
		}
		
		$ord .= $ord_t == 'desc' ? "DESC" : "ASC";

		if($order=="active"){
			if($ord_t == 'desc'){
				$ord = "s_active DESC, i.published DESC, i.blocked ASC, i.date_start DESC";
			}else{
				$ord = "s_active ASC, i.published ASC, i.blocked DESC, i.date_start ASC";
			}				
		}
			
		if($app->input->getVar('search')){							
			$search_word = $db->q('%'.$db->escape($app->input->getVar('search'), true).'%');
			$search_word2 = $db->q($db->escape($app->input->getVar('search'), true));
			$where .= "AND (CONCAT_WS(' ',i.name,IFNULL(i.intro_desc,''),IFNULL(i.description,''),IFNULL(i.contact,'')) LIKE ".$search_word." OR c.name LIKE ".$search_word." OR r.name LIKE ".$search_word." OR i.id=".$search_word2." ) ";
		}

		if($catlist){
			$where .= "AND i.cat_id IN (".$catlist.") ";
		}

		$filter = $app->input->get('filter');
		if($filter){
			if($filter == 'active'){
				$where .= "AND i.date_start <= ".$db->q($date_now)." AND i.date_exp >= ".$db->q($date_now)." AND i.blocked=0 AND i.published=1 ";
			}elseif($filter == 'inactive'){
				$where .= "AND (i.date_start > ".$db->q($date_now)." OR i.date_exp < ".$db->q($date_now)." OR i.blocked=1 OR i.published=0) ";
			}elseif($filter == 'expired'){
				$where .= "AND i.date_exp < ".$db->q($date_now)." AND i.published!=2 ";
			}elseif($filter == 'blocked'){
				$where .= "AND i.blocked=1 AND i.published!=2 ";
			}elseif($filter == 'archived'){
				$where .= "AND i.published=2 ";
			}
		}
		
		$query = "SELECT i.*, c.id as c_id, c.name as c_name, c.alias as c_alias, c.autopublish as c_autopublish, r.id as r_id, r.name as r_name, r.alias as r_alias, i.date_start <= ".$db->q($date_now)." AND i.date_exp >= ".$db->q($date_now)." AND i.blocked=0 AND i.published=1 as s_active "
				."FROM #__djcf_items i "
				."LEFT JOIN #__djcf_categories c ON i.cat_id = c.id AND c.published!=0 "
				."LEFT JOIN #__djcf_regions r ON i.region_id = r.id "
				."WHERE i.user_id=".$user->id." "
				.$where		
				."ORDER BY ".$ord;

		$app->triggerEvent('onDJClassifiedsUseritemsQuery', array(&$query, &$limitstart, &$limit));

		self::$_items_query = $query;
		$items = $this->_getList($query, $limitstart, $limit);
		
		if($items){
			$id_list = implode(',', array_map(function($v){return $v->id;}, $items));

			$items_img = DJClassifiedsImage::getAdsImages($id_list, true);
			
			if($par->get('authorname','name')=='name'){
				$u_name = 'u.name as username';
			}else{
				$u_name = 'u.username';
			}

			$query = "SELECT o.*, ".$u_name.", u.email, p.group_id "
					."FROM #__djcf_orders o "
					."INNER JOIN #__users u ON o.user_id=u.id "
					."LEFT JOIN #__djcf_profiles p ON o.user_id=p.user_id "
					."WHERE o.item_id IN (".$id_list.") "
					."ORDER BY o.date DESC";
			$db->setQuery($query);
			$items_orders = $db->loadObjectList();
			
			$query = "SELECT o.*, ".$u_name.", u.email, p.group_id "
					."FROM #__djcf_offers o "
					."INNER JOIN #__users u ON o.user_id=u.id "
					."LEFT JOIN #__djcf_profiles p ON o.user_id=p.user_id "
					."WHERE o.item_id IN (".$id_list.") "
					."ORDER BY o.date DESC";
			$db->setQuery($query);
			$items_offers = $db->loadObjectList();
			
			$query = "SELECT i.*, p.label "
					."FROM #__djcf_items_promotions i "
					."INNER JOIN #__djcf_promotions p ON i.prom_id=p.id "
					."WHERE i.date_exp >= ".$db->q($date_now)." AND i.item_id IN (".$id_list.") "
					."ORDER BY i.date_exp DESC";
			$db->setQuery($query);
			$items_proms = $db->loadObjectList();	
			
			for($i=0;$i<count($items);$i++){
				$query = "SELECT * FROM #__djcf_payments "
						."WHERE (type=0 OR type=2) AND item_id=".$items[$i]->id." AND user_id=".$user->id." "
						."ORDER BY ID DESC";
				$db->setQuery($query);
				$items[$i]->payments = $db->loadObjectList();

				if(JPluginHelper::isEnabled('djclassifieds', 'plans')){
					$items[$i]->added_from_plan = $this->getItemPlan($items[$i]->id);
					$items[$i]->renewed_from_plans = $this->getItemPlansRenew($items[$i]->id);
				}

				$items[$i]->images = !empty($items_img[$items[$i]->id]) ? $items_img[$items[$i]->id] : array();

				$items[$i]->orders = array();
				foreach($items_orders as $key => $order){
					if($items[$i]->id==$order->item_id){
						$items[$i]->orders[] = $order;
					}
					$items_orders[$key]->profile_uri = DJClassifiedsSEO::getViewUri('profile', array('group_id' => $order->group_id)).'&uid='.DJClassifiedsSEO::getUserSlug($order->user_id, $order->username);
				}
				
				$items[$i]->offers = array();
				foreach($items_offers as $key => $offer){
					if($items[$i]->id==$offer->item_id){
						$items[$i]->offers[] = $offer;
					}
					$items_offers[$key]->profile_uri = DJClassifiedsSEO::getViewUri('profile', array('group_id' => $offer->group_id)).'&uid='.DJClassifiedsSEO::getUserSlug($offer->user_id, $offer->username);
				}
				
				$items[$i]->promotions_active = array();
				foreach($items_proms as $items_p){
					if($items[$i]->id==$items_p->item_id){
						$items[$i]->promotions_active[] = $items_p;
					}
				}

				$items[$i]->item_uri = DJClassifiedsSEO::getItemRoute($items[$i]->id.':'.$items[$i]->alias,$items[$i]->cat_id.':'.$items[$i]->c_alias,$items[$i]->region_id.':'.$items[$i]->r_alias).($items[$i]->new_draft ? '&prev=1' : '');
			}
		}

		return $items;
	}
	
	function getCountItems()
	{
		$db = JFactory::getDBO();
		$query = "SELECT count(id) FROM (".self::$_items_query.") as q";
		$db->setQuery($query);
		$items_count = $db->loadResult();

		return $items_count;
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

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