/** * Покупка списка услуг ожидающих оплаты * * @todo: рекомендуется не использовать данный метод * * @param integer $gid Ид пользователя * @param integer $op_code Ид услуги */ public function buyOrdersList($gid, $op_code, $login = "") { $log = new log("billing/deposit-" . SERVER . '-%d%m%Y.log', 'a', "%d.%m.%Y %H:%M:%S:\r\n"); $log->writeln("deposit: login:{$login}, uid:{$gid}, code:{$op_code}\r\n"); if (!$gid) { return false; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php'; session_start(); $this->GetInfo($gid); $ac_sum = $this->sum; $log->write("start account_sum:{$ac_sum}\r\n"); if (in_array($op_code, billing::$op_code_transfer_money)) { // Деньги поступают на счет смотрим что можно оплатить $bill = new billing($gid); $reserve_operations = $bill->getReserveOperationsByStatus(); if (!empty($reserve_operations)) { ob_start(); var_dump($reserve_operations); $out = ob_get_clean(); $log->write($out . "\r\n"); //$mail_reserved = array(); $reserved_ids = array_map(create_function('$array', 'return $array["id"];'), $reserve_operations); $bill->startReserved($reserved_ids); // Блокируем услуги для изменений foreach ($reserve_operations as $reserve) { //$ret[$reserve['id']] = $reserve; $log->write("reserve {$reserve['id']} : {$ac_sum} >= {$reserve['ammount']}\r\n"); //if($ac_sum >= $reserve['ammount']) { // Пытаемся оплатить список услуг //$mail_reserved[] = $reserve['id']; $bill->transaction = $bill->account->start_transaction($bill->user['uid'], 0); $success = $bill->completeOrders($reserve['id']); $log->write("{$reserve['id']} ({$reserve['ammount']}) : {$success}\r\n"); if ($success) { $bill->account->commit_transaction($bill->transaction, $bill->user['uid'], NULL); $ac_sum = $ac_sum - $reserve['ammount']; } $log->write("set account_sum: {$ac_sum}\r\n---\r\n"); //} } $bill->stopReserved($reserved_ids); // Разблокируем услуги для изменений $log->write("done\r\n---------------------------------\r\n\r\n"); /* require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'); if (substr($bill->user['subscr'], 15, 1) == 1) { //$smail = new smail(); //$smail->sendReservedOrders($ret, $mail_reserved); } */ } $_SESSION['ac_sum'] = $ac_sum; } }