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;
}
}