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