Current File : /home/pacjaorg/public_html/km/components/com_djclassifieds/models/userbids.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 DjclassifiedsModelUserbids extends DJClassifiedsModel
{
private static $_items_query = '';
function getItems()
{
$app = JFactory::getApplication();
$user = JFactory::getUser();
$par = $app->getParams('com_djclassifieds');
$limit = $app->input->getInt('limit', $par->get('limit_djitem_show','7'));
$limitstart = $app->input->getInt('limitstart', 0);
$bid_type = $app->input->get('bid_type');
if($bid_type == 'won'){
$bid_type_where = "a.closed IS NOT NULL AND a.win=1 ";
}elseif($bid_type == 'ended'){
$bid_type_where = "a.closed IS NOT NULL AND a.win=0 ";
}else{
$bid_type_where = "a.closed IS NULL ";
}
$order = $app->input->get('order', 'date_a');
$ord_t = $app->input->get('ord_t', 'desc');
$ord = "i.date_start ";
if($order == "title"){
$ord = "i.name ";
}elseif($order == "date_a"){
$ord = "i.date_start ";
}elseif($order=="date_e"){
$ord = "i.date_exp ";
}
if($ord_t == 'desc'){
$ord .= 'DESC';
}else{
$ord .= 'ASC';
}
$query = "SELECT i.id, i.name, i.alias, i.user_id, i.date_start, i.date_exp, i.cat_id, i.region_id, i.currency, i.price_negotiable, last_bid_id, a.item_id, a.win, a.date bid_date, a.closed, u.username, u.name u_name, u.".$par->get('authorname','name')." as authorname, u.email as u_email, p.group_id, c.id c_id, c.name c_name, c.alias c_alias, r.id r_id, r.name r_name, r.alias r_alias "
."FROM (SELECT max(id) last_bid_id FROM #__djcf_auctions WHERE user_id=".$user->id." GROUP BY item_id, closed) user_bids "
."INNER JOIN #__djcf_auctions a ON user_bids.last_bid_id=a.id "
."INNER JOIN #__djcf_items i ON a.item_id=i.id "
."LEFT JOIN #__users u ON i.user_id = u.id "
."LEFT JOIN #__djcf_profiles p ON i.user_id=p.user_id "
."LEFT JOIN #__djcf_categories c ON i.cat_id = c.id "
."LEFT JOIN #__djcf_regions r ON i.region_id = r.id "
."WHERE "
.$bid_type_where
."ORDER BY ".$ord;
$app->triggerEvent('onDJClassifiedsUserbidsQuery', array(&$query, &$limitstart, &$limit));
self::$_items_query = $query;
$items = $this->_getList($query, $limitstart, $limit);
if($items){
$items_img = DJClassifiedsImage::getAdsImages(implode(',', array_map(function($v){return $v->id;}, $items)), true);
for($i=0;$i<count($items);$i++){
$items[$i]->images = !empty($items_img[$items[$i]->id]) ? $items_img[$items[$i]->id] : array();
$items[$i]->bid_users = $this->_getBiddingUsers($items[$i]->item_id, $items[$i]->closed);
$items[$i]->user_max_bid = $this->_getUserMaxBid($items[$i]->item_id, $items[$i]->closed, $user->id);
$items[$i]->max_bid = $this->_getMaxBid($items[$i]->item_id, $items[$i]->closed);
$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]->profile_uri = DJClassifiedsSEO::getViewUri('profile', array('group_id' => $items[$i]->group_id)).'&uid='.DJClassifiedsSEO::getUserSlug($items[$i]->user_id, $items[$i]->authorname);
}
}
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;
}
private function _getBiddingUsers($item_id, $closing_time)
{
$db = JFactory::getDBO();
$query = "SELECT DISTINCT user_id FROM #__djcf_auctions WHERE item_id=".$item_id." AND closed".($closing_time ? "=".$db->q($closing_time) : " IS NULL");
$db->setQuery($query);
$user_ids = $db->loadColumn();
return count($user_ids);
}
private function _getUserMaxBid($item_id, $closing_time, $user_id)
{
$db = JFactory::getDBO();
$query = "SELECT max(price) FROM #__djcf_auctions WHERE item_id=".$item_id." AND closed".($closing_time ? "=".$db->q($closing_time) : " IS NULL")." AND user_id=".$user_id;
$db->setQuery($query);
$user_max_bid = $db->loadResult();
return $user_max_bid;
}
private function _getMaxBid($item_id, $closing_time)
{
$db = JFactory::getDBO();
$query = "SELECT max(price) FROM #__djcf_auctions WHERE item_id=".$item_id." AND closed".($closing_time ? "=".$db->q($closing_time) : " IS NULL");
$db->setQuery($query);
$max_bid = $db->loadResult();
$query = "SELECT price FROM #__djcf_orders WHERE item_id=".$item_id.($closing_time ? " AND date<=".$db->q($closing_time) : "")." ORDER BY id DESC LIMIT 1";
$db->setQuery($query);
$buynow = $db->loadResult();
if($buynow){
$max_bid = $buynow;
}
return $max_bid;
}
}