function sn_admin_planet_edit_mode(&$template, &$admin_planet_edit_mode_list) { global $lang; $admin_planet_edit_mode_list = array_merge(isset($admin_planet_edit_mode_list) ? $admin_planet_edit_mode_list : array(), array('structures' => $lang['tech'][UNIT_STRUCTURES], 'fleet' => $lang['tech'][UNIT_SHIPS], 'defense' => $lang['tech'][UNIT_DEFENCE], 'resources_loot' => $lang['tech'][UNIT_RESOURCES])); $mode = sys_get_param_str('mode'); $admin_planet_edit_mode_list_keys = array_keys($admin_planet_edit_mode_list); $mode = in_array($mode, $admin_planet_edit_mode_list_keys) ? $mode : $admin_planet_edit_mode_list_keys[0]; return $mode; }
function sn_battle_report_view($template = null) { global $template_result, $lang; require_once 'includes/includes/ube_report.php'; $combat_data = sn_ube_report_load(sys_get_param_str('cypher')); if ($combat_data != UBE_REPORT_NOT_FOUND) { sn_ube_report_generate($combat_data, $template_result); $template = gettemplate('ube_combat_report', $template); } else { message($lang['sys_msg_ube_report_err_not_found'], $lang['sys_error']); } return $template; }
/** * Created by PhpStorm. * User: Gorlum * Date: 17.04.2015 * Time: 6:37 */ function sys_user_vacation($user) { global $config; if (sys_get_param_str('vacation') == 'leave') { if ($user['vacation'] < SN_TIME_NOW) { $user['vacation'] = 0; $user['vacation_next'] = SN_TIME_NOW + $config->player_vacation_timeout; db_user_set_by_id($user['id'], "`vacation` = {$user['vacation']}, `vacation_next` = {$user['vacation_next']}"); } } if ($user['vacation']) { sn_sys_logout(false, true); $template = gettemplate('vacation', true); $template->assign_vars(array('NAME' => $user['username'], 'VACATION_END' => date(FMT_DATE_TIME, $user['vacation']), 'CAN_LEAVE' => $user['vacation'] <= SN_TIME_NOW, 'RANDOM' => mt_rand(1, 2))); display(parsetemplate($template), '', false, '', false, false); } return false; }
function sn_chat_msg_view($template = null) { global $config, $skip_fleet_update, $user, $lang; define('IN_AJAX', true); $skip_fleet_update = true; $history = sys_get_param_str('history'); if (!$history) { $config->array_set('users', $user['id'], 'chat_last_refresh', SN_TIME_MICRO); } $page = 0; $last_message = ''; $alliance = 0; $template_result['.']['chat'] = array(); if (!$history && $config->_MODE != CACHER_NO_CACHE && $config->chat_timeout && SN_TIME_MICRO - $config->array_get('users', $user['id'], 'chat_last_activity') > $config->chat_timeout) { $result['disable'] = true; $template_result['.']['chat'][] = array('TIME' => date(FMT_DATE_TIME, htmlentities(SN_CLIENT_TIME_LOCAL, ENT_QUOTES, 'utf-8')), 'DISABLE' => true); } else { $alliance = sys_get_param_str('ally') && $user['ally_id'] ? $user['ally_id'] : 0; $page_limit = 20; // Chat rows Limit $where_add = ''; $last_message = 0; if ($history) { $rows = doquery("SELECT count(1) AS CNT FROM {{chat}} WHERE ally_id = '{$alliance}';", true); $page_count = ceil($rows['CNT'] / $page_limit); for ($i = 0; $i < $page_count; $i++) { $template_result['.']['page'][] = array('NUMBER' => $i); } $page = min($page_count, max(0, sys_get_param_int('sheet'))); } else { $last_message = sys_get_param_id('last_message'); $where_add = $last_message ? "AND `messageid` > {$last_message}" : ''; } $start_row = $page * $page_limit; $query = doquery("SELECT c.*, u.authlevel\n FROM\n {{chat}} AS c\n LEFT JOIN {{users}} AS u ON u.id = c.chat_message_sender_id\n WHERE c.chat_message_recipient_id IS NULL AND c.ally_id = '{$alliance}' {$where_add} ORDER BY messageid DESC LIMIT {$start_row}, {$page_limit};"); while ($chat_row = db_fetch($query)) { // Little magik here - to retain HTML codes from DB and stripping HTML codes from nick $chat_row['user'] = player_nick_render_to_html($chat_row['user']); $nick_stripped = htmlentities(strip_tags($chat_row['user']), ENT_QUOTES, 'utf-8'); $nick = str_replace(strip_tags($chat_row['user']), $nick_stripped, $chat_row['user']); if (!$history) { $nick = "<span style=\"cursor: pointer;\" onclick=\"addSmiley('({$nick_stripped})');\">{$nick}</span>"; } $template_result['.']['chat'][] = array('TIME' => cht_message_parse(date(FMT_DATE_TIME, $chat_row['timestamp'] + SN_CLIENT_TIME_DIFF)), 'NICK' => $nick, 'TEXT' => cht_message_parse($chat_row['message'], false, intval($chat_row['authlevel']))); $last_message = max($last_message, $chat_row['messageid']); } } $template_result['.']['chat'] = array_reverse($template_result['.']['chat']); $template_result += array('PAGE' => $page, 'ALLY' => $alliance, 'HISTORY' => $history); $template = gettemplate('chat_messages', $template); $template->assign_recursive($template_result); if ($history) { display($template, "{$lang['chat_history']} - {$lang[$alliance ? 'chat_ally' : 'chat_common']}", true, '', false, true); } else { $result['last_message'] = $last_message; ob_start(); displayP($template); $result['html'] = ob_get_contents(); ob_end_clean(); print json_encode($result); } die; }
$msg_sent = true; } else { $recipient_name = sys_get_param_str_raw('recipient_name'); $subject = sys_get_param_str_raw('subject'); $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}"; }
if ($config->_MODE != CACHER_NO_CACHE && $config->chat_timeout && $microtime - $config->array_get('users', $user['id'], 'chat_last_activity') > $config->chat_timeout) { print iconv('CP1251', 'UTF-8', $lang['chat_timeout']); die; } $history = sys_get_param_str('history'); /* if(!$history && $microtime - $config->array_get('users', $user['id'], 'chat_last_refresh') < 1) { // print($microtime - $config->array_get('users', $user['id'], 'chat_last_refresh')); die(); } */ $template = gettemplate('chat_messages', true); $page_limit = 25; // Chat rows Limit $alliance = sys_get_param_str('ally'); if ($alliance && $user['ally_id']) { $alliance = $user['ally_id']; } else { $alliance = 0; } if ($history) { $rows = doquery("SELECT count(1) AS CNT FROM {{chat}} WHERE ally_id = '{$alliance}';", '', true); $page_count = ceil($rows['CNT'] / $page_limit); for ($i = 0; $i < $page_count; $i++) { $template->assign_block_vars('page', array('NUMBER' => $i)); } $page = min($page_count, sys_get_param_int('page')); } else { $page = 0; }
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'); $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_tooltiptime'] = sys_get_param_int('settings_tooltiptime'); $user['settings_fleetactions'] = sys_get_param_int('settings_fleetactions', 1); $user['settings_allylogo'] = sys_get_param_int('settings_allylogo'); $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_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('db_deaktjava') ? 0 : ($user['deltime'] ? $user['deltime'] : $time_now + 604800); doquery("UPDATE {{users}} SET\r\n `username` = '{$username}',\r\n `password` = '{$user['password']}',\r\n `email` = '{$user['email']}',\r\n `lang` = '{$user['lang']}',\r\n `avatar` = '{$user['avatar']}',\r\n `dpath` = '{$user['dpath']}',\r\n `design` = '{$user['design']}',\r\n `noipcheck` = '{$user['noipcheck']}',\r\n `planet_sort` = '{$user['planet_sort']}',\r\n `planet_sort_order` = '{$user['planet_sort_order']}',\r\n `spio_anz` = '{$user['spio_anz']}',\r\n `settings_tooltiptime` = '{$user['settings_tooltiptime']}',\r\n `settings_fleetactions` = '{$user['settings_fleetactions']}',\r\n `settings_allylogo` = '{$user['settings_allylogo']}',\r\n `settings_esp` = '{$user['settings_esp']}',\r\n `settings_wri` = '{$user['settings_wri']}',\r\n `settings_bud` = '{$user['settings_bud']}',\r\n `settings_mis` = '{$user['settings_mis']}',\r\n `settings_rep` = '{$user['settings_rep']}',\r\n `deltime` = '{$user['deltime']}',\r\n `kolorminus` = '{$user['kolorminus']}',\r\n `kolorplus` = '{$user['kolorplus']}',\r\n `kolorpoziom` = '{$user['kolorpoziom']}',\r\n `vacation` = '{$user['vacation']}',\r\n `options` = '{$user['options']}'\r\n WHERE `id` = '{$user['id']}' LIMIT 1");
if ($mode == 'banit' && $action) { if ($player_banned_row) { $reas = $_POST['why']; $days = $_POST['days']; $hour = $_POST['hour']; $mins = $_POST['mins']; $secs = $_POST['secs']; // $isVacation = $_POST['isVacation']; $BanTime = $days * 86400; $BanTime += $hour * 3600; $BanTime += $mins * 60; $BanTime += $secs; // $BannedUntil = SN_TIME_NOW + $BanTime; sys_admin_player_ban($user, $player_banned_row, $BanTime, $is_vacation = sys_get_param_int('isVacation'), sys_get_param_str('why')); $DoneMessage = "{$lang['adm_bn_thpl']} {$name_output} {$lang['adm_bn_isbn']}"; if ($is_vacation) { $DoneMessage .= $lang['adm_bn_vctn']; } $DoneMessage .= $lang['adm_bn_plnt']; } else { $DoneMessage = sprintf($lang['adm_bn_errr'], $name_output); } AdminMessage($DoneMessage, $lang['adm_ban_title']); } elseif ($mode == 'unbanit' && $action) { sys_admin_player_ban_unset($user, $player_banned_row, ($reason = sys_get_param_str('why')) ? $reason : $lang['sys_unbanned']); $DoneMessage = $lang['adm_unbn_thpl'] . " " . $name_output . " " . $lang['adm_unbn_isbn']; AdminMessage($DoneMessage, $lang['adm_unbn_ttle']); } $parse['name'] = $name_output; $parse['mode'] = $mode; display(parsetemplate(gettemplate("admin/admin_ban", true), $parse), $lang['adm_ban_title'], false, '', true);
fwrite($file_handler, "array(\r\n"); foreach ($string_value as $arr_name => $arr_data) { 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) {
$config->eco_planet_storage_deuterium = sys_get_param_float('eco_planet_storage_deuterium', BASE_STORAGE_SIZE); $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->geoip_whois_url = sys_get_param_str('geoip_whois_url'); $config->uni_price_galaxy = sys_get_param_float('uni_price_galaxy'); $config->uni_price_system = sys_get_param_float('uni_price_system'); $config->user_birthday_gift = sys_get_param_float('user_birthday_gift'); $config->user_birthday_range = sys_get_param_int('user_birthday_range'); $config->stats_hide_admins = sys_get_param_int('stats_hide_admins'); $config->stats_hide_player_list = sys_get_param_str('stats_hide_player_list'); $config->stats_hide_pm_link = sys_get_param_int('stats_hide_pm_link'); $config->stats_schedule = sys_get_param_str('stats_schedule'); $config->empire_mercenary_base_period = sys_get_param_int('empire_mercenary_base_period'); if ($config->empire_mercenary_temporary != sys_get_param_int('empire_mercenary_temporary')) { if ($config->empire_mercenary_temporary) { db_unit_list_admin_delete_mercenaries_finished(); } else { db_unit_list_admin_set_mercenaries_expire_time($config->empire_mercenary_base_period); } $config->empire_mercenary_temporary = sys_get_param_int('empire_mercenary_temporary'); } $config->db_saveAll(); $template->assign_var('MESSAGE', $lang['adm_opt_saved']); } $template->assign_vars(array('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, 'ECO_SCALE_STORAGE' => $config->eco_scale_storage, 'USER_VACATION_DISABLE' => $config->user_vacation_disable, 'ADV_LEFT_MENU' => $config->advGoogleLeftMenuIsOn, 'GAME_DISABLE' => $config->game_disable, 'GAME_DEBUG' => $config->debug, 'GAME_COUNTER' => $config->game_counter, 'TPL_MINIFIER' => $config->tpl_minifier, 'EMPIRE_MERCENARY_TEMPORARY' => $config->empire_mercenary_temporary, 'SERVER_UPDATE_CHECK_AUTO' => $config->server_updater_check_auto, 'CHECK_DATE' => $config->server_updater_check_last ? date(FMT_DATE_TIME, $config->server_updater_check_last) : 0, 'CHECK_RESULT' => isset($lang['adm_opt_ver_response'][$config->server_updater_check_result]) ? $lang['adm_opt_ver_response'][$config->server_updater_check_result] : $lang['adm_opt_ver_response'][SNC_VER_UNKNOWN_RESPONSE], 'CHECK_CLASS' => isset($sn_version_check_class[$config->server_updater_check_result]) ? $sn_version_check_class[$config->server_updater_check_result] : $sn_version_check_class[SNC_VER_UNKNOWN_RESPONSE], 'SERVER_UPDATE_ID' => $config->server_updater_id, 'SERVER_UPDATE_KEY' => $config->server_updater_key, 'STATS_HIDE_ADMINS' => $config->stats_hide_admins, 'STATS_HIDE_PM_LINK' => $config->stats_hide_pm_link)); foreach ($lang['sys_game_disable_reason'] as $id => $name) { $template->assign_block_vars('sys_game_disable_reason', array('ID' => $id, 'NAME' => $name));
* @version 1.1 - Remade with more robust template by Gorlum for http://supernova.ws * @version 1.0s - Security checked for SQL-injection by Gorlum for http://supernova.ws * @version 1 * @copyright 2008 By e-Zobar for XNova */ define('INSIDE', true); define('INSTALL', false); define('IN_ADMIN', true); require '../common.' . substr(strrchr(__FILE__, '.'), 1); if ($user['authlevel'] < 3) { AdminMessage($lang['adm_err_denied']); } $parse = $lang; // extract($_GET); $delete = sys_get_param_str('delete'); $deleteall = sys_get_param_str('deleteall'); // Système de suppression if ($delete) { doquery("DELETE FROM {{chat}} WHERE `messageid`={$delete};"); } elseif ($deleteall == 'yes') { doquery("DELETE FROM {{chat}};"); } // Affichage des messages $query = doquery("SELECT * FROM {{chat}} ORDER BY messageid DESC LIMIT 25;"); $i = 0; while ($e = mysql_fetch_assoc($query)) { $i++; $parse['msg_list'] .= stripslashes("<tr>" . "<td class=n>{$e['messageid']}</td>" . "<td class=n><center>" . str_replace(' ', ' ', date(FMT_DATE_TIME, $e['timestamp'])) . "</center></td>" . "<td class=n><center>{$e['user']}</center></td>" . "<td class=b width=100%>" . nl2br($e['message']) . "<td class=n><center><a href=\"admin/admin_chat.php?delete={$e['messageid']}\"><img src=\"design/images/r1.png\"></a></center></td>" . "</td></tr>"); } $parse['msg_num'] = $i; display(parsetemplate(gettemplate('admin/admin_chat'), $parse), "Chat", false, '', true);
function que_build($user, $planet, $build_mode = BUILD_CREATE, $redirect = true) { global $lang; $unit_amount_qued = 0; try { if (!$user['id']) { throw new exception('{Нет идентификатора пользователя - сообщите Администрации}', ERR_ERROR); // TODO EXCEPTION } $unit_id = sys_get_param_int('unit_id'); /* if(!$unit_id && is_array($unit_list = sys_get_param('fmenge'))) { foreach($unit_list as $unit_id => $unit_amount) if($unit_amount) break; } */ if (!$unit_id) { throw new exception('{Нет идентификатора юнита - сообщите Администрации}', ERR_ERROR); // TODO EXCEPTION } $que_id = que_get_unit_que($unit_id); if (!$que_id) { throw new exception('{Неправильный тип очереди - сообщите Администрации}', ERR_ERROR); // TODO EXCEPTION } if ($build_mode == BUILD_DESTROY && $que_id != QUE_STRUCTURES) { throw new exception('{Уничтожать можно только здания на планете}', ERR_ERROR); // TODO EXCEPTION } $que_data = sn_get_groups('ques'); $que_data = $que_data[$que_id]; // die(); // TODO Переделать под подочереди if ($que_id == QUE_STRUCTURES) { $sn_groups_build_allow = sn_get_groups('build_allow'); $que_data['unit_list'] = $sn_groups_build_allow[$planet['planet_type']]; if (!isset($que_data['unit_list'][$unit_id])) { throw new exception('{Это здание нельзя строить на ' . ($planet['planet_type'] == PT_PLANET ? 'планете' : 'луне'), ERR_ERROR); // TODO EXCEPTION } } /* // TODO Разделить очереди для Верфи и Обороны elseif($que_id == QUE_HANGAR) { $que_data['mercenary'] = in_array($unit_id, sn_get_groups('defense')) ? MRC_FORTIFIER : MRC_ENGINEER; } elseif($que_id == QUE_HANGAR) { $que_data['mercenary'] = in_array($unit_id, sn_get_groups('defense')) ? MRC_FORTIFIER : MRC_ENGINEER; } */ sn_db_transaction_start(); // Это нужно, что бы заблокировать пользователя и работу с очередями $user = db_user_by_id($user['id']); // Это нужно, что бы заблокировать планету от списания ресурсов if (isset($planet['id']) && $planet['id']) { $planet = db_planet_by_id($planet['id'], true); } else { $planet['id'] = 0; } $planet_id = $que_id == QUE_RESEARCH ? 0 : intval($planet['id']); $que = que_get($user['id'], $planet['id'], $que_id, true); $in_que =& $que['in_que'][$que_id][$user['id']][$planet_id]; $que_max_length = que_get_max_que_length($user, $planet, $que_id, $que_data); // TODO Добавить вызовы функций проверок текущей и максимальной длин очередей if (count($in_que) >= $que_max_length) { throw new exception('{Все слоты очереди заняты}', ERR_ERROR); // TODO EXCEPTION } // TODO Отдельно посмотреть на уничтожение зданий - что бы можно было уничтожать их без планов switch (eco_can_build_unit($user, $planet, $unit_id)) { case BUILD_ALLOWED: break; case BUILD_UNIT_BUSY: throw new exception('{Строение занято}', ERR_ERROR); break; // TODO EXCEPTION eco_bld_msg_err_laboratory_upgrading // case BUILD_REQUIRE_NOT_MEET: // TODO EXCEPTION eco_bld_msg_err_laboratory_upgrading // case BUILD_REQUIRE_NOT_MEET: default: if ($build_mode == BUILD_CREATE) { throw new exception('{Требования не удовлетворены}', ERR_ERROR); } break; // TODO EXCEPTION eco_bld_msg_err_requirements_not_meet } $unit_amount = floor(sys_get_param_float('unit_amount', 1)); $unit_amount_qued = $unit_amount; $units_qued = isset($in_que[$unit_id]) ? $in_que[$unit_id] : 0; $unit_level = mrc_get_level($user, $planet, $unit_id, true, true) + $units_qued; if ($unit_max = get_unit_param($unit_id, P_MAX_STACK)) { if ($unit_level >= $unit_max) { throw new exception('{Максимальное количество юнитов данного типа уже достигнуто или будет достигнуто по окончанию очереди}', ERR_ERROR); // TODO EXCEPTION } $unit_amount = max(0, min($unit_amount, $unit_max - $unit_level)); } if ($unit_amount < 1) { throw new exception('{Неправильное количество юнитов - сообщите Администрации}', ERR_ERROR); // TODO EXCEPTION } /* if($unit_max && $unit_level + $unit_amount > $unit_max) { throw new exception("Постройка {$unit_amount} {$lang['tech'][$unit_id]} приведет к привышению максимально возможного количества юнитов данного типа", ERR_ERROR); // TODO EXCEPTION } */ // TODO Переделать eco_unit_busy для всех типов зданий // if(eco_unit_busy($user, $planet, $que, $unit_id)) // { // die('Unit busy'); // TODO EXCEPTION // } if (get_unit_param($unit_id, P_STACKABLE)) { // TODO Поле 'max_Lot_size' для ограничения размера стэка в очереди - то ли в юниты, то ли в очередь if (in_array($unit_id, $group_missile = sn_get_groups('missile'))) { // TODO Поле 'container' - указывает на родительску структуру, в которой хранится данный юнит и по вместительности которой нужно применять размер юнита $used_silo = 0; foreach ($group_missile as $missile_id) { $missile_qued = isset($in_que[$missile_id]) ? $in_que[$missile_id] : 0; $used_silo += (mrc_get_level($user, $planet, $missile_id, true, true) + $missile_qued) * get_unit_param($missile_id, P_UNIT_SIZE); } $free_silo = mrc_get_level($user, $planet, STRUC_SILO) * get_unit_param(STRUC_SILO, P_CAPACITY) - $used_silo; if ($free_silo <= 0) { throw new exception('{Ракетная шахта уже заполнена или будет заполнена по окончанию очереди}', ERR_ERROR); // TODO EXCEPTION } $unit_size = get_unit_param($unit_id, P_UNIT_SIZE); if ($free_silo < $unit_size) { throw new exception("{В ракетной шахте нет места для {$lang['tech'][$unit_id]}}", ERR_ERROR); // TODO EXCEPTION } $unit_amount = max(0, min($unit_amount, floor($free_silo / $unit_size))); } $unit_level = $new_unit_level = 0; } else { $unit_amount = 1; if ($que_id == QUE_STRUCTURES) { // if($build_mode == BUILD_CREATE && eco_planet_fields_max($planet) - $planet['field_current'] - $que['sectors'][$planet['id']] <= 0) $sectors_qued = is_array($in_que) ? array_sum($in_que) : 0; if ($build_mode == BUILD_CREATE && eco_planet_fields_max($planet) - $planet['field_current'] - $sectors_qued <= 0) { throw new exception('{Не хватает секторов на планете}', ERR_ERROR); // TODO EXCEPTION } // И что это я такое написал? Зачем? //if($build_mode == BUILD_DESTROY && $planet['field_current'] <= $que['amounts'][$que_id]) //{ // die('Too much buildings'); // TODO EXCEPTION //} } $build_multiplier = $build_mode == BUILD_CREATE ? 1 : -1; $new_unit_level = $unit_level + $unit_amount * $build_multiplier; } $build_data = eco_get_build_data($user, $planet, $unit_id, $unit_level); $unit_amount = min($build_data['CAN'][$build_mode], $unit_amount); if ($unit_amount < 0) { throw new exception('{Не хватает ресурсов}', ERR_ERROR); // TODO EXCEPTION } if ($new_unit_level < 0) { throw new exception('{Нельзя уничтожить больше юнитов, чем есть}', ERR_ERROR); // TODO EXCEPTION } if ($build_data['RESULT'][$build_mode] != BUILD_ALLOWED) { throw new exception('{Строительство блокировано}', ERR_ERROR); // TODO EXCEPTION } // $unit_amount = min($unit_amount, MAX_FLEET_OR_DEFS_PER_ROW); $unit_amount_qued = 0; while ($unit_amount > 0 && count($que['ques'][$que_id][$user['id']][$planet_id]) < $que_max_length) { $place = min($unit_amount, MAX_FLEET_OR_DEFS_PER_ROW); que_add_unit($unit_id, $user, $planet, $build_data, $new_unit_level, $place, $build_mode); $unit_amount -= $place; $que = que_get($user['id'], $planet['id'], $que_id, true); $unit_amount_qued += $place; } // pdump($que); /* pdump($que = que_get($user['id'], $planet['id'], $que_id, true)); */ // die(); // if(count($que['ques'][$que_id][$user['id']][$planet_id]) >= $que_max_length) sn_db_transaction_commit(); if ($redirect) { sys_redirect("{$_SERVER['PHP_SELF']}?mode=" . sys_get_param_str('mode') . "&ally_id=" . sys_get_param_id('ally_id')); die; } $operation_result = array('STATUS' => ERR_NONE, 'MESSAGE' => '{Строительство начато}'); } catch (exception $e) { sn_db_transaction_rollback(); $operation_result = array('STATUS' => in_array($e->getCode(), array(ERR_NONE, ERR_WARNING, ERR_ERROR)) ? $e->getCode() : ERR_ERROR, 'MESSAGE' => $e->getMessage()); } if (!empty($operation_result['MESSAGE'])) { $operation_result['MESSAGE'] .= ' ' . ($unit_amount_qued ? $unit_amount_qued : $unit_amount) . 'x[' . $lang['tech'][$unit_id] . ']' . (isset($planet['id']) ? ' на ' . $planet['name'] : '') . '}'; } return $operation_result; }
/** * announce.php * * @v4 Security checks by Gorlum for http://supernova.ws * @v2 (c) copyright 2010 by Gorlum for http://supernova.ws * based on admin/activeplanet.php (c) 2008 for XNova */ $allow_anonymous = true; include 'common.' . substr(strrchr(__FILE__, '.'), 1); $template = gettemplate('announce', true); $announce_id = sys_get_param_int('id'); $text = sys_get_param_str('text'); $announce_time = sys_get_param_str('dtDateTime'); $detail_url = sys_get_param_str('detail_url'); $mode = sys_get_param_str('mode'); if ($sys_user_logged_in) { doquery("UPDATE {{users}} SET `news_lastread` = 0 WHERE `id` = {$user['id']} LIMIT 1;"); } if ($user['authlevel'] >= 3) { if (!empty($text)) { $idAnnounce = sys_get_param_int('id'); $dtDateTime = empty($announce_time) ? "FROM_UNIXTIME(" . time() . ")" : "'{$announce_time}'"; if ($mode == 'edit') { doquery("UPDATE {{announce}} SET `tsTimeStamp`={$dtDateTime}, `strAnnounce`='{$text}', detail_url = '{$detail_url}' WHERE `idAnnounce`={$idAnnounce}"); } else { doquery("INSERT INTO {{announce}} SET `tsTimeStamp`={$dtDateTime}, `strAnnounce`='{$text}', detail_url = '{$detail_url}'"); } doquery("UPDATE {{users}} SET `news_lastread` = `news_lastread` + 1;"); if (sys_get_param_int('news_mass_mail')) { $text = $_POST['text'];
AdminMessage($lang['adm_err_denied']); } $template = gettemplate("admin/adm_metamatter", true); $message = ''; $message_status = ERR_ERROR; if ($points = sys_get_param_float('points')) { try { $username = sys_get_param_str_unsafe('id_user'); if (empty($username)) { throw new Exception($lang['adm_mm_no_dest']); } $an_account = new Account(classSupernova::$auth->account->db); if (!$an_account->db_get_by_id($username) && !$an_account->db_get_by_name($username) && !$an_account->db_get_by_email($username)) { throw new Exception(sprintf($lang['adm_mm_user_none'], $username)); } if (!$an_account->metamatter_change(RPG_ADMIN, $points, sprintf($lang['adm_matter_change_log_record'], $an_account->account_id, db_escape($an_account->account_name), $user['id'], db_escape($user['username']), db_escape(sys_get_param_str('reason'))))) { throw new Exception($lang['adm_mm_add_err']); } $message = sprintf($lang['adm_mm_user_added'], $an_account->account_name, $an_account->account_id, pretty_number($points)); $isNoError = true; $message_status = ERR_NONE; } catch (Exception $e) { $message = $e->getMessage(); } //} elseif($id_user) { // // Points is empty but destination is set - this again means error // $message = $lang['adm_mm_no_quant']; } if ($message_status == ERR_ERROR) { $template->assign_vars(array('ID_USER' => $username, 'POINTS' => $points, 'REASON' => $reason)); }
$query = doquery("SELECT blitz_name, blitz_password, blitz_online FROM {{blitz_registrations}} WHERE `round_number` = {$current_round} ORDER BY `id`;"); while ($row = db_fetch($query)) { $blitz_generated[] = "{$row['blitz_name']},{$row['blitz_password']}"; $row['blitz_online'] ? $blitz_prize_players_active++ : false; $blitz_players++; } $blitz_prize_dark_matter = $blitz_prize_players_active * 20000; $blitz_prize_places = ceil($blitz_prize_players_active / 5); /* 'Игрок10' 'Игрок14' 'Игрок23' 'Игрок32' 'Игрок40' */ if (sys_get_param_str('prize_calculate') && $blitz_prize_players_active && ($blitz_prize_dark_matter_actual = sys_get_param_int('blitz_prize_dark_matter'))) { // $blitz_prize_dark_matter_actual = sys_get_param_int('blitz_prize_dark_matter'); $blitz_prize_places_actual = sys_get_param_int('blitz_prize_places'); sn_db_transaction_start(); $query = doquery("SELECT * FROM {{blitz_registrations}} WHERE `round_number` = {$current_round} ORDER BY `blitz_place` FOR UPDATE;"); while ($row = db_fetch($query)) { if (!$row['blitz_place']) { continue; } $blitz_prize_dark_matter_actual = round($blitz_prize_dark_matter_actual / 2); $blitz_prize_places_actual--; $reward = $blitz_prize_dark_matter_actual - $row['blitz_reward_dark_matter']; pdump("{{$row['id']}} {$row['blitz_name']}, Place {$row['blitz_place']}, Prize places {$blitz_prize_places_actual}, Prize {$reward}", $row['id']); if ($reward) { rpg_points_change($row['user_id'], RPG_BLITZ, $reward, sprintf($lang['sys_blitz_reward_log_message'], $row['blitz_place'], $row['blitz_name'])); doquery("UPDATE {{blitz_registrations}} SET blitz_reward_dark_matter = blitz_reward_dark_matter + ({$reward}) WHERE id = {$row['id']} AND `round_number` = {$current_round};");
<?php try { $template = gettemplate('universe_rename', true); if ($uni_galaxy < 1 || $uni_galaxy > $config->game_maxGalaxy) { throw new exception($lang['uni_msg_error_wrong_galaxy'], ERR_ERROR); } if ($uni_system < 0 || $uni_system > $config->game_maxSystem) { throw new exception($lang['uni_msg_error_wrong_system'], ERR_ERROR); } $uni_row = doquery("select * from `{{universe}}` where `universe_galaxy` = {$uni_galaxy} and `universe_system` = {$uni_system} limit 1;", '', true); $uni_row['universe_price'] += $uni_system ? $config->uni_price_system : $config->uni_price_galaxy; $uni_row['universe_name'] = strip_tags($uni_row['universe_name'] ? $uni_row['universe_name'] : ($uni_system ? "{$lang['sys_system']} [{$uni_galaxy}:{$uni_system}]" : "{$lang['sys_galaxy']} {$uni_galaxy}")); if (sys_get_param_str('uni_name_submit')) { $uni_row['universe_name'] = strip_tags(sys_get_param_str('uni_name')); $uni_price = sys_get_param_float('uni_price'); if ($uni_price < $uni_row['universe_price']) { throw new exception($lang['uni_msg_error_low_price'], ERR_ERROR); } $uni_row['universe_price'] = $uni_price; sn_db_transaction_start(); $user = db_user_by_id($user['id'], true); // if($user[get_unit_param(RES_DARK_MATTER, P_NAME)] < $uni_price) if (mrc_get_level($user, null, RES_DARK_MATTER) < $uni_price) { throw new exception($lang['uni_msg_error_no_dm'], ERR_ERROR); } if (!rpg_points_change($user['id'], RPG_RENAME, -$uni_price, "Renaming [{$uni_galaxy}:{$uni_system}] to " . sys_get_param_str_unsafe('uni_name'))) { throw new exception($lang['sys_msg_err_update_dm'], ERR_ERROR); } doquery("replace {{universe}} set `universe_galaxy` = {$uni_galaxy}, `universe_system` = {$uni_system}, `universe_name` = '{$uni_row['universe_name']}', `universe_price` = {$uni_row['universe_price']};"); $debug->warning(sprintf($lang['uni_msg_admin_rename'], $user['id'], $user['username'], $uni_price, $uni_system ? $lang['uni_system_of'] : $lang['uni_galaxy_of'], $uni_galaxy, $uni_system ? ":{$uni_system}" : '', strip_tags(sys_get_param_str_unsafe('uni_name'))), $lang['uni_naming'], LOG_INFO_UNI_RENAME);
if ($array_name == 'type' && $who == 2 && !in_array($key, $sn_group_stat_common)) { continue; } $header = isset($value['header']) ? $value['header'] : $lang['stat_type'][$key]; $template->assign_block_vars($array_name, array('ID' => $key, 'HEADER' => $header, 'SELECTED' => $key == $selected)); } } $allow_anonymous = true; include 'common.' . substr(strrchr(__FILE__, '.'), 1); lng_include('stat'); $sn_group_stat_common = sn_get_groups('STAT_COMMON'); $who = sys_get_param_int('who', 1); $type = sys_get_param_int('type'); $type = $who != 1 && !in_array($type, $sn_group_stat_common) ? 1 : $type; $range = sys_get_param_int('range', 1); $source = sys_get_param_str('source'); $template = gettemplate('stat_statistics', true); $subject_list = array(1 => array('header' => $lang['stat_player'])); if (!$source) { $subject_list[2] = array('header' => $lang['stat_allys']); } stat_tpl_assign($template, $who, 'subject', $subject_list, $sn_group_stat_common); $stat_types = array(STAT_TOTAL => array('type' => 'total'), STAT_FLEET => array('type' => 'fleet'), STAT_TECH => array('type' => 'tech'), STAT_BUILDING => array('type' => 'build'), STAT_DEFENSE => array('type' => 'defs'), STAT_RESOURCE => array('type' => 'res'), STAT_RAID_TOTAL => array('type' => 'raids'), STAT_RAID_WON => array('type' => 'raidswin'), STAT_RAID_LOST => array('type' => 'raidsloose'), STAT_LVL_BUILDING => array('type' => 'lvl_minier'), STAT_LVL_TECH => array('type' => 'player_rpg_tech_level'), STAT_LVL_RAID => array('type' => 'lvl_raid')); stat_tpl_assign($template, $type, 'type', $stat_types, $sn_group_stat_common); $Rank = $stat_types[$type]['type']; $is_common_stat = in_array($type, $sn_group_stat_common); $start = floor($range / 100 % 100) * 100; $query = db_stat_list_statistic($who, $is_common_stat, $Rank, $start, $source); // TODO - Не работает, если игроков на Блице > 100 $record_count = $source ? db_num_rows($query) : ($who == 1 ? db_user_count() : db_ally_count()); // pdump($record_count, '$record_count');
default: throw new exception('note_warn_no_range', ERR_WARNING); break; } sn_db_transaction_start(); doquery("DELETE FROM {{notes}} WHERE `owner` = {$user['id']} {$query_where};"); sn_db_transaction_commit(); throw new exception($note_id_edit ? 'note_err_none_changed' : 'note_err_none_added', ERR_NONE); } catch (exception $e) { $note_id_edit = 0; sn_db_transaction_rollback(); $result[] = array('STATUS' => in_array($e->getCode(), array(ERR_NONE, ERR_WARNING, ERR_ERROR)) ? $e->getCode() : ERR_ERROR, 'MESSAGE' => $lang[$e->getMessage()]); } } elseif (($note_title = sys_get_param_str('note_title')) || ($note_text = sys_get_param_str('note_text'))) { $note_title == db_escape($lang['note_new_title']) ? $note_title = '' : false; ($note_text = sys_get_param_str('note_text')) == db_escape($lang['note_new_text']) ? $note_text = '' : false; try { if (!$note_text && !$note_title) { throw new exception('note_err_note_empty', ERR_WARNING); } $note_priority = min(sys_get_param_id('note_priority', 2), count($note_priority_classes) - 1); $note_galaxy = max(0, min(sys_get_param_id('note_galaxy'), $config->game_maxGalaxy)); $note_system = max(0, min(sys_get_param_id('note_system'), $config->game_maxSystem)); $note_planet = max(0, min(sys_get_param_id('note_planet'), $config->game_maxPlanet + 1)); $note_planet_type = max(1, min(sys_get_param_id('note_planet_type', 1), count($lang['sys_planet_type']))); $note_sticky = intval(sys_get_param_id('note_sticky')) ? 1 : 0; sn_db_transaction_start(); if ($note_id_edit) { $check_note_id = doquery("SELECT `id`, `owner` FROM {{notes}} WHERE `id` = {$note_id_edit} LIMIT 1 FOR UPDATE", true); if (!$check_note_id) { throw new exception('note_err_note_not_found', ERR_ERROR);
$template->assign_block_vars('result', array('MESSAGE' => sprintf($lang['pay_msg_mm_purchase_test']), 'STATUS' => -1)); } } } $unit_available_amount_list =& sn_module_payment::$bonus_table; $request = array('metamatter' => sys_get_param_float('metamatter')); if (!$request['metamatter']) { unset($_POST); } $payment_methods_available = array_combine(array_keys(sn_module_payment::$payment_methods), array_fill(0, count(sn_module_payment::$payment_methods), null)); array_walk($payment_methods_available, function (&$value, $index) { $value = !empty(sn_module_payment::$payment_methods[$index]) ? array_combine(array_keys(sn_module_payment::$payment_methods[$index]), array_fill(0, count(sn_module_payment::$payment_methods[$index]), null)) : $value; }); // pdump($payment_methods_available); $payment_module_valid = false; $payment_module = sys_get_param_str('payment_module'); foreach ($sn_module_list['payment'] as $module_name => $module) { if (!is_object($module) || !$module->manifest['active']) { continue; } lng_include($module_name, $module->manifest['root_relative']); foreach (sn_module_payment::$payment_methods as $payment_type_id => $available_methods) { foreach ($available_methods as $payment_method => $payment_currency) { if (isset($module->manifest['payment_method'][$payment_method])) { $payment_methods_available[$payment_type_id][$payment_method][$module_name] = $module->manifest['payment_method'][$payment_method]; } } } $payment_module_valid = $payment_module_valid || $module_name == $payment_module; } global $template_result;
<?php include 'common.' . substr(strrchr(__FILE__, '.'), 1); if (sys_get_param_str('return_fleet')) { $fleet_id = sys_get_param_id('fleet_id'); if ($fleet_id) { sn_db_transaction_start(); $FleetRow = doquery("SELECT * FROM {{fleets}} WHERE `fleet_id` = '{$fleet_id}' LIMIT 1 FOR UPDATE;", '', true); if ($FleetRow['fleet_owner'] == $user['id'] && $FleetRow['fleet_mess'] == 0) { $ReturnFlyingTime = ($FleetRow['fleet_end_stay'] != 0 && $FleetRow['fleet_start_time'] < SN_TIME_NOW ? $FleetRow['fleet_start_time'] : SN_TIME_NOW) - $FleetRow['start_time'] + SN_TIME_NOW + 1; doquery("UPDATE {{fleets}} SET `fleet_start_time` = " . SN_TIME_NOW . ", `fleet_group` = 0, `fleet_end_stay` = '0', `fleet_end_time` = '{$ReturnFlyingTime}', `fleet_target_owner` = '{$user['id']}', `fleet_mess` = '1' WHERE `fleet_id` = '{$fleet_id}' LIMIT 1;"); if ($FleetRow['fleet_group']) { // TODO: Make here to delete only one AKS - by adding aks_fleet_count to AKS table doquery('DELETE FROM {{aks}} WHERE `id` NOT IN (SELECT DISTINCT `fleet_group` FROM {{fleets}});'); } } elseif ($FleetRow['fleet_id'] && $FleetRow['fleet_owner'] != $user['id']) { $debug->warning('Trying to return fleet that not belong to user', 'Hack attempt', 302, array('base_dump' => true, 'fleet_row' => $FleetRow)); sn_db_transaction_rollback(); die('Hack attempt 302'); } sn_db_transaction_commit(); } } lng_include('overview'); lng_include('fleet'); if (!$planetrow) { message($lang['fl_noplanetrow'], $lang['fl_error']); } $template = gettemplate('flying_fleets', true); $i = 0; $fleet_query = doquery("SELECT * FROM {{fleets}} WHERE fleet_owner={$user['id']};");
$i++; } if (!empty($ranks)) { ali_rank_list_save($ranks); } } $ranks = ally_get_ranks($ally); $isAllyOwner = $ally['ally_owner'] == $user['id']; $user_can_send_mails = $ranks[$user['ally_rank_id']]['mail'] || $isAllyOwner; $userCanPostForum = $ranks[$user['ally_rank_id']]['forum'] || $isAllyOwner; $user_onlinestatus = $ranks[$user['ally_rank_id']]['online'] || $isAllyOwner; $user_admin_applications = $ranks[$user['ally_rank_id']]['invite'] || $isAllyOwner; $user_can_kick = $ranks[$user['ally_rank_id']]['kick'] || $isAllyOwner; $user_can_negotiate = $ranks[$user['ally_rank_id']]['diplomacy'] || $isAllyOwner; $user_can_edit_rights = $user_admin = $ranks[$user['ally_rank_id']]['admin'] || $isAllyOwner; $edit = sys_get_param_str('edit'); ally_pre_call(); switch ($mode) { case 'admin': if (!array_key_exists($edit, $sn_ali_admin_internal)) { $edit = 'default'; } if ($sn_ali_admin_internal[$edit]['include']) { require "includes/{$sn_ali_admin_internal[$edit]['include']}"; } if (isset($sn_ali_admin_internal[$edit]['function']) && is_callable($sn_ali_admin_internal[$edit]['function'])) { call_user_func($sn_ali_admin_internal[$edit]['function']); } break; case 'memberslist': require 'includes/alliance/ali_internal_members.inc';
* lostpassword.php * * @version 2.0 copyright (c) 2009-2011 by Gorlum for http://supernova.ws * [!] Fully rewrote * [+] Confrimation code system * [+] Random password generation * @version 1.1 copyright (c) 2009-2011 by Gorlum for http://supernova.ws * [~] Security checks & tests * @version 1.0 copyright 2008 by Tom1991 for XNova * [!] Création (Tom) **/ include 'includes/init.' . substr(strrchr(__FILE__, '.'), 1); lng_include('login'); $id_ref = sys_get_param_int('id_ref'); $email = sys_get_param_str('email'); $confirm = sys_get_param_str('confirm'); $confirm_password_reset = CONFIRM_PASSWORD_RESET; if ($confirm) { $last_confirm = doquery("SELECT *, UNIX_TIMESTAMP(`create_time`) as `unix_time` FROM {{confirmations}} WHERE `code` = '{$confirm}' LIMIT 1;", '', true); if ($last_confirm['id'] && $time_now - $last_confirm['unix_time'] <= 3 * 24 * 60 * 60) { doquery("DELETE FROM {{confirmations}} WHERE `id` = '{$last_confirm['id']}' LIMIT 1;"); $user_data = doquery("SELECT * FROM {{users}} WHERE `id` = '{$last_confirm['id_user']}' LIMIT 1;", '', true); if (!$user_data['id']) { message($lang['log_lost_err_code'], $lang['sys_error']); } if ($user_data['authlevel']) { message($lang['log_lost_err_admin'], $lang['sys_error']); } $new_password = sys_random_string(); $md5 = md5($new_password); $result = doquery("UPDATE {{users}} SET `password` = '{$md5}' WHERE `id` = '{$last_confirm['id_user']}' LIMIT 1;");
$planet_teleport_next = SN_TIME_NOW + $config->planet_teleport_timeout; db_planet_set_by_gspt($planetrow['galaxy'], $planetrow['system'], $planetrow['planet'], PT_ALL, "galaxy = {$new_coordinates['galaxy']}, system = {$new_coordinates['system']}, planet = {$new_coordinates['planet']}, planet_teleport_next = {$planet_teleport_next}"); 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))) {
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); }
/** * overview.php * * @version 1.0s - Security checked for SQL-injection by Gorlum for http://supernova.ws * @version 1.0 * @copyright 2008 by ??????? for XNova */ define('INSIDE', true); define('INSTALL', false); define('IN_ADMIN', true); require '../common.' . substr(strrchr(__FILE__, '.'), 1); if ($user['authlevel'] < 1) { AdminMessage($lang['adm_err_denied']); } $GET_cmd = sys_get_param_str('cmd'); $TypeSort = sys_get_param_str('type'); if ($GET_cmd == 'sort') { } else { $TypeSort = "id"; } $PageTPL = gettemplate('admin/overview_body'); $RowsTPL = gettemplate('admin/overview_rows'); $parse = $lang; $parse['dpath'] = $dpath; $Last15Mins = doquery("SELECT * FROM {{users}} WHERE `onlinetime` >= '" . (time() - 15 * 60) . "' ORDER BY `" . $TypeSort . "` ASC;"); $Count = 0; $Color = "lime"; while ($TheUser = mysql_fetch_assoc($Last15Mins)) { if ($PrevIP != "") { if ($PrevIP == $TheUser['user_lastip']) { $Color = "red";
* @version 1.0s - Security checked for SQL-injection by Gorlum for http://supernova.ws * @version 1.0 * @copyright 2008 by ??????? for XNova */ define('INSIDE', true); define('INSTALL', false); define('IN_ADMIN', true); require '../common.' . substr(strrchr(__FILE__, '.'), 1); if ($user['authlevel'] < 3) { AdminMessage($lang['adm_err_denied']); } $GET_action = sys_get_param_str('action'); $GET_result = sys_get_param_str('result'); $Pattern = sys_get_param_str('player'); $NewLvl = intval($_GET['authlvl']); $ip = sys_get_param_str('ip'); $PanelMainTPL = gettemplate('admin/admin_panel_main'); $parse = $lang; $parse['adm_sub_form1'] = ''; $parse['adm_sub_form2'] = ''; $parse['adm_sub_form3'] = ''; // Afficher les templates if (isset($GET_result)) { switch ($GET_result) { case 'usr_search': $SelUser = db_user_by_username('%' . $Pattern . '%', false, '*', true, true); $UsrMain = db_planet_by_id($SelUser['id_planet'], false, 'name'); $bloc = $lang; $bloc['answer1'] = $SelUser['id']; $bloc['answer2'] = $SelUser['username']; $bloc['answer3'] = $SelUser['user_lastip'];
* @version 2.0 - full rewrote * @copyright 2014 by Gorlum for http://supernova.ws * */ define('INSIDE', true); define('INSTALL', false); define('IN_ADMIN', true); require '../common.' . substr(strrchr(__FILE__, '.'), 1); if ($user['authlevel'] < 3) { AdminMessage($lang['adm_err_denied']); } if ($delete = sys_get_param_id('delete')) { doquery("DELETE FROM `{{logs}}` WHERE `log_id` = {$delete} LIMIT 1;"); } elseif (sys_get_param_str('delete_update_info')) { doquery("DELETE FROM `{{logs}}` WHERE `log_code` in (103, 180, 191);"); } elseif (sys_get_param_str('deleteall') == 'yes') { // doquery("TRUNCATE TABLE `{{logs}}`"); } if ($detail = sys_get_param_id('detail')) { $template = gettemplate('admin/adm_log_main_detail', true); $errorInfo = doquery("SELECT * FROM `{{logs}}` WHERE `log_id` = {$detail} LIMIT 1;", true); $error_dump = unserialize($errorInfo['log_dump']); if (is_array($error_dump)) { foreach ($error_dump as $key => $value) { $v = array('VAR_NAME' => $key, 'VAR_VALUE' => $key == 'query_log' ? $value : dump($value, $key)); $template->assign_block_vars('vars', $v); } } $template->assign_vars($errorInfo); } else { $template = gettemplate('admin/adm_log_main', true);
function sn_tpl_render_topnav(&$user, $planetrow) { if (!is_array($user)) { return ''; } global $lang, $config; $GET_mode = sys_get_param_str('mode'); $template = gettemplate('topnav', true); /* $planetrow = $planetrow ? $planetrow : $user['current_planet']; sn_db_transaction_start(); $planetrow = sys_o_get_updated($user, $planetrow, SN_TIME_NOW); sn_db_transaction_commit(); $planetrow = $planetrow['planet']; */ $ThisUsersPlanets = db_planet_list_sorted($user); // while ($CurPlanet = db_fetch($ThisUsersPlanets)) foreach ($ThisUsersPlanets as $CurPlanet) { if (!$CurPlanet['destruyed']) { $fleet_listx = flt_get_fleets_to_planet($CurPlanet); $template->assign_block_vars('topnav_planets', array('ID' => $CurPlanet['id'], 'NAME' => $CurPlanet['name'], 'PLIMAGE' => $CurPlanet['image'], 'FLEET_ENEMY' => $fleet_listx['enemy']['count'], 'COORDS' => uni_render_coordinates($CurPlanet), 'SELECTED' => $CurPlanet['id'] == $user['current_planet'] ? ' selected' : '')); } } $fleet_flying_list = tpl_get_fleets_flying($user); tpl_topnav_event_build($template, $fleet_flying_list[0]); tpl_topnav_event_build($template, $fleet_flying_list[MT_EXPLORE], 'expedition'); que_tpl_parse($template, QUE_RESEARCH, $user); $str_date_format = "%3\$02d %2\$0s %1\$04d {$lang['top_of_year']} %4\$02d:%5\$02d:%6\$02d"; $time_now_parsed = getdate(SN_TIME_NOW); $time_local_parsed = getdate(defined('SN_CLIENT_TIME_LOCAL') ? SN_CLIENT_TIME_LOCAL : SN_TIME_NOW); if ($config->game_news_overview) { nws_render($template, "WHERE UNIX_TIMESTAMP(`tsTimeStamp`) >= {$user['news_lastread']}", $config->game_news_overview); } $notes_query = doquery("SELECT * FROM {{notes}} WHERE `owner` = {$user['id']} AND `sticky` = 1 ORDER BY priority DESC, time DESC"); while ($note_row = db_fetch($notes_query)) { note_assign($template, $note_row); } $premium_lvl = mrc_get_level($user, false, UNIT_PREMIUM, true, true); $template->assign_vars(array('QUE_ID' => QUE_RESEARCH, 'QUE_HTML' => 'topnav', 'RESEARCH_ONGOING' => (bool) $user['que'], 'TIME_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']), 'TIME_TEXT_LOCAL' => sprintf($str_date_format, $time_local_parsed['year'], $lang['months'][$time_local_parsed['mon']], $time_local_parsed['mday'], $time_local_parsed['hours'], $time_local_parsed['minutes'], $time_local_parsed['seconds']), 'GAME_BLITZ_REGISTER' => $config->game_blitz_register, 'GAME_BLITZ_REGISTER_TEXT' => $lang['sys_blitz_registration_mode_list'][$config->game_blitz_register], 'BLITZ_REGISTER_OPEN' => $config->game_blitz_register == BLITZ_REGISTER_OPEN, 'BLITZ_REGISTER_CLOSED' => $config->game_blitz_register == BLITZ_REGISTER_CLOSED, 'BLITZ_REGISTER_SHOW_LOGIN' => $config->game_blitz_register == BLITZ_REGISTER_SHOW_LOGIN, 'BLITZ_REGISTER_DISCLOSURE_NAMES' => $config->game_blitz_register == BLITZ_REGISTER_DISCLOSURE_NAMES, 'GAME_BLITZ' => $config->game_mode == GAME_BLITZ, 'USERS_ONLINE' => $config->var_online_user_count, 'USERS_TOTAL' => $config->users_amount, 'USER_RANK' => $user['total_rank'], 'USER_NICK' => $user['username'], 'USER_AVATAR' => $user['avatar'], 'USER_AVATARID' => $user['id'], 'USER_PREMIUM' => $premium_lvl, 'USER_RACE' => $user['player_race'], 'TOPNAV_CURRENT_PLANET' => $user['current_planet'], 'TOPNAV_MODE' => $GET_mode, 'TOPNAV_DARK_MATTER' => mrc_get_level($user, '', RES_DARK_MATTER), 'TOPNAV_DARK_MATTER_TEXT' => pretty_number(mrc_get_level($user, '', RES_DARK_MATTER)), 'TOPNAV_METAMATTER' => mrc_get_level($user, '', RES_METAMATTER), 'TOPNAV_METAMATTER_TEXT' => pretty_number(mrc_get_level($user, '', RES_METAMATTER)), 'TOPNAV_PAYMENT' => sn_module_get_active_count('payment') && !defined('SN_GOOGLE'), 'TOPNAV_MESSAGES_ADMIN' => $user['msg_admin'], 'TOPNAV_MESSAGES_PLAYER' => $user['mnl_joueur'], 'TOPNAV_MESSAGES_ALLIANCE' => $user['mnl_alliance'], 'TOPNAV_MESSAGES_ATTACK' => $user['mnl_attaque'], 'TOPNAV_MESSAGES_ALL' => $user['new_message'], 'TOPNAV_FLEETS_FLYING' => count($fleet_flying_list[0]), 'TOPNAV_FLEETS_TOTAL' => GetMaxFleets($user), 'TOPNAV_EXPEDITIONS_FLYING' => count($fleet_flying_list[MT_EXPLORE]), 'TOPNAV_EXPEDITIONS_TOTAL' => get_player_max_expeditons($user), 'TOPNAV_QUEST_COMPLETE' => get_quest_amount_complete($user['id']), 'GAME_NEWS_OVERVIEW' => $config->game_news_overview)); if (defined('SN_RENDER_NAVBAR_PLANET') && SN_RENDER_NAVBAR_PLANET === true || $user['option_list'][OPT_INTERFACE]['opt_int_navbar_resource_force'] && SN_RENDER_NAVBAR_PLANET !== false) { tpl_set_resource_info($template, $planetrow); $template->assign_vars(array('SN_RENDER_NAVBAR_PLANET' => true, 'SN_NAVBAR_HIDE_FLEETS' => true)); } return $template; }
$sym_defender = $unpacked['D']; $sym_attacker = $unpacked['A']; } else { $sym_defender = array(0 => $sym_defender); $sym_attacker = array(1 => $sym_attacker); } if ($_POST['submit'] || $execute) { $replay = sn_ube_simulator_encode_replay($sym_defender, 'D'); $replay .= sn_ube_simulator_encode_replay($sym_attacker, 'A'); $combat_data = sn_ube_simulator_fleet_converter($sym_attacker, $sym_defender); $combat_data[UBE_OPTIONS][UBE_METHOD] = $config->game_ube_method ? $config->game_ube_method : 0; sn_ube_combat($combat_data); if (!sys_get_param_int('simulator') || sys_get_param_str('reload')) { sn_ube_report_save($combat_data); } if (sys_get_param_str('reload')) { $combat_data = sn_ube_report_load($combat_data[UBE_REPORT_CYPHER]); } //debug($combat_data); // Рендерим их в темплейт sn_ube_report_generate($combat_data, $template_result); $template_result['MICROTIME'] = $combat_data[UBE_TIME_SPENT]; $template = gettemplate('ube_combat_report', true); $template->assign_recursive($template_result); display($template, '', false, '', false, false, true); } else { $template = gettemplate('simulator', true); $techs_and_officers = array(TECH_WEAPON, TECH_SHIELD, TECH_ARMOR, MRC_ADMIRAL); foreach ($techs_and_officers as $tech_id) { if (!$sym_attacker[1][$tech_id]) { $sym_attacker[1][$tech_id] = mrc_get_level($user, false, $tech_id);
<?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);