function sn_chat_add_model() { global $skip_fleet_update, $config, $user; define('IN_AJAX', true); $skip_fleet_update = true; if ($config->_MODE != CACHER_NO_CACHE && $config->chat_timeout && SN_TIME_MICRO - $config->array_get('users', $user['id'], 'chat_last_activity') > $config->chat_timeout) { die; } if (($message = sys_get_param_str('message')) && $user['username']) { $ally_id = sys_get_param('ally') && $user['ally_id'] ? $user['ally_id'] : 0; $nick = db_escape(player_nick_compact(player_nick_render_current_to_array($user, array('color' => true, 'icons' => true, 'ally' => !$ally_id)))); $message = preg_replace("#(?:https?\\:\\/\\/(?:.+)?\\/index\\.php\\?page\\=battle_report\\&cypher\\=([0-9a-zA-Z]{32}))#", "[ube=\$1]", $message); doquery("INSERT INTO {{chat}} (chat_message_sender_id, user, ally_id, message, timestamp) VALUES ('{$user['id']}', '{$nick}', '{$ally_id}', '{$message}', " . SN_TIME_NOW . ");"); $config->array_set('users', $user['id'], 'chat_last_activity', SN_TIME_MICRO); } die; }
static function user_time_diff_probe() { // Определяем время в браузере $client_time = strtotime(sys_get_param('client_gmt')); // Попытка определить по GMT-времени браузера. В нём будет часовой пояс (GMT), поэтому время будет автоматически преобразовано в часовой пояс сервера !$client_time ? $client_time = round(sys_get_param_float('timeBrowser') / 1000) : false; // Попытка определить по Date.valueOf() - миллисекунды с начала эпохи UNIX_TIME !$client_time ? $client_time = SN_TIME_NOW : false; // Если все попытки провалились - тупо берем время сервера // TODO - REMOVE // !($client_time = strtotime(sys_get_param('client_gmt'))) // Время в браузере определяется через GMT // ? (!($client_time = sys_get_param_float('timeBrowser') / 1000) // ? $client_time = SN_TIME_NOW : false) // : false; // !($client_time = strtotime(sys_get_param('client_gmt'))) // Время в браузере определяется через GMT // ? $client_time = SN_TIME_NOW // : false; $result = array(PLAYER_OPTION_TIME_DIFF => $client_time - SN_TIME_NOW, PLAYER_OPTION_TIME_DIFF_UTC_OFFSET => ($browser_utc_offset = sys_get_param_int('utc_offset')) ? $browser_utc_offset - date('Z') : 0, PLAYER_OPTION_TIME_DIFF_FORCED => sys_get_param_int('PLAYER_OPTION_TIME_DIFF_FORCED'), PLAYER_OPTION_TIME_DIFF_MEASURE_TIME => SN_TIME_SQL); return $result; }
$result = array(); if (($result_message = sys_get_param_str('MESSAGE')) && isset($lang[$result_message])) { $result[] = array('STATUS' => sys_get_param_int('STATUS'), 'MESSAGE' => $lang[$result_message]); } $note_id_edit = sys_get_param_id('note_id_edit'); if (sys_get_param('note_delete')) { try { $not = ''; $query_where = ''; switch (sys_get_param_str('note_delete_range')) { case 'all': break; case 'marked_not': $not = 'NOT'; case 'marked': if (!is_array($notes_marked = sys_get_param('note'))) { throw new exception('note_err_none_selected', ERR_WARNING); } $notes_marked_filtered = array(); foreach ($notes_marked as $note_id => $note_select) { if ($note_select == 'on' && ($note_id = idval($note_id))) { $notes_marked_filtered[] = $note_id; } } if (empty($notes_marked_filtered)) { throw new exception('note_err_none_selected', ERR_WARNING); } $notes_marked_filtered = implode(',', $notes_marked_filtered); $query_where = "AND `id` {$not} IN ({$notes_marked_filtered})"; break; default:
$survey_until = strtotime($survey_until = sys_get_param_str('survey_until'), SN_TIME_NOW); $survey_until = date(FMT_DATE_TIME_SQL, $survey_until ? $survey_until : SN_TIME_NOW + PERIOD_DAY * 1); doquery("INSERT INTO {{survey}} SET `survey_announce_id` = {$announce_id}, `survey_question` = '{$survey_question}', `survey_until` = '{$survey_until}'"); $survey_id = db_insert_id(); foreach ($survey_answers as $survey_answer) { $survey_answer = db_escape(trim($survey_answer)); $survey_answer ? doquery("INSERT INTO {{survey_answers}} SET `survey_parent_id` = {$survey_id}, `survey_answer_text` = '{$survey_answer}'") : false; } } } if ($announce_time <= SN_TIME_NOW) { if ($announce_time > $config->var_news_last && $announce_time == SN_TIME_NOW) { $config->db_saveItem('var_news_last', $announce_time); } if (sys_get_param_int('news_mass_mail')) { $text = sys_get_param('text') . ($detail_url ? " <a href=\"{$detail_url}\"><span class=\"positive\">{$lang['news_more']}</span></a>" : ''); msg_send_simple_message('*', 0, 0, MSG_TYPE_ADMIN, $lang['sys_administration'], $lang['news_title'], $text); } } $mode = ''; $announce_id = 0; } $survey_answers = ''; switch ($mode) { case 'del': doquery("DELETE FROM {{announce}} WHERE `idAnnounce` = {$announce_id} LIMIT 1;"); $mode = ''; break; case 'edit': $template->assign_var('ID', $announce_id); case 'copy':
if ($planetrow['id'] == $user['id_planet']) { db_user_set_by_id($user['id'], "galaxy = {$new_coordinates['galaxy']}, system = {$new_coordinates['system']}, planet = {$new_coordinates['planet']}"); } // $global_data = sys_o_get_updated($user, $planetrow['id'], SN_TIME_NOW); sn_db_transaction_commit(); $user = db_user_by_id($user['id'], true, '*'); $planetrow = db_planet_by_id($planetrow['id'], true, '*'); $result = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['ov_teleport_err_none']); sys_redirect('overview.php?mode=manage'); } catch (exception $e) { sn_db_transaction_rollback(); $result = array('STATUS' => $e->getCode(), 'MESSAGE' => $e->getMessage()); } } elseif (sys_get_param_str('abandon')) { //if(sec_password_encode(sys_get_param('abandon_confirm'), $user['salt']) == $user['password']) { if (sec_password_check($user, sys_get_param('abandon_confirm'))) { if ($user['id_planet'] != $user['current_planet'] && $user['current_planet'] == $planet_id) { $destroyed = SN_TIME_NOW + 60 * 60 * 24; db_planet_set_by_id($user['current_planet'], "`destruyed`='{$destroyed}', `id_owner`=0"); db_planet_set_by_parent($user['current_planet'], "`destruyed`='{$destroyed}', `id_owner`=0"); db_user_set_by_id($user['id'], '`current_planet` = `id_planet`'); message($lang['ov_delete_ok'], $lang['colony_abandon'], 'overview.php?mode=manage'); } else { message($lang['ov_delete_wrong_planet'], $lang['colony_abandon'], 'overview.php?mode=manage'); } } else { message($lang['ov_delete_wrong_pass'], $lang['colony_abandon'], 'overview.php?mode=manage'); } } elseif (($hire = sys_get_param_int('hire')) && in_array($hire, sn_get_groups('governors')) && (!get_unit_param($hire, P_MAX_STACK) || $planetrow['PLANET_GOVERNOR_ID'] != $hire || $planetrow['PLANET_GOVERNOR_ID'] == $hire && $planetrow['PLANET_GOVERNOR_LEVEL'] < get_unit_param($hire, P_MAX_STACK))) { sn_db_transaction_start(); $user = db_user_by_id($user['id'], true);
function sn_imperium_view($template = null) { global $user, $lang; $planets = array(); $ques = array(); $sn_group_factories = sn_get_groups('factories'); $planet_density = sn_get_groups('planet_density'); if (sys_get_param('save_production')) { $production = sys_get_param('percent'); if (is_array($production) && !empty($production)) { // sn_db_transaction_start(); $query = array(); $planet_row_list = db_planet_list_sorted($user, false, '*'); // while($planet = db_fetch($planet_row_list)) foreach ($planet_row_list as $planet) { foreach ($sn_group_factories as $factory_unit_id) { $unit_db_name_porcent = pname_factory_production_field_name($factory_unit_id); if (get_unit_param($factory_unit_id, P_MINING_IS_MANAGED) && isset($production[$factory_unit_id][$planet['id']]) && ($actual_porcent = intval($production[$factory_unit_id][$planet['id']] / 10)) >= 0 && $actual_porcent <= 10 && $actual_porcent != $planet[$unit_db_name_porcent]) { $query[$planet['id']][] = "{$unit_db_name_porcent} = {$actual_porcent}"; } } } foreach ($query as $planet_id => $query_data) { db_planet_set_by_id($planet_id, implode(',', $query_data)); } // sn_db_transaction_commit(); } } $planet_row_list = db_planet_list_sorted($user); // while ($planet = db_fetch($planet_row_list)) foreach ($planet_row_list as $planet) { sn_db_transaction_start(); $global_data = sys_o_get_updated($user, $planet['id'], SN_TIME_NOW, false, true); $planets[$planet['id']] = $global_data['planet']; // $ques[$planet['id']] = que_get($user['id'], $planet['id'], false); $ques[$planet['id']] = $global_data['que']; sn_db_transaction_commit(); } $template = gettemplate('imperium', $template); $template->assign_var('amount', count($planets) + 2); for ($i = 100; $i >= 0; $i -= 10) { $template->assign_block_vars('percent', array('PERCENT' => $i)); } $fleet_id = 1; $fleets = array(); $total['temp_min'] = 1000; $total['temp_max'] = -999; foreach ($planets as $planet_index => &$planet) { $list_planet_que = $ques[$planet_index]; $planet_template = tpl_parse_planet($planet); $planet_fleet_id = 0; $fleet_list = $planet_template['fleet_list']; //flt_get_fleets_to_planet($planet); if ($fleet_list['own']['count']) { $planet_fleet_id = "p{$fleet_id}"; $fleets[] = tpl_parse_fleet_sn($fleet_list['own']['total'], $planet_fleet_id); $fleet_id++; } $template->assign_block_vars('planet', array_merge($planet_template, array('PLANET_FLEET_ID' => $planet_fleet_id, 'METAL_CUR' => pretty_number($planet['metal'], true, $planet['caps']['total_storage'][RES_METAL]), 'METAL_PROD' => pretty_number($planet['caps']['total'][RES_METAL]), 'CRYSTAL_CUR' => pretty_number($planet['crystal'], true, $planet['caps']['total_storage'][RES_CRYSTAL]), 'CRYSTAL_PROD' => pretty_number($planet['caps']['total'][RES_CRYSTAL]), 'DEUTERIUM_CUR' => pretty_number($planet['deuterium'], true, $planet['caps']['total_storage'][RES_DEUTERIUM]), 'DEUTERIUM_PROD' => pretty_number($planet['caps']['total'][RES_DEUTERIUM]), 'ENERGY_CUR' => pretty_number($planet['caps'][RES_ENERGY][BUILD_CREATE] - $planet['caps'][RES_ENERGY][BUILD_DESTROY], true, true), 'ENERGY_MAX' => pretty_number($planet['caps'][RES_ENERGY][BUILD_CREATE]), 'TEMP_MIN' => $planet['temp_min'], 'TEMP_MAX' => $planet['temp_max'], 'DENSITY_CLASS' => $planet['density_index'], 'DENSITY_RICHNESS' => $planet_density[$planet['density_index']][UNIT_PLANET_DENSITY_RICHNESS], 'DENSITY_CLASS_TEXT' => $lang['uni_planet_density_types'][$planet['density_index']]))); $planet['fleet_list'] = $planet_template['fleet_list']; $planet['BUILDING_ID'] = $planet_template['BUILDING_ID']; $planet['hangar_que'] = $planet_template['hangar_que']; $planet['full_que'] = $list_planet_que; $total['fields'] += $planet['field_current']; $total['metal'] += $planet['metal']; $total['crystal'] += $planet['crystal']; $total['deuterium'] += $planet['deuterium']; $total['energy'] += $planet['energy_max'] - $planet['energy_used']; $total['fields_max'] += eco_planet_fields_max($planet); $total['metal_perhour'] += $planet['caps']['total'][RES_METAL]; $total['crystal_perhour'] += $planet['caps']['total'][RES_CRYSTAL]; $total['deuterium_perhour'] += $planet['caps']['total'][RES_DEUTERIUM]; $total['energy_max'] += $planet['caps'][RES_ENERGY][BUILD_CREATE]; $total['temp_min'] = min($planet['temp_min'], $total['temp_min']); $total['temp_max'] = max($planet['temp_max'], $total['temp_max']); } tpl_assign_fleet($template, $fleets); unset($planet); $show_groups = array(UNIT_STRUCTURES => 'structures', UNIT_STRUCTURES_SPECIAL => 'structures', UNIT_SHIPS => 'fleet', UNIT_DEFENCE => 'defense'); foreach ($show_groups as $unit_group_id => $mode) { $template->assign_block_vars('prods', array('NAME' => $lang['tech'][$unit_group_id])); $unit_group = get_unit_param('techtree', $unit_group_id); foreach ($unit_group as $unit_id) { $unit_count = $unit_count_abs = 0; $block_vars = array(); $unit_is_factory = in_array($unit_id, $sn_group_factories) && get_unit_param($unit_id, P_MINING_IS_MANAGED); // $unit_db_name = pname_resource_name($unit_id); foreach ($planets as $planet) { $unit_level_plain = mrc_get_level($user, $planet, $unit_id, false, true); $level_plus['FACTORY'] = $unit_is_factory; $level_plus['LEVEL_PLUS_YELLOW'] = 0; $level_plus['LEVEL_PLUS_GREEN'] = 0; $level_plus['PERCENT'] = $unit_is_factory ? $unit_level_plain ? $planet[pname_factory_production_field_name($unit_id)] * 10 : -1 : -1; switch ($mode) { /* case 'structures': $level_plus_build = $ques[$planet['id']]['in_que'][que_get_unit_que($unit_id)][$user['id']][$planet['id']][$unit_id]; if($level_plus_build) { $level_plus['LEVEL_PLUS_GREEN'] = $level_plus_build < 0 ? $level_plus_build : "+{$level_plus_build}"; $total['units'][$unit_id]['LEVEL_PLUS_GREEN'] += $level_plus['LEVEL_PLUS_GREEN']; } break; */ /** @noinspection PhpMissingBreakStatementInspection */ case 'fleet': $level_plus['LEVEL_PLUS_YELLOW'] = $planet['fleet_list']['own']['total'][$unit_id] <= 0 ? $planet['fleet_list']['own']['total'][$unit_id] : "+{$planet['fleet_list']['own']['total'][$unit_id]}"; $total['units'][$unit_id]['LEVEL_PLUS_YELLOW'] += $level_plus['LEVEL_PLUS_YELLOW']; case 'structures': case 'defense': $level_plus_build = $ques[$planet['id']]['in_que'][que_get_unit_que($unit_id)][$user['id']][$planet['id']][$unit_id]; if ($level_plus_build) { $level_plus['LEVEL_PLUS_GREEN'] = $level_plus_build < 0 ? $level_plus_build : "+{$level_plus_build}"; // $level_plus['LEVEL_PLUS_GREEN'] = "+{$level_plus_build}"; $total['units'][$unit_id]['LEVEL_PLUS_GREEN'] += $level_plus['LEVEL_PLUS_GREEN']; } break; default: break; } $block_vars[] = array_merge($level_plus, array('ID' => $planet['id'], 'TYPE' => $planet['planet_type'], 'LEVEL' => $unit_level_plain == 0 && !$level_plus['LEVEL_PLUS_YELLOW'] && !$level_plus['LEVEL_PLUS_GREEN'] ? '-' : $unit_level_plain)); $unit_count += $unit_level_plain; $unit_count_abs += $unit_level_plain + abs($level_plus['LEVEL_PLUS_YELLOW']) + abs($level_plus['LEVEL_PLUS_GREEN']); } if ($unit_count_abs) { $template->assign_block_vars('prods', array('ID' => $unit_id, 'FIELD' => 'unit_' . $unit_id, 'NAME' => $lang['tech'][$unit_id], 'MODE' => $mode)); foreach ($block_vars as $block_var) { $template->assign_block_vars('prods.planet', $block_var); } $unit_green = $total['units'][$unit_id]['LEVEL_PLUS_GREEN']; $unit_yellow = $total['units'][$unit_id]['LEVEL_PLUS_YELLOW']; $template->assign_block_vars('prods.planet', array('ID' => 0, 'LEVEL' => $unit_count, 'LEVEL_PLUS_GREEN' => $unit_green == 0 ? '' : ($unit_green > 0 ? "+{$unit_green}" : $unit_green), 'LEVEL_PLUS_YELLOW' => $unit_yellow == 0 ? '' : ($unit_yellow > 0 ? "+{$unit_yellow}" : $unit_yellow), 'PERCENT' => $unit_is_factory ? '' : -1, 'FACTORY' => $unit_is_factory)); } } } $template->assign_block_vars('planet', array_merge(array('ID' => 0, 'NAME' => $lang['sys_total'], 'FIELDS_CUR' => $total['fields'], 'FIELDS_MAX' => $total['fields_max'], 'METAL_CUR' => pretty_number($total['metal']), 'METAL_PROD' => pretty_number($total['metal_perhour']), 'CRYSTAL_CUR' => pretty_number($total['crystal']), 'CRYSTAL_PROD' => pretty_number($total['crystal_perhour']), 'DEUTERIUM_CUR' => pretty_number($total['deuterium']), 'DEUTERIUM_PROD' => pretty_number($total['deuterium_perhour']), 'ENERGY_CUR' => pretty_number($total['energy']), 'ENERGY_MAX' => pretty_number($total['energy_max']), 'TEMP_MIN' => $total['temp_min'], 'TEMP_MAX' => $total['temp_max']))); $template->assign_vars(array('COLONIES_CURRENT' => get_player_current_colonies($user), 'COLONIES_MAX' => get_player_max_colonies($user), 'EXPEDITIONS_CURRENT' => get_player_current_expeditions($user), 'EXPEDITIONS_MAX' => get_player_max_expeditons($user), 'PLANET_DENSITY_RICHNESS_NORMAL' => PLANET_DENSITY_RICHNESS_NORMAL, 'PLANET_DENSITY_RICHNESS_AVERAGE' => PLANET_DENSITY_RICHNESS_AVERAGE, 'PLANET_DENSITY_RICHNESS_GOOD' => PLANET_DENSITY_RICHNESS_GOOD, 'PLANET_DENSITY_RICHNESS_PERFECT' => PLANET_DENSITY_RICHNESS_PERFECT)); //$template->assign_recursive($template_result); return $template; }
} if ($message_delete) { doquery("DELETE FROM {{messages}} WHERE `message_id` in ({$message_delete});"); $template->assign_block_vars('result', array('MESSAGE' => sprintf($lang['mlst_messages_deleted'], $message_delete))); } if (sys_get_param('str_delete_date') && checkdate($month = sys_get_param_id('delete_month'), $day = sys_get_param_id('delete_day'), $year = sys_get_param_id('delete_year'))) { $delete_date = "{$year}-{$month}-{$day}"; doquery("DELETE FROM {{messages}} WHERE message_time <= UNIX_TIMESTAMP('{$delete_date}')" . ($int_type_selected >= 0 ? " AND `message_type` = {$int_type_selected}" : '')); $template->assign_block_vars('result', array('MESSAGE' => sprintf($lang['mlst_messages_deleted_date'], $allowed_types[$int_type_selected]['TEXT'], $delete_date))); } $page_max = doquery('SELECT COUNT(*) AS `max` FROM {{messages}}' . ($int_type_selected >= 0 ? " WHERE `message_type` = {$int_type_selected};" : ''), true); $page_max = ceil($page_max['max'] / 25); $int_page_current = min(sys_get_param_id('int_page_current', 1), $page_max); if (sys_get_param('page_prev') && $int_page_current > 1) { $int_page_current--; } elseif (sys_get_param('page_next') && $int_page_current < $page_max) { $int_page_current++; } for ($i = 1; $i <= $page_max; $i++) { $template->assign_block_vars('page', array('NUMBER' => $i)); } /* $Prev = ( !empty($_POST['prev']) ) ? true : false; $Next = ( !empty($_POST['next']) ) ? true : false; $DelSel = ( !empty($_POST['delsel']) ) ? true : false; $DelDat = ( !empty($_POST['deldat']) ) ? true : false; $CurrPage = ( !empty($_POST['curr']) ) ? $_POST['curr'] : 1; $SelType = $_POST['type']; $SelPage = $_POST['page']; $ViewPage = 1;
define('INSIDE', true); define('INSTALL', false); define('IN_ADMIN', true); require '../common.' . substr(strrchr(__FILE__, '.'), 1); // if($user['authlevel'] < 2) if ($user['authlevel'] < 3) { AdminMessage($lang['adm_err_denied']); } AdminMessage('Временно не работает'); require "includes/admin_planet_edit.inc" . DOT_PHP_EX; $template = gettemplate('admin/admin_planet_edit', true); $mode = admin_planet_edit_mode($template, $admin_planet_edit_mode_list); $planet_id = sys_get_param_id('planet_id'); $unit_list = sys_get_param('unit_list'); if (sys_get_param('change_data') && !empty($unit_list)) { $query_string = array(); foreach ($unit_list as $unit_id => $unit_amount) { if ($unit_query_string = admin_planet_edit_query_string($unit_id, $unit_amount, $mode)) { $query_string[] = $unit_query_string; } } if (!empty($query_string)) { db_planet_set_by_id($planet_id, implode(', ', $query_string)); } } if ($planet_id) { $edit_planet_row = db_planet_by_id($planet_id); admin_planet_edit_template($template, $edit_planet_row, $mode); } foreach ($admin_planet_edit_mode_list as $page_mode => $mode_locale) {
function sys_get_param_str_both($param_name, $default = '') { $param = strip_tags(trim(sys_get_param($param_name, $default))); return array('raw' => $param, 'str' => mysql_real_escape_string($param)); }
function sys_get_param_str_both($param_name, $default = '') { $param = sys_get_param($param_name, $default); $param_unsafe = str_raw2unsafe($param); return array('raw' => $param, 'unsafe' => $param_unsafe, 'safe' => db_escape($param_unsafe)); }
$FlyingFleets = $FlyingFleets['Number']; if ($MaxFleets <= $FlyingFleets && $fleet_page && $fleet_page != 4) { message($lang['fl_noslotfree'], $lang['fl_error'], "fleet." . PHP_EX, 5); } $MaxExpeditions = get_player_max_expeditons($user); if ($MaxExpeditions) { $FlyingExpeditions = doquery("SELECT COUNT(fleet_owner) AS `expedi` FROM {{fleets}} WHERE `fleet_owner` = {$user['id']} AND `fleet_mission` = '" . MT_EXPLORE . "';", '', true); $FlyingExpeditions = $FlyingExpeditions['expedi']; } else { $FlyingExpeditions = 0; } switch ($fleet_page) { case 3: case 2: $fleet_group_mr = sys_get_param_id('fleet_group'); $fleetarray = unserialize(base64_decode(str_rot13(sys_get_param('usedfleet')))); $fleetarray = is_array($fleetarray) ? $fleetarray : array(); foreach ($fleetarray as $ship_id => &$ship_amount) { if (!in_array($ship_id, sn_get_groups('fleet')) || (string) floatval($ship_amount) != $ship_amount || $ship_amount < 1) { $debug->warning('Supplying wrong ship in ship list on fleet page', 'Hack attempt', 302, array('base_dump' => true)); die; } $ship_amount = floatval($ship_amount); } $UsedPlanet = false; $YourPlanet = false; $missiontype = array(); if ($planet > $config->game_maxPlanet) { $target_mission = MT_EXPLORE; $missiontype[MT_EXPLORE] = $lang['type_mission'][MT_EXPLORE]; } elseif ($galaxy && $system && $planet) {
public function player_register_model() { // TODO ВСЕГДА ПРЕДЛАГАТЬ РЕГАТЬ ИГРОКА ИЛИ ПОДКЛЮЧИТЬ ИМЕЮЩЕГОСЯ! // TODO в auth_local делать проверку БД на существование имени игрока в локальной БД - что бы избежать лишнего шага (см.выше) // TODO Хотя тут может получится вечный цикл - ПОДУМАТЬ // TODO Тут же можно пробовать провести попытку слияния аккаунтов - хотя это и очень небезопасно if (sys_get_param('login_player_register_logout')) { $this->logout(); } $original_suggest = ''; // Смотрим - есть ли у нас данные от пользователя if ($player_name_submitted = sys_get_param('submit_player_name')) { // Попытка регистрации нового игрока из данных, введенных пользователем $this->player_suggested_name = sys_get_param_str_unsafe('player_suggested_name'); } else { foreach ($this->providers_authorised as $provider) { if ($this->player_suggested_name = $provider->player_name_suggest()) { // OK 4.5 $original_suggest = $provider->player_name_suggest(); break; } } } // Если у нас провайдеры не дают имени и пользователь не дал свой вариант - это у нас первый логин в игру if (!$this->player_suggested_name) { $max_user_id = db_player_get_max_id(); // 4.5 // TODO - предлагать имя игрока по локали // Проверить наличие такого имени в истории имён do { sn_db_transaction_rollback(); $this->player_suggested_name = 'Emperor ' . mt_rand($max_user_id + 1, $max_user_id + 1000); sn_db_transaction_start(); } while (db_player_name_exists($this->player_suggested_name)); } if ($player_name_submitted) { $this->register_player_db_create($this->player_suggested_name); // OK 4.5 if ($this->register_status == LOGIN_SUCCESS) { sys_redirect(SN_ROOT_VIRTUAL . 'overview.php'); } elseif ($this->register_status == REGISTER_ERROR_PLAYER_NAME_EXISTS && $original_suggest == $this->player_suggested_name) { // self::$player_suggested_name .= ' ' . $this->account->account_id; } // if(self::$login_status != LOGIN_SUCCESS) { // // TODO Ошибка при регистрации нового игрока под текущим именем // } } }
function sec_login(&$result) { sec_login_prepare($result); $username_unsafe = sys_get_param_str_unsafe('username'); $password_raw = sys_get_param('password'); $email_unsafe = sys_get_param_str_unsafe('email'); // Проверяем регу if (sys_get_param('register')) { $password_repeat_raw = trim(sys_get_param('password_repeat')); $language = sys_get_param_str('lang', DEFAULT_LANG); if ($password_raw != $password_repeat_raw) { // throw new exception(REGISTER_ERROR_PASSWORD_DIFFERENT, ERR_ERROR); $result[F_LOGIN_STATUS] = REGISTER_ERROR_PASSWORD_DIFFERENT; } else { $result[F_LOGIN_STATUS] = sec_login_register($username_unsafe, $password_raw, $email_unsafe, $language, sys_get_param_int('rememberme')); } } // Если есть в параметрах логин и пароль... // if($username_unsafe && $password_raw) { // } if (sys_get_param('login') && in_array($result['status'], array(LOGIN_UNDEFINED, REGISTER_SUCCESS))) { $result[F_LOGIN_STATUS] = sec_login_username($username_unsafe, $password_raw, sys_get_param_int('rememberme')); } elseif (sys_get_param('confirm_code_send') && ($email_unsafe = sys_get_param_str_unsafe('email'))) { // TODO - test $result[F_LOGIN_STATUS] = sec_restore_password_send_email($email_unsafe); } elseif (sys_get_param('confirm_code_submit') && ($confirm_safe = sys_get_param_str('confirm'))) { // TODO - test sec_restore_password_confirm($confirm_safe, $result); } // Тут всякие логины по внешним плагинам //pdump($result, 'security'); // В этой точке должен быть установлена кука СН - логинимся по ней if (in_array($result['status'], array(LOGIN_UNDEFINED, REGISTER_SUCCESS))) { sec_login_cookie($result); } // TODO - ЗАМЕНИТЬ F_LOGIN_MESSAGE на сообщения по F_LOGIN_STATUS // return $result; }
if ($planetrow['id'] == $user['id_planet']) { db_user_set_by_id($user['id'], "galaxy = {$new_coordinates['galaxy']}, system = {$new_coordinates['system']}, planet = {$new_coordinates['planet']}"); } // $global_data = sys_o_get_updated($user, $planetrow['id'], SN_TIME_NOW); sn_db_transaction_commit(); $user = db_user_by_id($user['id'], true, '*'); $planetrow = db_planet_by_id($planetrow['id'], true, '*'); $result[] = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['ov_teleport_err_none']); sys_redirect('overview.php?mode=manage'); } catch (exception $e) { sn_db_transaction_rollback(); $result[] = array('STATUS' => $e->getCode(), 'MESSAGE' => $e->getMessage()); } } elseif (sys_get_param_str('action') == 'planet_abandon') { // if(sec_password_check($user['id'], sys_get_param('abandon_confirm'))) { if (classSupernova::$auth->password_check(sys_get_param('abandon_confirm'))) { if ($user['id_planet'] != $user['current_planet'] && $user['current_planet'] == $planet_id) { $destroyed = SN_TIME_NOW + 60 * 60 * 24; db_planet_set_by_id($user['current_planet'], "`destruyed`='{$destroyed}', `id_owner`=0"); db_planet_set_by_parent($user['current_planet'], "`destruyed`='{$destroyed}', `id_owner`=0"); db_user_set_by_id($user['id'], '`current_planet` = `id_planet`'); message($lang['ov_delete_ok'], $lang['colony_abandon'], 'overview.php?mode=manage'); } else { message($lang['ov_delete_wrong_planet'], $lang['colony_abandon'], 'overview.php?mode=manage'); } } else { message($lang['ov_delete_wrong_pass'], $lang['colony_abandon'], 'overview.php?mode=manage'); } } elseif (($hire = sys_get_param_int('hire')) && in_array($hire, sn_get_groups('governors')) && (!get_unit_param($hire, P_MAX_STACK) || $planetrow['PLANET_GOVERNOR_ID'] != $hire || $planetrow['PLANET_GOVERNOR_ID'] == $hire && $planetrow['PLANET_GOVERNOR_LEVEL'] < get_unit_param($hire, P_MAX_STACK))) { sn_db_transaction_start(); $user = db_user_by_id($user['id'], true);
* @copyright 2008 By Chlorel for XNova */ include 'common.' . substr(strrchr(__FILE__, '.'), 1); lng_include('fleet'); if ($TargetPlanet = sys_get_param_id('jmpto')) { sn_db_transaction_start(); db_user_by_id($user['id'], true, 'id'); $planetrow = db_planet_by_id($planetrow['id'], true); if (!($NextJumpTime = uni_get_time_to_jump($planetrow))) { $TargetGate = db_planet_by_id($TargetPlanet, true, '`id`, `last_jump_time`'); if (mrc_get_level($user, $TargetGate, STRUC_MOON_GATE) > 0) { $NextDestTime = uni_get_time_to_jump($TargetGate); if (!$NextDestTime) { // $SubQueryOri = ""; // $SubQueryDes = ""; $ship_list = sys_get_param('ships'); $db_changeset = array(); foreach ($ship_list as $ship_id => $ship_count) { if (!in_array($ship_id, sn_get_groups('fleet'))) { continue; } $ship_count = max(0, min(floor($ship_count), mrc_get_level($user, $planetrow, $ship_id))); if ($ship_count) { $db_changeset['unit'][] = sn_db_unit_changeset_prepare($ship_id, -$ship_count, $user, $planetrow['id']); $db_changeset['unit'][] = sn_db_unit_changeset_prepare($ship_id, $ship_count, $user, $TargetGate['id']); } } // Dit monsieur, y avait quelque chose a envoyer ??? if (!empty($db_changeset)) { db_planet_set_by_id($TargetGate['id'], "`last_jump_time` = " . SN_TIME_NOW . ""); db_planet_set_by_id($planetrow['id'], "`last_jump_time` = " . SN_TIME_NOW . "");
$text = sys_get_param_str_raw('text'); } } $subject = $subject ? $subject : $lang['msg_subject_default']; $template->assign_vars(array('RECIPIENT_ID' => $recipient_id, 'RECIPIENT_NAME' => $recipient_name, 'SUBJECT' => $subject, 'TEXT' => $text)); foreach ($error_list as $error_message) { $template->assign_block_vars('messages', $error_message); } break; case 'delete': $query_add = ''; $message_range = sys_get_param_str('message_range'); switch ($message_range) { case 'unchecked': case 'checked': $marked_message_list = sys_get_param('mark', array()); if ($message_range == 'checked' && empty($marked_message_list)) { break; } $query_add = implode(',', $marked_message_list); if ($query_add) { $query_add = "IN ({$query_add})"; if ($message_range == 'unchecked') { $query_add = "NOT {$query_add}"; } $query_add = " AND `message_id` {$query_add}"; } case 'class': if ($current_class != MSG_TYPE_OUTBOX && $current_class != MSG_TYPE_NEW) { $query_add .= " AND `message_type` = {$current_class}"; }
function qst_render_page() { global $lang, $user, $template, $config; $user_id = sys_get_param_id('user_id', false); $mode = sys_get_param_str('mode'); $quest_units_allowed = sn_get_groups(array('structures', 'tech', 'fleet', 'defense')); $quest_reward_allowed = sn_get_groups('quest_rewards'); $in_admin = defined('IN_ADMIN') && IN_ADMIN === true; if ($in_admin) { $quest_id = sys_get_param_id('id'); $quest_name = sys_get_param_str_unsafe('QUEST_NAME'); if (!empty($quest_name)) { $quest_description = sys_get_param_str_unsafe('QUEST_DESCRIPTION'); try { $quest_rewards_list = sys_get_param('QUEST_REWARDS_LIST'); $quest_rewards = array(); foreach ($quest_rewards_list as $quest_rewards_id => $quest_rewards_amount) { if (!in_array($quest_rewards_id, $quest_reward_allowed)) { throw new Exception($lang['qst_adm_err_reward_type']); } if ($quest_rewards_amount < 0) { throw new Exception($lang['qst_adm_err_reward_amount']); } elseif ($quest_rewards_amount > 0) { $quest_rewards[] = "{$quest_rewards_id},{$quest_rewards_amount}"; } } if (empty($quest_rewards)) { throw new Exception($lang['qst_adm_err_reward_empty']); } $quest_rewards = implode(';', $quest_rewards); $quest_unit_id = sys_get_param_int('QUEST_UNIT_ID'); if (!in_array($quest_unit_id, $quest_units_allowed)) { throw new Exception($lang['qst_adm_err_unit_id']); } $quest_unit_amount = sys_get_param_float('QUEST_UNIT_AMOUNT'); if ($quest_unit_amount <= 0) { throw new Exception($lang['qst_adm_err_unit_amount']); } $quest_conditions = "{$quest_unit_id},{$quest_unit_amount}"; // TODO: Change quest type $quest_type = 0; if ($mode == 'edit') { $quest_name = db_escape($quest_name); $quest_description = db_escape($quest_description); doquery("UPDATE {{quest}} SET\n `quest_name` = '{$quest_name}',\n `quest_type` = '{$quest_type}',\n `quest_description` = '{$quest_description}',\n `quest_conditions` = '{$quest_conditions}',\n `quest_rewards` = '{$quest_rewards}'\n WHERE `quest_id` = {$quest_id} LIMIT 1;"); } else { sn_db_perform('{{quest}}', array('quest_name' => $quest_name, 'quest_type' => $quest_type, 'quest_description' => $quest_description, 'quest_conditions' => $quest_conditions, 'quest_rewards' => $quest_rewards)); } // TODO: Add mass mail for new quests /* if(sys_get_param_int('news_mass_mail')) { msg_send_simple_message('*', 0, 0, MSG_TYPE_PLAYER, $lang['sys_administration'], $lang['news_title'], $text); } */ } catch (Exception $e) { message($e->getMessage(), $lang['sys_error']); } $mode = ''; } switch ($mode) { case 'del': doquery("DELETE FROM {{quest}} WHERE `quest_id` = {$quest_id} LIMIT 1;"); $mode = ''; break; case 'edit': $template->assign_var('QUEST_ID', $quest_id); case 'copy': $quest = doquery("SELECT * FROM {{quest}} WHERE `quest_id` = {$quest_id} LIMIT 1;", '', true); break; } $query = doquery("SELECT count(*) AS count FROM {{quest}};", '', true); $config->db_saveItem('quest_total', $query['count']); } elseif (!$user_id) { $user_id = $user['id']; } $quest_list = qst_get_quests($user_id); $template->assign_vars(array('AUTHLEVEL' => $user['authlevel'], 'TOTAL' => count($quest_list), 'mode' => $mode, 'USER_ID' => $user_id, 'IN_ADMIN' => $in_admin)); if ($quest) { $quest_templatized = qst_templatize(qst_quest_parse($quest, false)); } else { $quest_templatized['quest_rewards_list'] = array(); } foreach ($quest_reward_allowed as $unit_id) { $found = false; foreach ($quest_templatized['quest_rewards_list'] as $quest_templatized_reward) { if ($quest_templatized_reward['ID'] == $unit_id) { $found = true; break; } } if (!$found) { $quest_templatized['quest_rewards_list'][$unit_id] = array('ID' => $unit_id, 'NAME' => $lang['tech'][$unit_id], 'AMOUNT' => 0); } } qst_assign_to_template($template, $quest_templatized); foreach ($quest_list as $quest_data) { qst_assign_to_template($template, qst_templatize($quest_data, true), 'quest'); } foreach ($quest_units_allowed as $unit_id) { $template->assign_block_vars('allowed_unit', array('ID' => $unit_id, 'NAME' => $lang['tech'][$unit_id])); } }
function sn_options_model() { global $user, $user_option_list, $lang, $template_result, $config; $language_new = sys_get_param_str('langer', $user['lang']); if ($language_new != $user['lang']) { $lang->lng_switch($language_new); } lng_include('options'); lng_include('messages'); $FMT_DATE = preg_replace(array('/d/', '/m/', '/Y/'), array('DD', 'MM', 'YYYY'), FMT_DATE); if (sys_get_param_str('mode') == 'change') { if ($user['authlevel'] > 0) { $planet_protection = sys_get_param_int('adm_pl_prot') ? $user['authlevel'] : 0; db_planet_set_by_owner($user['id'], "`id_level` = '{$planet_protection}'"); db_user_set_by_id($user['id'], "`admin_protection` = '{$planet_protection}'"); $user['admin_protection'] = $planet_protection; } if (sys_get_param_int('vacation') && !$config->user_vacation_disable) { sn_db_transaction_start(); if ($user['authlevel'] < 3) { if ($user['vacation_next'] > SN_TIME_NOW) { message($lang['opt_vacation_err_timeout'], $lang['Error'], 'index.php?page=options', 5); die; } $is_building = doquery("SELECT * FROM `{{fleets}}` WHERE `fleet_owner` = '{$user['id']}' LIMIT 1;", true); if ($is_building) { message($lang['opt_vacation_err_your_fleet'], $lang['Error'], 'index.php?page=options', 5); die; } $que = que_get($user['id'], false); if (!empty($que)) { message($lang['opt_vacation_err_que'], $lang['Error'], 'index.php?page=options', 5); die; } $query = classSupernova::db_get_record_list(LOC_PLANET, "`id_owner` = {$user['id']}"); foreach ($query as $planet) { // $planet = sys_o_get_updated($user, $planet, SN_TIME_NOW); // $planet = $planet['planet']; db_planet_set_by_id($planet['id'], "last_update = " . SN_TIME_NOW . ", energy_used = '0', energy_max = '0',\n metal_perhour = '{$config->metal_basic_income}', crystal_perhour = '{$config->crystal_basic_income}', deuterium_perhour = '{$config->deuterium_basic_income}',\n metal_mine_porcent = '0', crystal_mine_porcent = '0', deuterium_sintetizer_porcent = '0', solar_plant_porcent = '0',\n fusion_plant_porcent = '0', solar_satelit_porcent = '0', ship_sattelite_sloth_porcent = 0"); } $user['vacation'] = SN_TIME_NOW + $config->player_vacation_time; } else { $user['vacation'] = SN_TIME_NOW; } sn_db_transaction_commit(); } foreach ($user_option_list as $option_group_id => $option_group) { foreach ($option_group as $option_name => $option_value) { if ($user[$option_name] !== null) { $user[$option_name] = sys_get_param_str($option_name); } else { $user[$option_name] = $option_value; } } } $options = sys_user_options_pack($user); $player_options = sys_get_param('options'); if (!empty($player_options)) { array_walk($player_options, function (&$value) { // TODO - Когда будет больше параметров - сделать больше проверок $value = intval($value); }); classSupernova::$user_options->offsetSet($player_options); // pdump($player_options);die(); // player_save_option_array($user, $player_options); } $username = substr(sys_get_param_str_unsafe('username'), 0, 32); $username_safe = db_escape($username); if ($username && $user['username'] != $username && $config->game_user_changename != SERVER_PLAYER_NAME_CHANGE_NONE && sys_get_param_int('username_confirm') && !strpbrk($username, LOGIN_REGISTER_CHARACTERS_PROHIBITED)) { // проверка на корректность sn_db_transaction_start(); $name_check = doquery("SELECT * FROM {{player_name_history}} WHERE `player_name` LIKE \"{$username_safe}\" LIMIT 1 FOR UPDATE;", true); if (!$name_check || $name_check['player_id'] == $user['id']) { $user = db_user_by_id($user['id'], true); switch ($config->game_user_changename) { case SERVER_PLAYER_NAME_CHANGE_PAY: if (mrc_get_level($user, $planetrow, RES_DARK_MATTER) < $config->game_user_changename_cost) { $template_result['.']['result'][] = array('STATUS' => ERR_ERROR, 'MESSAGE' => $lang['opt_msg_name_change_err_no_dm']); break; } rpg_points_change($user['id'], RPG_NAME_CHANGE, -$config->game_user_changename_cost, sprintf('Пользователь ID %d сменил имя с "%s" на "%s"', $user['id'], $user['username'], $username)); case SERVER_PLAYER_NAME_CHANGE_FREE: db_user_set_by_id($user['id'], "`username` = '{$username_safe}'"); doquery("REPLACE INTO {{player_name_history}} SET `player_id` = {$user['id']}, `player_name` = '{$username_safe}'"); // TODO: Change cookie to not force user relogin // sn_setcookie(SN_COOKIE, '', time() - PERIOD_WEEK, SN_ROOT_RELATIVE); $template_result['.']['result'][] = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['opt_msg_name_changed']); $user['username'] = $username; break; } } else { $template_result['.']['result'][] = array('STATUS' => ERR_ERROR, 'MESSAGE' => $lang['opt_msg_name_change_err_used_name']); } sn_db_transaction_commit(); } if ($new_password = sys_get_param('newpass1')) { try { if ($new_password != sys_get_param('newpass2')) { throw new Exception($lang['opt_err_pass_unmatched'], ERR_WARNING); } if (!classSupernova::$auth->password_change(sys_get_param('db_password'), $new_password)) { throw new Exception($lang['opt_err_pass_wrong'], ERR_WARNING); } throw new Exception($lang['opt_msg_pass_changed'], ERR_NONE); } catch (Exception $e) { $template_result['.']['result'][] = array('STATUS' => in_array($e->getCode(), array(ERR_NONE, ERR_WARNING, ERR_ERROR)) ? $e->getCode() : ERR_ERROR, 'MESSAGE' => $e->getMessage()); } } $user['email'] = sys_get_param_str('db_email'); // if(!$template_result[F_ACCOUNT]['account_email'] && ($email_2 = sys_get_param_str('db_email2'))) { // core_auth::email_set($email_2); // } $user['dpath'] = sys_get_param_str('dpath'); $user['lang'] = sys_get_param_str('langer', $user['lang']); // if($lang->lng_switch($user['lang'])) { // lng_include('options'); // lng_include('messages'); // } $user['design'] = sys_get_param_int('design'); $user['noipcheck'] = sys_get_param_int('noipcheck'); // $user['spio_anz'] = sys_get_param_int('spio_anz'); // $user['settings_fleetactions'] = sys_get_param_int('settings_fleetactions', 1); // $user['settings_tooltiptime'] = sys_get_param_int('settings_tooltiptime'); // $user['settings_esp'] = sys_get_param_int('settings_esp'); // $user['settings_wri'] = sys_get_param_int('settings_wri'); // $user['settings_bud'] = sys_get_param_int('settings_bud'); // $user['settings_mis'] = sys_get_param_int('settings_mis'); // $user['settings_statistics'] = sys_get_param_int('settings_statistics'); // $user['settings_info'] = sys_get_param_int('settings_info'); // $user['settings_rep'] = sys_get_param_int('settings_rep'); // $user['planet_sort'] = sys_get_param_int('settings_sort'); // $user['planet_sort_order'] = sys_get_param_int('settings_order'); $user['deltime'] = !sys_get_param_int('deltime') ? 0 : ($user['deltime'] ? $user['deltime'] : SN_TIME_NOW + $config->player_delete_time); $gender = sys_get_param_int('gender', $user['gender']); !isset($lang['sys_gender_list'][$gender]) ? $gender = $user['gender'] : false; $user['gender'] = $user['gender'] == GENDER_UNKNOWN ? $gender : $user['gender']; try { if ($user['birthday']) { throw new exception(); } $user_birthday = sys_get_param_str_unsafe('user_birthday'); if (!$user_birthday || $user_birthday == $FMT_DATE) { throw new exception(); } // Some black magic to parse any valid date format - those that contains all three "d", "m" and "Y" and any of the delimeters "\", "/", ".", "-" $pos['d'] = strpos(FMT_DATE, 'd'); $pos['m'] = strpos(FMT_DATE, 'm'); $pos['Y'] = strpos(FMT_DATE, 'Y'); asort($pos); $i = 0; foreach ($pos as &$position) { $position = ++$i; } $regexp = "/" . preg_replace(array('/\\\\/', '/\\//', '/\\./', '/\\-/', '/d/', '/m/', '/Y/'), array('\\\\\\', '\\/', '\\.', '\\-', '(\\d?\\d)', '(\\d?\\d)', '(\\d{4})'), FMT_DATE) . "/"; if (!preg_match($regexp, $user_birthday, $match)) { throw new exception(); } if (!checkdate($match[$pos['m']], $match[$pos['d']], $match[$pos['Y']])) { throw new exception(); } $user['user_birthday'] = db_escape("{$match[$pos['Y']]}-{$match[$pos['m']]}-{$match[$pos['d']]}"); // EOF black magic! Now we have valid SQL date in $user['user_birthday'] - independent of date format $year = date('Y', SN_TIME_NOW); if (mktime(0, 0, 0, $match[$pos['m']], $match[$pos['d']], $year) > SN_TIME_NOW) { $year--; } $user['user_birthday_celebrated'] = db_escape("{$year}-{$match[$pos['m']]}-{$match[$pos['d']]}"); $user_birthday = ", `user_birthday` = '{$user['user_birthday']}', `user_birthday_celebrated` = '{$user['user_birthday_celebrated']}'"; } catch (exception $e) { $user_birthday = ''; } require_once 'includes/includes/sys_avatar.php'; $avatar_upload_result = sys_avatar_upload($user['id'], $user['avatar']); $template_result['.']['result'][] = $avatar_upload_result; $user_time_diff = playerTimeDiff::user_time_diff_get(); if (sys_get_param_int('PLAYER_OPTION_TIME_DIFF_FORCED')) { playerTimeDiff::user_time_diff_set(array(PLAYER_OPTION_TIME_DIFF => sys_get_param_int('PLAYER_OPTION_TIME_DIFF'), PLAYER_OPTION_TIME_DIFF_UTC_OFFSET => 0, PLAYER_OPTION_TIME_DIFF_FORCED => 1, PLAYER_OPTION_TIME_DIFF_MEASURE_TIME => SN_TIME_SQL)); } elseif (sys_get_param_int('opt_time_diff_clear') || $user_time_diff[PLAYER_OPTION_TIME_DIFF_FORCED]) { playerTimeDiff::user_time_diff_set(array(PLAYER_OPTION_TIME_DIFF => '', PLAYER_OPTION_TIME_DIFF_UTC_OFFSET => 0, PLAYER_OPTION_TIME_DIFF_FORCED => 0, PLAYER_OPTION_TIME_DIFF_MEASURE_TIME => SN_TIME_SQL)); } $user_options_safe = db_escape($user['options']); db_user_set_by_id($user['id'], "`email` = '{$user['email']}', `lang` = '{$user['lang']}', `avatar` = '{$user['avatar']}',\n `dpath` = '{$user['dpath']}', `design` = '{$user['design']}', `noipcheck` = '{$user['noipcheck']}',\n `deltime` = '{$user['deltime']}', `vacation` = '{$user['vacation']}', `options` = '{$user_options_safe}', `gender` = {$user['gender']}\n {$user_birthday}"); $template_result['.']['result'][] = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['opt_msg_saved']); } elseif (sys_get_param_str('result') == 'ok') { $template_result['.']['result'][] = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['opt_msg_saved']); } $user = db_user_by_id($user['id']); $options = sys_user_options_unpack($user); }
protected function prepare() { $this->input_login_unsafe = sys_get_param_str_unsafe('username', sys_get_param_str_unsafe('email')); // TODO переделать эту порнографию $this->is_login = sys_get_param('login') ? true : false; $this->is_register = sys_get_param('register') ? true : false; $this->is_password_reset = sys_get_param('password_reset') ? true : false; $this->is_password_reset_confirm = sys_get_param('password_reset_confirm') ? true : false; $this->remember_me = intval(sys_get_param_int('rememberme') || $this->is_register); $this->input_login_password_raw = sys_get_param('password'); $this->input_login_password_raw_repeat = sys_get_param('password_repeat'); $this->input_email_unsafe = sys_get_param_str_unsafe('email'); $this->input_language_unsafe = sys_get_param_str_unsafe('lang', DEFAULT_LANG); $this->input_language_safe = sys_get_param_str('lang', DEFAULT_LANG); }
<?php /** * login.php * * @version 2.0 Security checks & tests by Gorlum for http://supernova.ws * @version 1.1 Security checks & tests by Gorlum for http://supernova.ws * @version 1.0 * @copyright 2008 by ?????? for XNova */ define('LOGIN_LOGOUT', true); $allow_anonymous = true; include 'includes/init.' . substr(strrchr(__FILE__, '.'), 1); // die(); if ($template_result[F_USER_IS_AUTHORIZED]) { sys_redirect('index' . DOT_PHP_EX); } lng_include('login'); lng_include('admin'); $username_unsafe = sys_get_param_str_unsafe('username'); $password_raw = trim(sys_get_param('password')); $password_repeat_raw = trim(sys_get_param('password_repeat')); $email = sys_get_param_str('email'); $template = gettemplate('login_body', true); $template->assign_vars(array('last_user' => db_user_last_registered_username(), 'online_users' => db_user_count(true), 'id_ref' => sys_get_param_int('id_ref'), 'F_LOGIN_MESSAGE' => $template_result[F_LOGIN_MESSAGE], 'F_LOGIN_STATUS' => $template_result[F_LOGIN_STATUS], 'LOGIN_ERROR_USERNAME' => LOGIN_ERROR_USERNAME, 'LOGIN_ERROR_PASSWORD' => LOGIN_ERROR_PASSWORD, 'REGISTER_ERROR_EMAIL_EXISTS' => REGISTER_ERROR_EMAIL_EXISTS, 'PASSWORD_RESTORE_ERROR_WRONG_EMAIL' => PASSWORD_RESTORE_ERROR_EMAIL_NOT_EXISTS, 'USERNAME' => htmlentities($username_unsafe, ENT_QUOTES, 'UTF-8'), 'EMAIL' => htmlentities($email, ENT_QUOTES, 'UTF-8'), 'PASSWORD' => htmlentities($password_raw, ENT_QUOTES, 'UTF-8'), 'PASSWORD_REPEAT' => htmlentities($password_repeat_raw, ENT_QUOTES, 'UTF-8'), 'URL_RULES' => $config->url_rules, 'URL_FORUM' => $config->url_forum, 'URL_FAQ' => $config->url_faq, 'GAME_BLITZ' => $config->game_mode == GAME_BLITZ)); tpl_login_lang($template); display($template, $lang['Login'], false, '', false, false);
<?php define('INSIDE', true); define('INSTALL', false); define('IN_ADMIN', true); require '../common.' . substr(strrchr(__FILE__, '.'), 1); if ($user['authlevel'] < 2) { AdminMessage($lang['adm_err_denied']); } $mode = sys_get_param_str('mode'); $mode = in_array($mode, array('structures', 'fleet', 'defense', 'resources_loot')) ? $mode : 'structures'; $planet_id = sys_get_param_int('planet_id'); $unit_list = sys_get_param('unit_list'); if (sys_get_param('change_data')) { $query_string = array(); foreach ($unit_list as $unit_id => $unit_amount) { if (!$unit_amount || !in_array($unit_id, $sn_data['groups'][$mode])) { continue; } $unit_amount = intval($unit_amount); $query_string[] = "{$sn_data[$unit_id]['name']} = GREATEST(0, {$sn_data[$unit_id]['name']} + ({$unit_amount}))"; } $query_string = implode(', ', $query_string); if ($query_string) { doquery("UPDATE {{planets}} SET {$query_string} WHERE id = {$planet_id} LIMIT 1;"); } } $template = gettemplate('admin/admin_planet_edit', true); if ($planet_id) { $edit_planet_row = doquery("SELECT * FROM {{planets}} WHERE `id` = {$planet_id}", '', true); }
<?php /** * login.php * * @version 2.0 Security checks & tests by Gorlum for http://supernova.ws * @version 1.1 Security checks & tests by Gorlum for http://supernova.ws * @version 1.0 * @copyright 2008 by ?????? for XNova */ include 'includes/init.' . substr(strrchr(__FILE__, '.'), 1); lng_include('login'); lng_include('admin'); $id_ref = sys_get_param_int('id_ref'); $username = sys_get_param('username'); $password = sys_get_param('password'); if ($username) { $result = sn_login($username, $password, $_POST['rememberme']); switch ($result['status']) { case LOGIN_SUCCESS: $user = $result['user_row']; header('Location: overview.php'); break; case LOGIN_ERROR_USERNAME: case LOGIN_ERROR_PASSWORD: message($result['error_msg'], $lang['Login_Error']); break; default: } die; } elseif (!empty($_COOKIE[$config->COOKIE_NAME])) {
// Может добавить спецстатус "Ответ системы платежа" и парсить дальше 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); } 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);
$config->fleet_bashing_waves = sys_get_param_int('fleet_bashing_waves', 3); $config->allow_buffing = sys_get_param_int('allow_buffing'); $config->ally_help_weak = sys_get_param_int('ally_help_weak'); $config->game_email_pm = sys_get_param_int('game_email_pm'); $config->rpg_exchange_metal = sys_get_param_int('rpg_exchange_metal', 1); $config->rpg_exchange_crystal = sys_get_param_int('rpg_exchange_crystal', 2); $config->rpg_exchange_deuterium = sys_get_param_int('rpg_exchange_deuterium', 4); $config->rpg_exchange_darkMatter = sys_get_param_int('rpg_exchange_darkMatter', 1000); $config->initial_fields = sys_get_param_int('initial_fields', 200); $config->metal_basic_income = sys_get_param_int('metal_basic_income', 40); $config->crystal_basic_income = sys_get_param_int('crystal_basic_income', 20); $config->deuterium_basic_income = sys_get_param_int('deuterium_basic_income', 10); $config->energy_basic_income = sys_get_param_int('energy_basic_income'); $config->chat_timeout = sys_get_param_int('chat_timeout', 5); $config->game_news_overview = sys_get_param_int('game_news_overview', 5); $config->advGoogleLeftMenuIsOn = sys_get_param_int('advGoogleLeftMenuIsOn'); $config->advGoogleLeftMenuCode = sys_get_param('advGoogleLeftMenuCode'); $config->debug = sys_get_param_int('debug'); $config->game_counter = sys_get_param_int('game_counter'); $config->db_saveAll(); $template->assign_var('MESSAGE', $lang['adm_opt_saved']); } $template->assign_vars(array('game_disable' => $config->game_disable ? 'checked' : '', 'advGoogleLeftMenuIsOn' => $config->advGoogleLeftMenuIsOn ? 'checked' : '', 'debug' => $config->debug ? 'checked' : '', 'game_counter' => $config->game_counter ? 'checked' : '', 'user_vacation_disable' => $config->user_vacation_disable ? 'checked' : '', 'ALLOW_BUFFING' => $config->allow_buffing, 'ALLY_HELP_WEAK' => $config->ally_help_weak, 'GAME_EMAIL_PM' => $config->game_email_pm, 'game_mode' => $config->game_mode, 'game_language' => $config->game_default_language)); foreach ($lang['sys_game_mode'] as $mode_id => $mode_name) { $template->assign_block_vars('game_modes', array('ID' => $mode_id, 'NAME' => $mode_name)); } $lang_list = lng_get_list(); foreach ($lang_list as $lang_id => $lang_data) { $template->assign_block_vars('game_languages', array('ID' => $lang_id, 'NAME' => "{$lang_data['LANG_NAME_NATIVE']} ({$lang_data['LANG_NAME_ENGLISH']})")); } display(parsetemplate($template), $lang['adm_opt_title'], false, '', true);
$user['username'] = $username; $username = mysql_real_escape_string($username); // TODO: Change cookie to not force user relogin setcookie(COOKIE_NAME, '', time() - 100000, '/', '', 0); //le da el expire $template->assign_var('CHANGE_NAME', true); } else { $username = mysql_real_escape_string($user['username']); } $new_password = sys_get_param('newpass1'); if ($new_password) { try { if (md5(sys_get_param('db_password')) != $user['password']) { throw new Exception('', 1); } if ($new_password != sys_get_param('newpass2')) { throw new Exception('', 2); } $user['password'] = md5($new_password); // TODO: Change cookie to not force user relogin setcookie(COOKIE_NAME, '', time() - 100000, '/', '', 0); //le da el expire $template->assign_var('CHANGE_PASS', -1); } catch (Exception $e) { $template->assign_var('CHANGE_PASS', $e->getCode()); } } $user['email'] = sys_get_param_str('db_email'); $user['dpath'] = sys_get_param_str('dpath'); $user['lang'] = $language = sys_get_param_str('langer', $language); $user['avatar'] = sys_get_param_str('avatar');
adm_lng_write_string($arr_name, $arr_data, $ident . ' ', $string_name_prefix); } fwrite($file_handler, "{$ident}),\r\n"); } fwrite($file_handler, "\r\n"); } $template = gettemplate('admin/admin_locale', true); lng_include('system'); lng_include('tech'); lng_include('admin'); $languages = array(); $language_domains = array(); $languages_info = lng_get_list(); $domain = sys_get_param_str('domain'); if ($domain) { $lang_new = sys_get_param('lang_new'); if (!empty($lang_new)) { $constants = get_defined_constants(true); $constants = $constants['user']; ksort($constants); foreach ($languages_info as $lang_id => $land_data) { $file_handler = fopen(SN_ROOT_PHYSICAL . "language/{$lang_id}/{$domain}.mo.php.new", 'w'); fwrite($file_handler, "<?php\r\n\r\n/*\r\n#############################################################################\n# Filename: {$domain}.mo.php\n# Project: SuperNova.WS\n# Website: http://www.supernova.ws\n# Description: Massive Multiplayer Online Browser Space Startegy Game\r\n#\r\n"); foreach ($land_data['LANG_COPYRIGHT'] as $lang_copyright) { $lang_copyright = str_replace(array('©', '"', '<', '>'), array('©', '"', '<', '>'), $lang_copyright); fwrite($file_handler, "# {$lang_copyright}\r\n"); } fwrite($file_handler, "#############################################################################\r\n*/\r\n\n/**\r\n*\r\n* @package language\r\n* @system [{$land_data['LANG_NAME_ENGLISH']}]\r\n* @version " . SN_VERSION . "\r\n*\r\n*/\r\n\n/**\r\n* DO NOT CHANGE\r\n*/\r\n\r\nif (!defined('INSIDE')) die();\r\n\n\$a_lang_array = array(\r\n"); foreach ($lang_new as $string_name => $string_value) { adm_lng_write_string($string_name, $string_value); }
function eco_bld_hangar($que_type, $user, &$planet) { global $lang; if (mrc_get_level($user, $planet, STRUC_FACTORY_HANGAR) == 0) { message($lang['need_hangar'], $lang['tech'][STRUC_FACTORY_HANGAR]); } $page_mode = $que_type == SUBQUE_FLEET ? 'fleet' : 'defense'; switch (sys_get_param_str('action')) { case 'clear': que_delete($que_type, $user, $planet, true); break; case 'trim': que_delete($que_type, $user, $planet, false); break; //case 'build':$operation_result = que_build($user, $planet);break; //case 'build':$operation_result = eco_bld_tech_research($user, $planet);break; } $template = gettemplate("buildings_hangar", true); if (sys_unit_arr2str(sys_get_param('fmenge'))) { $operation_result = que_build($user, $planet); } if (!empty($operation_result)) { $template->assign_block_vars('result', $operation_result); } $page_error = ''; $sn_data_group = sn_get_groups($page_mode); $ques = que_get($user['id'], $planet['id'], $que_type); $que =& $ques['ques'][$que_type][$user['id']][$planet['id']]; $in_que =& $ques['in_que'][$que_type][$user['id']][$planet['id']]; $silo_capacity_free = mrc_get_level($user, $planet, STRUC_SILO) * get_unit_param(STRUC_SILO, P_CAPACITY); $group_missile = sn_get_groups('missile'); foreach ($group_missile as $unit_id) { $silo_capacity_free -= (mrc_get_level($user, $planet, $unit_id, false, true) + (isset($in_que[$unit_id]) && $in_que[$unit_id] ? $in_que[$unit_id] : 0)) * get_unit_param($unit_id, P_UNIT_SIZE); } $silo_capacity_free = max(0, $silo_capacity_free); $TabIndex = 0; foreach ($sn_data_group as $unit_id) { $unit_info = get_unit_param($unit_id); $build_data = eco_get_build_data($user, $planet, $unit_id); if ($build_data['RESULT'][BUILD_CREATE] == BUILD_REQUIRE_NOT_MEET) { continue; } $unit_message = ''; $ElementCount = mrc_get_level($user, $planet, $unit_id); // Restricting $can_build by resources on planet and (where applicable) with max count per unit $can_build = $unit_info[P_MAX_STACK] ? max(0, $unit_info[P_MAX_STACK] - $in_que[$unit_id] - $ElementCount) : $build_data['CAN'][BUILD_CREATE]; // Restricting $can_build by free silo capacity $can_build = ($unit_is_missile = in_array($unit_id, $group_missile)) ? min($can_build, floor($silo_capacity_free / $unit_info[P_UNIT_SIZE])) : $can_build; if (!$can_build) { if (!$build_data['CAN'][BUILD_CREATE]) { $unit_message = $lang['sys_build_result'][BUILD_NO_RESOURCES]; } elseif ($unit_is_missile && $silo_capacity_free < $unit_info[P_UNIT_SIZE]) { $unit_message = $lang['b_no_silo_space']; } elseif ($unit_info[P_MAX_STACK]) { $unit_message = $lang['only_one']; } } else { $TabIndex++; } $temp[RES_METAL] = floor($planet['metal'] - $build_data[BUILD_CREATE][RES_METAL]); // + $fleet_list['own']['total'][RES_METAL] $temp[RES_CRYSTAL] = floor($planet['crystal'] - $build_data[BUILD_CREATE][RES_CRYSTAL]); // + $fleet_list['own']['total'][RES_CRYSTAL] $temp[RES_DEUTERIUM] = floor($planet['deuterium'] - $build_data[BUILD_CREATE][RES_DEUTERIUM]); // + $fleet_list['own']['total'][RES_DEUTERIUM] $template->assign_block_vars('production', array('ID' => $unit_id, 'NAME' => $lang['tech'][$unit_id], 'DESCRIPTION' => $lang['info'][$unit_id]['description_short'], 'LEVEL' => $ElementCount, 'LEVEL_OLD' => mrc_get_level($user, $planet, $unit_id), 'LEVEL_CHANGE' => $que['in_que'][$unit_id], 'BUILD_CAN' => $can_build, 'TIME' => pretty_time($build_data[RES_TIME][BUILD_CREATE]), 'METAL' => $build_data[BUILD_CREATE][RES_METAL], 'CRYSTAL' => $build_data[BUILD_CREATE][RES_CRYSTAL], 'DEUTERIUM' => $build_data[BUILD_CREATE][RES_DEUTERIUM], 'METAL_PRINT' => pretty_number($build_data[BUILD_CREATE][RES_METAL], true, $planet['metal']), 'CRYSTAL_PRINT' => pretty_number($build_data[BUILD_CREATE][RES_CRYSTAL], true, $planet['crystal']), 'DEUTERIUM_PRINT' => pretty_number($build_data[BUILD_CREATE][RES_DEUTERIUM], true, $planet['deuterium']), 'DESTROY_CAN' => $build_data['CAN'][BUILD_DESTROY], 'DESTROY_TIME' => pretty_time($build_data[RES_TIME][BUILD_DESTROY]), 'DESTROY_METAL' => $build_data[BUILD_DESTROY][RES_METAL], 'DESTROY_CRYSTAL' => $build_data[BUILD_DESTROY][RES_CRYSTAL], 'DESTROY_DEUTERIUM' => $build_data[BUILD_DESTROY][RES_DEUTERIUM], 'METAL_REST' => pretty_number($temp[RES_METAL], true, true), 'CRYSTAL_REST' => pretty_number($temp[RES_CRYSTAL], true, true), 'DEUTERIUM_REST' => pretty_number($temp[RES_DEUTERIUM], true, true), 'METAL_REST_NUM' => $temp[RES_METAL], 'CRYSTAL_REST_NUM' => $temp[RES_CRYSTAL], 'DEUTERIUM_REST_NUM' => $temp[RES_DEUTERIUM], 'ARMOR' => pretty_number($unit_info[P_ARMOR]), 'SHIELD' => pretty_number($unit_info[P_SHIELD]), 'WEAPON' => pretty_number($unit_info[P_ATTACK]), 'TABINDEX' => $TabIndex, 'MESSAGE' => $unit_message)); } //$hangar_busy $template->assign_vars(array('noresearch' => $NoFleetMessage, 'error_msg' => $page_error, 'MODE' => $que_type, 'QUE_ID' => $que_type, 'TIME_NOW' => SN_TIME_NOW, 'HANGAR_BUSY' => eco_hangar_is_building($que), 'QUE_HAS_PLACE' => empty($que) || count($que) < que_get_max_que_length($user, $planet, $que_type))); // tpl_assign_hangar($que_type, $planet, $template); // $ques = que_get($que_type, $user['id'], $planet['id']); que_tpl_parse($template, $que_type, $user, $planet); display(parsetemplate($template), $lang[$page_mode]); }