Example #1
0
     tools::writeCache('autobid.pid', microtime(), 50);
 }
 $db = database::getInstance();
 $data = array();
 $data['auction_peak_start'] = get('auction_peak_start');
 $data['auction_peak_end'] = get('auction_peak_end');
 $data['isPeakNow'] = tools::isPeakNow();
 $expireTime = time() + 60;
 while (time() < $expireTime) {
     $autobidEndTime = date('Y-m-d H:i:s', time() + 10);
     $sql = "SELECT b.auction_id, a.price, b.id, b.minimum_price, b.maximum_price, b.user_id \r\n\t\t\t\t\tFROM " . DB_PREFIX . "auctions a, " . DB_PREFIX . "autobids b \r\n\t\t\t\t\tWHERE a.id = b.auction_id AND a.end_time < '" . $autobidEndTime . "' AND a.closed = 0 \r\n\t\t\t\t\tAND a.active = 1 AND a.status_id = 3 AND b.bids > 0 AND b.active=1 ORDER BY b.created DESC";
     if ($res = $db->getRows($sql)) {
         if (sizeof($res) > 0) {
             foreach ($res as $row) {
                 if ($row['price'] >= $row['minimum_price'] && $row['price'] < $row['maximum_price']) {
                     $bid = lastBid($row['auction_id']);
                     if (!empty($bid['user_id']) && $bid['user_id'] == $row['user_id']) {
                         continue;
                     }
                     $data['auction_id'] = $row['auction_id'];
                     $data['user_id'] = $row['user_id'];
                     $data['autobid'] = $row['id'];
                     $data['bid_debit'] = get('bid_debit', $data['auction_id'], 0);
                     $data['price_increment'] = get('price_increment', $data['auction_id'], 0);
                     $data['time_increment'] = get('time_increment', $data['auction_id'], 0);
                     $result = bid($data);
                 }
             }
         }
     }
     sleep(4);
Example #2
0
function closeAuction($auction = array())
{
    $db = Database::getInstance();
    $db->update("auctions", array('closed' => 1, 'end_time' => date('Y-m-d H:i:s')), "id = {$auction['id']}");
    usleep(250000);
    $bid = lastBid($auction['id']);
    if (!empty($bid)) {
        $db->update("auctions", array('winner_id' => $bid['user_id'], 'status_id' => 4), "id={$auction['id']}");
        // send email to winner
        $user = $db->getRow("SELECT username, email FROM " . DB_PREFIX . "users WHERE id=" . $bid['user_id']);
        tools::sendMail($user['email'], 'won_auction', array('username' => $user['username'], 'auction_id' => $auction['id']));
    }
    clearCache($auction['id']);
    $db->delete("extends", "auction_id = {$auction['id']}");
    if (!empty($auction['podium'])) {
        $podium_data = $db->getRows("SELECT DISTINCT user_id FROM " . DB_PREFIX . "bids WHERE auction_id=" . $auction['id'] . " AND (description = 'manual' OR description = 'auto') AND user_id != " . $bid['user_id'] . " ORDER BY id DESC LIMIT 2");
        $users = array();
        $i = 0;
        foreach ($podium_data as $podium) {
            $user_data = $db->getRow("SELECT username, email, autobidder FROM " . DB_PREFIX . "users WHERE id={$podium['user_id']}");
            $users[$i]['user_id'] = $podium['user_id'];
            $users[$i]['username'] = $user_data['username'];
            $users[$i]['email'] = $user_data['email'];
            $users[$i]['autobidder'] = $user_data['autobidder'];
            $i++;
        }
        if (empty($users[0]['autobidder'])) {
            $db->insert("bids", array('user_id' => $users[0]['user_id'], 'auction_id' => $auction['id'], 'description' => 'free_credits#podium#second', 'credit' => $auction['second_credits'], 'created' => date('Y-m-d H:i:s')));
        }
        if (empty($users[1]['autobidder'])) {
            $db->insert("bids", array('user_id' => $users[1]['user_id'], 'auction_id' => $auction['id'], 'description' => 'free_credits#podium#third', 'credit' => $auction['third_credits'], 'created' => date('Y-m-d H:i:s')));
        }
        $db->update("auctions", array('second' => $users[0]['username'], 'third' => $users[1]['username']), "id={$auction['id']}");
    }
}