示例#1
0
function process_cart($cart, $charaID, $character, $accountID, $realm)
{
    if (!isset($_SESSION[$cart . 'Cart'])) {
        return;
    }
    $host = $GLOBALS['realms'][$realm]['host'];
    $rank_user = $GLOBALS['realms'][$realm]['rank_user'];
    $rank_pass = $GLOBALS['realms'][$realm]['rank_pass'];
    $ra_port = $GLOBALS['realms'][$realm]['ra_port'];
    $totalPrice = 0;
    $entrys = array_keys($_SESSION[$cart . 'Cart']);
    if (count($entrys) > 0) {
        // Array of valid items
        $items = array();
        // Generate List
        $query = "SELECT entry, price FROM shopitems WHERE in_shop = '{$cart}' AND entry IN (";
        $query .= implode(', ', $entrys);
        $query .= ")";
        if ($result = mysql_query($query)) {
            while ($row = mysql_fetch_assoc($result)) {
                $item = $_SESSION[$cart . 'Cart'][$row['entry']];
                if ($item) {
                    // Update Price
                    $item['price'] = $row['price'];
                    $item['totalPrice'] = $row['price'] * $item['quantity'];
                    $totalPrice = $totalPrice + $item['totalPrice'];
                    // Valid Item!
                    $items[$row['entry']] = $item;
                    unset($item);
                }
            }
        }
        if ($cart == 'donate' and account::hasDP($_SESSION['cw_user'], $totalPrice) == FALSE) {
            die("You do not have enough {$GLOBALS['donation']['coins_name']}!");
        } else {
            if ($cart == 'vote' and account::hasVP($_SESSION['cw_user'], $totalPrice) == FALSE) {
                die("You do not have enough Vote Points!");
            }
        }
        foreach ($items as $entry => $info) {
            $num = $info['quantity'];
            while ($num > 0) {
                $qty = $num > 12 ? 12 : $num;
                $command = "send items " . $character . " \"Your requested item\" \"Thanks for supporting us!\" " . $entry . ":" . $qty . " ";
                if ($error = sendRA($command, $rank_user, $rank_pass, $host, $ra_port)) {
                    echo 'Connection problems...Aborting | Error: ' . $error;
                    exit;
                } else {
                    shop::logItem($cart, $entry, $charaID, $accountID, $realm, $qty);
                    if ($cart == 'donate') {
                        account::deductDP($accountID, $info['price'] * $qty);
                    } else {
                        account::deductVP($accountID, $info['price'] * $qty);
                    }
                    // Update quantity incase of errors on the next loop
                    $_SESSION[$cart . 'Cart'][$entry]['quantity'] -= $qty;
                }
                $num = $num - $qty;
            }
            // All $entry have been sent
            unset($_SESSION[$cart . 'Cart'][$entry]);
        }
    }
    // Empty Cart
    unset($_SESSION[$cart . 'Cart']);
}
示例#2
0
        connect::selectDB('webdb');
        $realm = explode("*", $character_realm);
        $result = mysql_query("SELECT price FROM shopitems WHERE entry='" . $entry . "'");
        $row = mysql_fetch_assoc($result);
        $account_id = account::getAccountIDFromCharId($realm[0], $realm[1]);
        $account_name = account::getAccountName($account_id);
        if ($type == 'vote') {
            if (account::hasVP($account_name, $row['price']) == FALSE) {
                die('<b class="red_text">You do not have enough Vote Points</b>');
            }
            account::deductVP($account_id, $row['price']);
        } elseif ($type == 'donate') {
            if (account::hasDP($account_name, $row['price']) == FALSE) {
                die('<b class="red_text">You do not have enough ' . $GLOBALS['donation']['coins_name'] . '</b>');
            }
            account::deductDP($account_id, $row['price']);
        }
        shop::logItem($type, $entry, $realm[0], $account_id, $realm[1], 1);
        $result = mysql_query("SELECT * FROM realms WHERE id='" . $realm[1] . "'");
        $row = mysql_fetch_assoc($result);
        if ($row['sendType'] == 'ra') {
            require '../misc/ra.php';
            require '../classes/character.php';
            sendRa("send items " . character::getCharname($realm[0]) . " \"Your requested item\" \"Thanks for supporting us!\" " . $entry . " ", $row['rank_user'], $row['rank_pass'], $row['host'], $row['ra_port']);
        } elseif ($row['sendType'] == 'soap') {
            require '../misc/soap.php';
            require '../classes/character.php';
            sendSoap("send items " . character::getCharname($realm[0]) . " \"Your requested item\" \"Thanks for supporting us!\" " . $entry . " ", $row['rank_user'], $row['rank_pass'], $row['host'], $row['soap_port']);
        }
    }
}