function payment_cancel(&$payment) { global $lang; if (!isset($payment['payment_status'])) { throw new exception($lang['pay_msg_request_payment_not_found'], SN_PAYMENT_REQUEST_ORDER_NOT_FOUND); } if ($payment['payment_status'] == PAYMENT_STATUS_COMPLETE) { $safe_comment = db_escape($payment['payment_comment'] = $lang['pay_msg_request_payment_cancelled'] . ' ' . $payment['payment_comment']); if (!$payment['payment_test']) { $result = mm_points_change($payment['payment_user_id'], RPG_PURCHASE_CANCEL, -$payment['payment_dark_matter_gained'], $payment['payment_comment']); if (!$result) { throw new exception('Ошибка начисления ММ', SN_METAMATTER_ERROR_ADJUST); } } $payment['payment_status'] = PAYMENT_STATUS_CANCELED; doquery("UPDATE {{payment}} SET payment_status = {$payment['payment_status']}, payment_comment = '{$safe_comment}' WHERE payment_id = {$payment['payment_id']};"); throw new exception($lang['pay_msg_request_payment_cancel_complete'], SN_PAYMENT_REQUEST_OK); } elseif ($payment['payment_status'] == PAYMENT_STATUS_CANCELED) { throw new exception($lang['pay_msg_request_payment_cancelled_already'], SN_PAYMENT_REQUEST_OK); } elseif ($payment['payment_status'] == PAYMENT_STATUS_NONE) { throw new exception($lang['pay_msg_request_payment_cancel_not_complete'], SN_PAYMENT_REQUEST_PAYMENT_NOT_COMPLETE); } }
// } } $current_round = intval($config->db_loadItem('game_blitz_register_round')); $current_price = intval($config->db_loadItem('game_blitz_register_price')); if ($config->db_loadItem('game_blitz_register') == BLITZ_REGISTER_OPEN && (sys_get_param_str('register_me') || sys_get_param_str('register_me_not'))) { sn_db_transaction_start(); $user = db_user_by_id($user['id'], true); $is_registered = doquery("SELECT `id` FROM {{blitz_registrations}} WHERE `user_id` = {$user['id']} AND `round_number` = {$current_round} FOR UPDATE;", true); if (sys_get_param_str('register_me')) { if (empty($is_registered) && mrc_get_level($user, null, RES_METAMATTER) >= $current_price) { doquery("INSERT IGNORE INTO {{blitz_registrations}} SET `user_id` = {$user['id']}, `round_number` = {$current_round};"); mm_points_change($user['id'], RPG_BLITZ_REGISTRATION, -$current_price, "Регистрация в раунде {$current_round} Блица"); } } elseif (sys_get_param_str('register_me_not') && !empty($is_registered)) { doquery("DELETE FROM {{blitz_registrations}} WHERE `user_id` = {$user['id']} AND `round_number` = {$current_round};"); mm_points_change($user['id'], RPG_BLITZ_REGISTRATION_CANCEL, $current_price, "Отмена регистрации в раунде {$current_round} Блица"); } $registered_count = doquery("SELECT count(`id`) AS `count` FROM {{blitz_registrations}} WHERE `round_number` = {$current_round};", true); $config->db_saveItem('game_blitz_register_users', $registered_count['count']); sn_db_transaction_commit(); } $blitz_generated = array(); $blitz_result = array(); $blitz_prize_players_active = 0; $blitz_players = 0; $blitz_prize_dark_matter = 0; $blitz_prize_places = 0; if ($user['authlevel'] >= AUTH_LEVEL_DEVELOPER) { if (sys_get_param_str('generate')) { $next_id = 0; $query = doquery("SELECT `id` FROM {{blitz_registrations}} WHERE `round_number` = {$current_round} ORDER BY RAND();");
$player_currency = sys_get_param_str('player_currency', $player_currency_default); empty($lang['pay_currency_list'][$player_currency]) ? $player_currency = $player_currency_default ? $player_currency_default : $config->payment_currency_default : false; $player_currency_default != $player_currency ? player_save_option($user, PLAYER_OPTION_CURRENCY_DEFAULT, $player_currency) : false; // Конвертация ММ в ТМ if (sys_get_param('mm_convert_do')) { try { if (!($mm_convert = sys_get_param_id('mm_convert'))) { throw new exception($lang['pay_msg_mm_convert_wrong_amount'], ERR_ERROR); } sn_db_transaction_start(); $user = db_user_by_id($user['id'], true); if ($mm_convert > mrc_get_level($user, null, RES_METAMATTER)) { throw new exception($lang['pay_msg_mm_convert_not_enough'], ERR_ERROR); } $payment_comment = sprintf("Игрок сконвертировал %d Метаматерии в Тёмную Материю", $mm_convert); if (!mm_points_change($user['id'], RPG_CONVERT_MM, -$mm_convert, $payment_comment)) { throw new exception($lang['pay_msg_mm_convert_mm_error'], ERR_ERROR); } if (!rpg_points_change($user['id'], RPG_CONVERT_MM, $mm_convert, $payment_comment)) { throw new exception($lang['pay_msg_mm_convert_dm_error'], ERR_ERROR); } $template->assign_block_vars('result', array('STATUS' => ERR_NONE, 'MESSAGE' => sprintf('Конвертация %1$s единиц Метаматерии в %1$s единиц Тёмной Материи успешно произведена', pretty_number($mm_convert)))); sn_db_transaction_commit(); } catch (exception $e) { sn_db_transaction_rollback(); $template->assign_block_vars('result', $response = array('STATUS' => $e->getCode(), 'MESSAGE' => $e->getMessage())); } } // Таблица скидок $prev_discount = 0; if (isset(sn_module_payment::$bonus_table) && is_array(sn_module_payment::$bonus_table)) {
if ($user['authlevel'] < 3) { AdminMessage($lang['adm_err_denied']); } $template = gettemplate("admin/adm_metamatter", true); $message = ''; $message_status = ERR_ERROR; if ($points = sys_get_param_float('points')) { // If points not empty... if ($username = sys_get_param_str_unsafe('id_user')) { $row = db_user_by_id($username, false, 'id, username', true, true); if (!isset($row['id'])) { $row = db_user_by_username($username, false, 'id, username', true, true); } if (is_array($row) && isset($row['id'])) { // Does anything post to DB? if (mm_points_change($row['id'], RPG_ADMIN, $points, sprintf($lang['adm_matter_change_log_record'], $row['id'], db_escape($row['username']), $user['id'], db_escape($user['username']), db_escape(sys_get_param_str('reason'))))) { $message = sprintf($lang['adm_mm_user_added'], $row['username'], $row['id'], $points); $isNoError = true; $message_status = ERR_NONE; } else { // No? We will say it to user... $message = $lang['adm_mm_add_err']; } } } else { // Points not empty but destination is not set - this means error $message = $lang['adm_mm_no_dest']; } } elseif ($id_user) { // Points is empty but destination is set - this again means error $message = $lang['adm_mm_no_quant'];