public static function notifyAuctions() { $app = JFactory::getApplication(); $config = JFactory::getConfig(); $par = JComponentHelper::getParams('com_djclassifieds'); $db = JFactory::getDBO(); $date_now = date("Y-m-d H:i:s"); $query = "SELECT i.*, c.name as c_name, c.alias as c_alias,u.name as u_name,u.email as u_email, u.username as u_username " . "FROM #__djcf_items i " . "LEFT JOIN #__djcf_categories c ON c.id=i.cat_id " . "LEFT JOIN #__users u ON u.id=i.user_id " . "WHERE i.notify<2 AND i.date_exp > '" . $date_now . "' AND i.auction=1 "; $db->setQuery($query); $items = $db->loadObjectList(); if ($items) { foreach ($items as $item) { $query = "SELECT a.*, u.name, u.username, u.email FROM #__djcf_auctions a " . "LEFT JOIN #__users u ON u.id=a.user_id " . "WHERE a.item_id=" . $item->id . " " . "ORDER BY a.price DESC "; $db->setQuery($query); $bids = $db->loadObjectList(); $win = 0; $win_id = 0; if (count($bids)) { foreach ($bids as $b => $bid) { $bidder = new stdClass(); $bidder->id = $bid->user_id; $bidder->name = $bid->name; $bidder->username = $bid->username; $bidder->email = $bid->email; if ($b > 0) { if ($win_id != $bid->user_id) { DJClassifiedsNotify::notifyAuctionsWinBidder($item->id, $bidder, $bid->price, 15); } } else { if ($bid->price >= $item->price_reserve) { DJClassifiedsNotify::notifyAuctionsWinBidder($item->id, $bidder, $bid->price); $win = 1; } else { DJClassifiedsNotify::notifyAuctionsWinBidder($item->id, $bidder, $bid->price, 14); } $win_id = $bid->user_id; } } if ($win) { self::notifyAuctionsWinAuthor($item->id, $bidder, $bid->price); } else { self::notifyAuctionsWinAuthor($item->id, $bidder, $bid->price, 13); } } else { self::notifyAuctionsWinAuthor($item->id, '', '', 12); } $query = "UPDATE `#__djcf_items` SET notify=2 WHERE id = " . $item->id . " "; $db->setQuery($query); $db->query(); } } return null; }
function saveBid() { header("Content-type: text/html; charset=utf-8"); $app = JFactory::getApplication(); $id = JRequest::getInt('id', 0); $bid = JRequest::getFloat('bid', 0); $db = JFactory::getDBO(); $user = JFactory::getUser(); $itemid = JRequest::getVar('Itemid'); $par = JComponentHelper::getParams('com_djclassifieds'); $bid_error = 0; $error_show_form = 0; $error_price = 0; $bid_message = JText::_('COM_DJCLASSIFIEDS_OFFER_PUBLISHED'); if ($user->id > 0) { $date_now = date("Y-m-d H:i:s"); $query = "SELECT * FROM #__djcf_items i " . "WHERE i.id = " . $id . " AND i.published=1 AND i.date_start <= '" . $date_now . "' AND i.date_exp >= '" . $date_now . "' "; $db->setQuery($query); $item = $db->loadObject(); if ($item) { if ($bid > 0) { $query = "SELECT a.*, u.name as u_name FROM #__djcf_auctions a, #__users u " . " WHERE a.user_id=u.id AND a.item_id=" . $id . " ORDER BY a.date DESC LIMIT 1"; $db->setQuery($query); $last_bid = $db->loadObject(); if ($item->buynow) { $min_bid = $item->price_start; } else { $min_bid = $item->price; } if ($last_bid) { if ($last_bid->user_id == $user->id) { $bid_error = 1; $bid_message = JText::_('COM_DJCLASSIFIEDS_YOUR_OFFER_IS_LAST_YOU_CAN_BID_ONLY_OTHER_USERS'); } $min_bid = $last_bid->price; } if ($item->user_id == $user->id) { $bid_error = 1; $bid_message = JText::_('COM_DJCLASSIFIEDS_YOU_CANT_BID_YOUR_ADVERT'); } if ($bid_error == 0) { if (!$item->bid_min) { $item->bid_min = 1; } $min_bid = $min_bid + $item->bid_min; if ($bid < $min_bid) { $bid_error = 1; $error_show_form = 1; $error_price = $min_bid; $bid_message = JText::_('COM_DJCLASSIFIEDS_OFFER_SMALLER_THAN_LIMIT') . ' ' . DJClassifiedsTheme::priceFormat($error_price, $item->currency); } if ($bid_error == 0) { if ($item->bid_max > 0) { $max_bid = $min_bid + $item->bid_max; if ($item->bid_max && $bid > $max_bid) { $bid_error = 1; $error_show_form = 1; $error_price = $max_bid; $bid_message = JText::_('COM_DJCLASSIFIEDS_OFFER_BIGGER_THAN_LIMIT') . ' ' . DJClassifiedsTheme::priceFormat($error_price, $item->currency); } } } if ($bid_error == 0) { $user_ip = $_SERVER['REMOTE_ADDR']; $win = 0; if ($bid >= $item->price_reserve && $item->bid_autoclose == 1) { $win = 1; } $query = "INSERT INTO #__djcf_auctions (`item_id`, `user_id`, `ip_address`, `price`,`win`)" . " VALUES ( '" . $id . "', '" . $user->id . "','" . $user_ip . "', '" . $bid . "', '" . $win . "' )"; $db->setQuery($query); $db->query(); $price_start = ''; if (!$last_bid) { $price_start = " price_start='" . $item->price . "' "; } $win_notifi = ''; if ($win) { if ($price_start || $item->buynow) { $win_notifi = ", "; } $win_notifi .= "notify=2 "; } $price_new = ''; if ($item->buynow == 0) { $price_new = " price='" . $bid . "' "; if ($price_start) { $price_start = ',' . $price_start; } } if ($price_start || $win_notifi || $price_new) { $query = "UPDATE #__djcf_items SET " . $price_new . $price_start . $win_notifi . " WHERE id=" . $item->id; $db->setQuery($query); $db->query(); } DJClassifiedsNotify::notifyAuctionsBidAuthor($id, $user, $bid); DJClassifiedsNotify::notifyAuctionsBidBidder($id, $user, $bid); if ($last_bid) { DJClassifiedsNotify::notifyAuctionsBidOutbid($id, $user, $bid, $last_bid); } if ($win) { DJClassifiedsNotify::notifyAuctionsWinAuthor($id, $user, $bid); DJClassifiedsNotify::notifyAuctionsWinBidder($id, $user, $bid); } } } } else { $bid_error = 1; $bid_message = JText::_('COM_DJCLASSIFIEDS_PLEASE_ENTER_PRICE_VALUE'); } $query = "SELECT a.*, u.name as u_name FROM #__djcf_auctions a, #__users u " . " WHERE a.user_id=u.id AND a.item_id=" . $id . " ORDER BY a.date DESC LIMIT " . $par->get('bids_displayed', 5); $db->setQuery($query); $bids = $db->loadObjectList(); ?> <div class="auction" id="djauctions"> <div class="auction_bids"> <div class="bids_title"><h2><?php echo JText::_('COM_DJCLASSIFIEDS_CURRENT_BIDS'); ?> </h2></div> <?php if (isset($bids[0]) && $item->price_reserve) { if ($bids[0]->price < $item->price_reserve) { ?> <div class="bids_subtitle"><?php echo JText::_('COM_DJCLASSIFIEDS_RESERVE_PRICE_NOT_REACHED'); ?> </div> <?php } } ?> <div class="bids_list"> <?php if ($bids) { ?> <div class="bids_row bids_row_title"> <div class="bids_col bids_col_name"><?php echo JText::_('COM_DJCLASSIFIEDS_NAME'); ?> :</div> <div class="bids_col bids_col_date"><?php echo JText::_('COM_DJCLASSIFIEDS_DATE'); ?> :</div> <div class="bids_col bids_col_bid"><?php echo JText::_('COM_DJCLASSIFIEDS_BID'); ?> :</div> <div class="clear_both"></div> </div> <?php foreach ($bids as $bid) { if ($bid->price > $min_bid) { $min_bid = $bid->price; } if ($par->get('mask_bidder_name', '0') == 1) { $bid->u_name = substr($bid->u_name, 0, 1) . '.....' . substr($bid->u_name, -1, 1); } ?> <div class="bids_row"> <div class="bids_col bids_col_name"><?php echo $bid->u_name; ?> </div> <div class="bids_col bids_col_date"><?php echo DJClassifiedsTheme::formatDate(strtotime($bid->date)); ?> </div> <div class="bids_col bids_col_bid"><?php echo DJClassifiedsTheme::priceFormat($bid->price, $item->currency); ?> </div> <div class="clear_both"></div> </div> <?php } ?> <?php } else { ?> <div class="bids_row no_bids_row"><?php echo JText::_('COM_DJCLASSIFIEDS_NO_SUBMITTED_BIDS'); ?> </div> <?php } ?> <div class="clear_both"></div> </div> </div> <?php if ($error_show_form) { ?> <div class="bids_form" id="djbids_form"> <div class="bids_box"> <div class="bids_info"> <span class="bid_label"><?php echo JText::_('COM_DJCLASSIFIEDS_PLACE_BID'); ?> </span> </div> <div class="bids_input"> <?php if ($par->get('unit_price_position', '0') == 1) { echo $item->currency ? $item->currency : $par->get('unit_price'); } ?> <input class="inputbox" id="djbid_value" type="text" name="bid_max" id="bid_max" size="30" maxlength="250" value="<?php echo $error_price; ?> " /> <?php if ($par->get('unit_price_position', '0') == 0) { echo $item->currency ? $item->currency : $par->get('unit_price'); } ?> </div> <div class="bids_button"> <button class="button" id="bid_submit"><?php echo JText::_('COM_DJCLASSIFIEDS_PLACE_BID'); ?> </button> </div> <div class="clear_both"></div> </div> <div class="clear_both"></div> </div> <?php } ?> <div id="djbid_alert"> <?php if ($bid_error) { echo $bid_message; } ?> </div> <div id="djbid_message"> <?php if (!$bid_error) { echo $bid_message; } ?> </div> </div> <?php } else { echo '<div class="auction" id="djauctions"><div id="djbid_alert" >'; echo JText::_('COM_DJCLASSIFIEDS_WRONG_AD'); echo '</div></div>'; } } else { echo '<div class="auction" id="djauctions"><div id="djbid_alert" >'; echo JText::_('COM_DJCLASSIFIEDS_PLEASE_LOGIN'); echo '</div></div>'; } die; }