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);
    }
}