Example #1
0
 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;
 }
Example #2
0
    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;
    }