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);
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']}"); } }