function sn_options_view($template = null) { global $lang, $template_result, $user, $planetrow, $user_option_list, $user_option_types, $sn_message_class_list, $config; sys_user_vacation($user); $FMT_DATE = preg_replace(array('/d/', '/m/', '/Y/'), array('DD', 'MM', 'YYYY'), FMT_DATE); $template = gettemplate('options', $template); // $template_result['.']['skin_list'][] = array( // 'NAME' => $lang['select_skin_path'], // 'VALUE' => '', // ); $dir = dir(SN_ROOT_PHYSICAL . 'skins'); while (($entry = $dir->read()) !== false) { if (is_dir("skins/{$entry}") && $entry[0] != '.') { $template_result['.']['skin_list'][] = array('VALUE' => $entry, 'NAME' => $entry, 'SELECTED' => $user['dpath'] == "skins/{$entry}/"); } } $dir->close(); for ($i = 0; $i < 2; $i++) { $template_result['.']['planet_order'][] = array('VALUE' => $i, 'NAME' => $lang['opt_lst_cla' . $i], 'SELECTED' => $user['planet_sort_order'] == $i); } for ($i = 0; $i < 4; $i++) { $template_result['.']['planet_order_type'][] = array('VALUE' => $i, 'NAME' => $lang['opt_lst_ord' . $i], 'SELECTED' => $user['planet_sort'] == $i); } foreach ($lang['sys_gender_list'] as $key => $value) { $template_result['.']['gender_list'][] = array('VALUE' => $key, 'NAME' => $value, 'SELECTED' => $user['gender'] == $key); } $lang_list = lng_get_list(); foreach ($lang_list as $lang_id => $lang_data) { $template_result['.']['languages'][] = array('VALUE' => $lang_id, 'NAME' => $lang_data['LANG_NAME_NATIVE'], 'SELECTED' => $lang_id == $user['lang']); } if (isset($lang['menu_customize_show_hide_button_state'])) { foreach ($lang['menu_customize_show_hide_button_state'] as $key => $value) { $template->assign_block_vars('menu_customize_show_hide_button_state', array('ID' => $key, 'NAME' => $value)); } } $str_date_format = "%3\$02d %2\$0s %1\$04d {$lang['top_of_year']} %4\$02d:%5\$02d:%6\$02d"; $time_now_parsed = getdate($user['deltime']); $user_time_diff = user_time_diff_get(); $player_options = player_load_option($user); $template->assign_vars(array('USER_ID' => $user['id'], 'USER_AUTHLEVEL' => $user['authlevel'], 'menu_customize_show_hide_button' => isset($player_options[PLAYER_OPTION_MENU_HIDE_SHOW_BUTTON]) ? $player_options[PLAYER_OPTION_MENU_HIDE_SHOW_BUTTON] : 0, 'menu_customize_show_button_enter' => isset($player_options[PLAYER_OPTION_MENU_SHOW_ON_BUTTON]) ? $player_options[PLAYER_OPTION_MENU_SHOW_ON_BUTTON] : 0, 'menu_customize_hide_button_enter' => isset($player_options[PLAYER_OPTION_MENU_HIDE_ON_BUTTON]) ? $player_options[PLAYER_OPTION_MENU_HIDE_ON_BUTTON] : 0, 'menu_customize_hide_unpinned_on_exit' => isset($player_options[PLAYER_OPTION_MENU_HIDE_ON_LEAVE]) ? $player_options[PLAYER_OPTION_MENU_HIDE_ON_LEAVE] : 0, 'menu_customize_show_absolute' => isset($player_options[PLAYER_OPTION_MENU_UNPIN_ABSOLUTE]) ? $player_options[PLAYER_OPTION_MENU_UNPIN_ABSOLUTE] : 0, 'menu_customize_items_as_buttons' => isset($player_options[PLAYER_OPTION_MENU_ITEMS_AS_BUTTONS]) ? $player_options[PLAYER_OPTION_MENU_ITEMS_AS_BUTTONS] : 0, 'sound_enabled' => isset($player_options[PLAYER_OPTION_SOUND_ENABLED]) ? $player_options[PLAYER_OPTION_SOUND_ENABLED] : 0, 'ADM_PROTECT_PLANETS' => $user['authlevel'] >= 3, 'opt_usern_data' => htmlspecialchars($user['username']), 'opt_mail1_data' => $user['email'], 'opt_mail2_data' => $user['email_2'], 'OPT_DPATH_DATA' => $user['dpath'], 'opt_probe_data' => $user['spio_anz'], 'opt_toolt_data' => $user['settings_tooltiptime'], 'opt_fleet_data' => $user['settings_fleetactions'], 'opt_sskin_data' => $user['design'] == 1 ? " checked='checked'" : '', 'opt_noipc_data' => $user['noipcheck'] == 1 ? " checked='checked'" : '', 'deltime' => $user['deltime'], 'deltime_text' => sprintf($str_date_format, $time_now_parsed['year'], $lang['months'][$time_now_parsed['mon']], $time_now_parsed['mday'], $time_now_parsed['hours'], $time_now_parsed['minutes'], $time_now_parsed['seconds']), 'opt_avatar' => $user['avatar'], 'config_game_email_pm' => $config->game_email_pm, 'user_settings_rep' => $user['settings_rep'] == 1 ? " checked='checked'/" : '', 'user_settings_esp' => $user['settings_esp'] == 1 ? " checked='checked'/" : '', 'user_settings_wri' => $user['settings_wri'] == 1 ? " checked='checked'/" : '', 'user_settings_mis' => $user['settings_mis'] == 1 ? " checked='checked'/" : '', 'user_settings_bud' => $user['settings_bud'] == 1 ? " checked='checked'/" : '', 'user_settings_statistics' => $user['settings_statistics'] == 1 ? " checked='checked'/" : '', 'user_settings_info' => $user['settings_info'] == 1 ? " checked='checked'/" : '', 'user_time_diff_forced' => $user_time_diff[PLAYER_OPTION_TIME_DIFF_FORCED], 'adm_pl_prot' => $user['admin_protection'], 'user_birthday' => $user['user_birthday'], 'GENDER' => $user['gender'], 'GENDER_TEXT' => $lang['sys_gender_list'][$user['gender']], 'FMT_DATE' => $FMT_DATE, 'JS_FMT_DATE' => js_safe_string($FMT_DATE), 'USER_VACATION_DISABLE' => $config->user_vacation_disable, 'VACATION_NEXT' => $user['vacation_next'], 'VACATION_NEXT_TEXT' => date(FMT_DATE_TIME, $user['vacation_next']), 'VACATION_TIMEOUT' => $user['vacation_next'] - SN_TIME_NOW > 0 ? $user['vacation_next'] - SN_TIME_NOW : 0, 'TIME_NOW' => SN_TIME_NOW, 'SERVER_SEND_EMAIL' => $config->game_email_pm, 'SERVER_NAME_CHANGE' => $config->game_user_changename != SERVER_PLAYER_NAME_CHANGE_NONE, 'SERVER_NAME_CHANGE_PAY' => $config->game_user_changename == SERVER_PLAYER_NAME_CHANGE_PAY, 'SERVER_NAME_CHANGE_ENABLED' => $config->game_user_changename == SERVER_PLAYER_NAME_CHANGE_FREE || $config->game_user_changename == SERVER_PLAYER_NAME_CHANGE_PAY && mrc_get_level($user, $planetrow, RES_DARK_MATTER) >= $config->game_user_changename_cost, 'DARK_MATTER' => pretty_number($config->game_user_changename_cost, true, mrc_get_level($user, $planetrow, RES_DARK_MATTER)), 'PAGE_HEADER' => $lang['opt_header'])); foreach ($user_option_list as $option_group_id => $option_group) { if ($option_group_id == OPT_MESSAGE) { foreach ($sn_message_class_list as $message_class_id => $message_class_data) { if ($message_class_data['switchable'] || $message_class_data['email'] && $config->game_email_pm) { $option_name = $message_class_data['name']; $template->assign_block_vars("options_{$option_group_id}", array('NAME' => $message_class_data['name'], 'TEXT' => $lang['msg_class'][$message_class_id], 'PM' => $message_class_data['switchable'] ? $user["opt_{$option_name}"] : -1, 'EMAIL' => $message_class_data['email'] && $config->game_email_pm ? $user["opt_email_{$option_name}"] : -1)); } } } else { foreach ($option_group as $option_name => $option_value) { if (array_key_exists($option_name, $user_option_types)) { $option_type = $user_option_types[$option_name]; } else { $option_type = 'switch'; } $template->assign_block_vars("options_{$option_group_id}", array('NAME' => $option_name, 'TYPE' => $option_type, 'TEXT' => $lang['opt_custom'][$option_name], 'HINT' => $lang['opt_custom']["{$option_name}_hint"], 'VALUE' => $user[$option_name])); } } } return parsetemplate($template); }
function sn_display($page, $title = '', $topnav = true, $metatags = '', $AdminPage = false, $isDisplayMenu = true, $die = true) { global $link, $debug, $user, $user_impersonator, $planetrow, $config, $lang, $template_result, $sn_mvc; if (!$user || !isset($user['id']) || !is_numeric($user['id'])) { $isDisplayMenu = false; $topnav = false; } // $template->assign_recursive($template_result); $isDisplayMenu = is_object($page) && isset($page->_rootref['MENU']) ? $page->_rootref['MENU'] : $isDisplayMenu; $topnav = is_object($page) && isset($page->_rootref['NAVBAR']) ? $page->_rootref['NAVBAR'] : $topnav; $title = $title ? $title : (is_object($page) && isset($page->_rootref['PAGE_HEADER']) ? $page->_rootref['PAGE_HEADER'] : ''); if (is_object($page) && !isset($page->_rootref['PAGE_HEADER']) && $title) { $page->assign_var('PAGE_HEADER', $title); } isset($sn_mvc['view']['']) and execute_hooks($sn_mvc['view'][''], $page); // Global header $user_time_diff = user_time_diff_get(); $user_time_measured_unix = intval(isset($user_time_diff[PLAYER_OPTION_TIME_DIFF_MEASURE_TIME]) ? strtotime($user_time_diff[PLAYER_OPTION_TIME_DIFF_MEASURE_TIME]) : 0); $player_options = player_load_option($user); $template = gettemplate('_global_header', true); $template->assign_vars(array('USER_AUTHLEVEL' => intval($user['authlevel']), 'TIME_NOW' => SN_TIME_NOW, 'LOGIN_LOGOUT' => defined('LOGIN_LOGOUT') && LOGIN_LOGOUT === true, 'GAME_MODE_CSS_PREFIX' => $config->game_mode == GAME_BLITZ ? 'blitz_' : '', 'TIME_DIFF_MEASURE' => intval(empty($user_time_diff[PLAYER_OPTION_TIME_DIFF_FORCED]) && (SN_TIME_NOW - $user_time_measured_unix > PERIOD_HOUR || $user_time_diff[PLAYER_OPTION_TIME_DIFF] == '')), 'title' => ($title ? "{$title} - " : '') . "{$lang['sys_server']} {$config->game_name} - {$lang['sys_supernova']}", '-meta-' => $metatags, 'ADV_SEO_META_DESCRIPTION' => $config->adv_seo_meta_description, 'ADV_SEO_META_KEYWORDS' => $config->adv_seo_meta_keywords, 'ADV_SEO_JAVASCRIPT' => $config->adv_seo_javascript, 'LANG_LANGUAGE' => $lang['LANG_INFO']['LANG_NAME_ISO2'], 'LANG_ENCODING' => 'utf-8', 'LANG_DIRECTION' => $lang['LANG_INFO']['LANG_DIRECTION'], 'SOUND_ENABLED' => $player_options[PLAYER_OPTION_SOUND_ENABLED], 'IMPERSONATING' => $user_impersonator ? sprintf($lang['sys_impersonated_as'], $user['username'], $user_impersonator['username']) : '')); $template->assign_recursive($template_result); displayP(parsetemplate($template)); if ($isDisplayMenu && !isset($_COOKIE['menu_disable'])) { $AdminPage = $AdminPage ? $user['authlevel'] : 0; displayP(parsetemplate(tpl_render_menu($AdminPage))); } if ($topnav) { displayP(parsetemplate(tpl_render_topnav($user, $planetrow))); } displayP(parsetemplate(gettemplate('_content_header', true))); if (!is_array($page)) { $page = array($page); } $result_added = false; foreach ($page as $page_item) { if (!$result_added && is_object($page_item) && isset($page_item->_tpldata['result'])) { $page_item = gettemplate('_result_message', $page_item); $temp = $page_item->files['_result_message']; unset($page_item->files['_result_message']); $page_item->files = array_reverse($page_item->files); $page_item->files['_result_message'] = $temp; $page_item->files = array_reverse($page_item->files); $result_added = true; } displayP($page_item); } // echo '</center>'; if ($isDisplayMenu) { // echo '</div>'; } displayP(parsetemplate(gettemplate('_content_footer', true))); // Global footer $template = gettemplate('_global_footer', true); $template->assign_vars(array('ADMIN_EMAIL' => $config->game_adminEmail, 'TIME_NOW' => SN_TIME_NOW, 'SN_VERSION' => SN_VERSION)); displayP(parsetemplate($template)); $user['authlevel'] >= 3 && $config->debug ? $debug->echo_log() : false; isset($link) ? sn_db_diconnect($link) : false; sn_benchmark(); $die ? die($die === true ? 0 : $die) : false; }
<?php // Придумать какой статус должен быть у глобальных ответов, что бы не перекрывать статусы платежных систем // Может добавить спецстатус "Ответ системы платежа" и парсить дальше getMessage // см constants.php include_once 'common.' . substr(strrchr(__FILE__, '.'), 1); if (!sn_module_get_active_count('payment')) { sys_redirect('overview.php'); die; } global $config; lng_include('payment'); $template = gettemplate('metamatter', true); $player_currency_default = player_load_option($user, PLAYER_OPTION_CURRENCY_DEFAULT); $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);