// pdump($allow_anonymous, '$allow_anonymous'); // pdump($sys_user_logged_in, '$sys_user_logged_in'); if ($sys_user_logged_in && INITIAL_PAGE == 'login') { sys_redirect(SN_ROOT_VIRTUAL . 'overview.php'); } elseif ($account_logged_in && !$sys_user_logged_in) { // empty(core_auth::$user['id']) // pdump($sn_page_name); // pdump(INITIAL_PAGE); // die('{Тут должна быть ваша реклама. Точнее - ввод имени игрока}'); } elseif (!$allow_anonymous && !$sys_user_logged_in) { // sn_setcookie(SN_COOKIE, '', time() - PERIOD_WEEK, SN_ROOT_RELATIVE); sys_redirect(SN_ROOT_VIRTUAL . 'login.php'); } $user_time_diff = playerTimeDiff::user_time_diff_get(); global $time_diff; define('SN_CLIENT_TIME_DIFF', $time_diff = $user_time_diff[PLAYER_OPTION_TIME_DIFF] + $user_time_diff[PLAYER_OPTION_TIME_DIFF_UTC_OFFSET]); define('SN_CLIENT_TIME_LOCAL', SN_TIME_NOW + SN_CLIENT_TIME_DIFF); define('SN_CLIENT_TIME_DIFF_GMT', $user_time_diff[PLAYER_OPTION_TIME_DIFF]); // Разница в GMT-времени между клиентом и сервером. Реальная разница в ходе часов !empty($user) && sys_get_param_id('only_hide_news') ? die(nws_mark_read($user)) : false; !empty($user) && sys_get_param_id('survey_vote') ? die(survey_vote($user)) : false; !empty($sn_mvc['i18n']['']) ? lng_load_i18n($sn_mvc['i18n']['']) : false; $sn_page_name && !empty($sn_mvc['i18n'][$sn_page_name]) ? lng_load_i18n($sn_mvc['i18n'][$sn_page_name]) : false; execute_hooks($sn_mvc['model'][''], $template); global $skip_fleet_update; $skip_fleet_update = $skip_fleet_update || $supernova->options['fleet_update_skip'] || defined('IN_ADMIN'); if (!$skip_fleet_update && SN_TIME_NOW - strtotime($config->fleet_update_last) > $config->fleet_update_interval) { require_once SN_ROOT_PHYSICAL . "includes/includes/flt_flying_fleet_handler2" . DOT_PHP_EX; flt_flying_fleet_handler($skip_fleet_update); } scheduler_process();
// TODO ban if ($template_result[F_BANNED_STATUS] && !$skip_ban_check) { if (defined('IN_API')) { return; } $bantime = date(FMT_DATE_TIME, $template_result[F_BANNED_STATUS]); // TODO: Add ban reason. Add vacation time. Add message window sn_sys_logout(false, true); message("{$lang['sys_banned_msg']} {$bantime}", $lang['ban_title']); die("{$lang['sys_banned_msg']} {$bantime}"); } $template_result[F_USER_AUTHORIZED] = $sys_user_logged_in = !empty($user) && isset($user['id']) && $user['id']; // !!! Просто $allow_anonymous используется в платежных модулях !!! $allow_anonymous = $allow_anonymous || isset($sn_page_data['allow_anonymous']) && $sn_page_data['allow_anonymous']; if (!$allow_anonymous && !$sys_user_logged_in) { sn_setcookie(SN_COOKIE, '', time() - PERIOD_WEEK, SN_ROOT_RELATIVE); sys_redirect(SN_ROOT_VIRTUAL . 'login.php'); } $user_time_diff = user_time_diff_get(); //defined('SN_CLIENT_TIME_DIFF_SECONDS') or define('SN_CLIENT_TIME_DIFF_SECONDS', $user_time_diff[PLAYER_OPTION_TIME_DIFF]); //defined('SN_CLIENT_TIME_UTC_OFFSET') or define('SN_CLIENT_TIME_UTC_OFFSET', $user_time_diff[PLAYER_OPTION_TIME_DIFF_UTC_OFFSET]); //$time_diff = SN_CLIENT_TIME_DIFF_SECONDS + SN_CLIENT_TIME_UTC_OFFSET; //defined('SN_CLIENT_TIME_DIFF') or define('SN_CLIENT_TIME_DIFF', $time_diff); //defined('SN_CLIENT_TIME_LOCAL') or define('SN_CLIENT_TIME_LOCAL', SN_TIME_NOW + SN_CLIENT_TIME_DIFF); global $time_diff; define('SN_CLIENT_TIME_DIFF', $time_diff = $user_time_diff[PLAYER_OPTION_TIME_DIFF] + $user_time_diff[PLAYER_OPTION_TIME_DIFF_UTC_OFFSET]); define('SN_CLIENT_TIME_LOCAL', SN_TIME_NOW + SN_CLIENT_TIME_DIFF); !empty($user) && sys_get_param_id('only_hide_news') ? die(nws_mark_read($user)) : false; !empty($user) && sys_get_param_id('survey_vote') ? die(survey_vote($user)) : false; lng_load_i18n($sn_mvc['i18n'][$sn_page_name]); execute_hooks($sn_mvc['model'][''], $template);
/** * @param array|string $files * @param template|bool $template * @param string|bool $template_path * * @return template */ function gettemplate($files, $template = false, $template_path = false) { global $sn_mvc, $sn_page_name, $user; $template_ex = '.tpl.html'; if ($template === false) { return sys_file_read(TEMPLATE_DIR . '/' . $files . $template_ex); } is_string($files) ? $files = array(basename($files) => $files) : false; !is_object($template) ? $template = new template() : false; //$template->set_custom_template($template_path ? $template_path : TEMPLATE_DIR, TEMPLATE_NAME, TEMPLATE_DIR); $tmpl_name = gettemplatename($user['dpath']); $template->set_custom_template(($template_path ? $template_path : SN_ROOT_PHYSICAL . 'design/templates/') . $tmpl_name . '/', $tmpl_name, TEMPLATE_DIR); // TODO ГРЯЗНЫЙ ХАК! Это нужно, что бы по возможности перезаписать инфу из языковых пакетов модулей там, где она была перезаписана раньше инфой из основного пакета. Почему? // - сначала грузятся модули и их языковые пакеты // - затем по ходу дела ОСНОВНОЙ языковой пакет может перезаписать данные из МОДУЛЬНОГО языкового пакета // Поэтому и нужен этот грязный хак // В норме же - страницы заявляют сами, какие им пакеты нужны. Так что сначала всегда должны грузится основные языковые пакеты, а уже ПОВЕРХ них - пакеты модулей !empty($sn_mvc['i18n']['']) ? lng_load_i18n($sn_mvc['i18n']['']) : false; $sn_page_name ? lng_load_i18n($sn_mvc['i18n'][$sn_page_name]) : false; foreach ($files as &$filename) { $filename = $filename . $template_ex; } $template->set_filenames($files); return $template; }