echo "Skipping payment in...\n"; continue; } $name = $info[4]; $name = trim($name, ' "'); # trim off the BRITCOIN #$lastdot = strrpos($name, ' . '); #$name = substr($name, 0, $lastdot); #print_r($name); $amount = $info[5]; echo "We paid {$amount} to {$name}.\n"; $amount = numstr_to_internal($amount); $query = "\n SELECT\n requests.reqid AS reqid\n FROM\n requests\n JOIN\n uk_requests\n ON\n requests.reqid=uk_requests.reqid\n WHERE\n requests.req_type='WITHDR'\n AND requests.curr_type='" . CURRENCY . "'\n AND requests.amount='{$amount}'\n AND uk_requests.name LIKE '{$name}%'\n "; $result_lookup = do_query($query); if (!has_results($result_lookup)) { echo "ERROR: could not find this withdrawal!\n"; break; } $row = get_row($result_lookup); $reqid = $row['reqid']; echo "reqid is {$reqid}\n\n"; # now check that this request doesn't already have an entry $query = "\n SELECT 1\n FROM bank_statement\n WHERE reqid='{$reqid}'\n "; $result_lookup = do_query($query); if (has_results($result_lookup)) { echo "ERROR: this request id already has an entry in bank_statement."; break; } $query = "\n UPDATE\n bank_statement\n SET\n reqid='{$reqid}',\n status='FINAL'\n WHERE\n bid='{$bid}'\n "; b_query($query); }
function process() { do_query("SET div_precision_increment = 8"); // find and cancel any active orders from users with negative BTC or FIAT balances // this should never happen unless someone is trying to double-spend their balance $query = "\n SELECT orderid, orderbook.amount as amount, orderbook.type, orderbook.uid as uid\n FROM orderbook\n JOIN purses\n ON orderbook.uid = purses.uid\n WHERE\n status != 'CLOSED' AND\n status != 'CANCEL' AND\n purses.amount < 0\n GROUP BY orderid\n "; $result = b_query($query); while ($row = mysql_fetch_array($result)) { $orderid = $row['orderid']; $amount = $row['amount']; $type = $row['type']; $uid = $row['uid']; try { echo "cancelling order {$orderid} (spend ", internal_to_numstr($amount), " {$type} for user {$uid}) due to negative balance\n"; wait_for_lock($uid); $query = "\n UPDATE orderbook\n SET status = 'CANCEL'\n WHERE orderid = '{$orderid}'\n "; b_query($query); add_funds($uid, $amount, $type); // these records indicate returned funds. create_record($orderid, $amount, 0, 0, -1, 0); release_lock($uid); } catch (Error $e) { if ($e->getTitle() == 'Lock Error') { echo "can't get lock for {$uid}\n"; } else { throw $e; } } } $query = "\n SELECT orderid\n FROM orderbook\n WHERE processed=FALSE\n ORDER BY timest ASC\n "; $result = b_query($query); while ($row = mysql_fetch_array($result)) { $orderid = $row['orderid']; echo "Processing {$orderid}...\n"; fulfill_order($orderid); echo "Completed.\n\n"; $query = "\n UPDATE orderbook\n SET processed=TRUE\n WHERE orderid='{$orderid}'\n "; b_query($query); } }