Exemplo n.º 1
0
function asset_process_session_request()
{
    $t =& $GLOBALS["t"];
    $tname = $t["title"];
    $tview = $t["view"];
    $tfolder = $t["folder"];
    if (SYNC4J and !empty($GLOBALS["sel_folder"]["anchor"])) {
        _asset_process_syncml_requests();
    }
    if ($tview == "search") {
        if (empty($_SESSION["_" . $tfolder]["request"]["search"])) {
            $_SESSION["_" . $tfolder]["request"]["search"] = array("query" => "*", "module" => "", "subfolders" => 1);
        }
        if (isset($_REQUEST["search"])) {
            if (empty($_REQUEST["module"])) {
                $_REQUEST["module"] = "";
            }
            if (empty($_REQUEST["similar"])) {
                $_REQUEST["similar"] = "";
            }
            if (!isset($_REQUEST["subfolders"])) {
                $_REQUEST["subfolders"] = 1;
            }
            $_SESSION["_" . $tfolder]["request"]["search"] = array("query" => $_REQUEST["search"], "module" => $_REQUEST["module"], "similar" => $_REQUEST["similar"], "subfolders" => $_REQUEST["subfolders"]);
        }
        $t["search"] = $_SESSION["_" . $tfolder]["request"]["search"];
        $value = modify::searchindex($t["search"]["query"]);
        $search_snd = "";
        if (!empty($t["search"]["similar"])) {
            $search_arr = explode(" ", $value);
            foreach ($search_arr as $key => $value) {
                $val = soundex($value);
                if ($val != "0000") {
                    $search_arr[$key] = $val;
                } else {
                    unset($search_arr[$key]);
                }
            }
            $search_snd = implode(" ", $search_arr);
        }
        if ($search_snd != "") {
            $search_snd = "%" . $search_snd . "%";
        }
        if ($value != "") {
            $term_two = "%" . $value . "%";
        } else {
            $term_two = "";
        }
        $search_rights = str_replace("r@right@_", "t.rread_", $_SESSION["permission_sql"]) . " and " . str_replace("r@right@_", "s.rread_", $_SESSION["permission_sql"]);
        if (!isset($GLOBALS["sel_folder"]["lft"])) {
            $folder = array("lft" => 0, "rgt" => 0);
        } else {
            $folder = $GLOBALS["sel_folder"];
        }
        $vars = array("lft" => $folder["lft"], "rgt" => $folder["rgt"], "search" => $value, "search2" => $term_two, "search_snd" => $search_snd, "module" => $t["search"]["module"], "subfolders" => $t["search"]["subfolders"]);
        $t["sqlvars"] = array_merge($t["sqlvars"], $vars);
        $t["sqlvarsnoquote"] = array_merge($t["sqlvarsnoquote"], array("search_rights" => $search_rights));
    }
    if ($t["default_sql"] != "" and $t["default_sql"] != "no_select") {
        $matches = "";
        if (preg_match_all("|@(.*?)@|i", $t["default_sql"], $matches, PREG_SET_ORDER)) {
            foreach ($matches as $match) {
                if (count($match) != 2) {
                    continue;
                }
                $req_key = $match[1];
                if (isset($_SESSION[$req_key])) {
                    $t["default_sql"] = str_replace("@" . $req_key . "@", sys_correct_quote($_SESSION[$req_key]), $t["default_sql"]);
                }
            }
        }
    }
    if (isset($_REQUEST["session_remove_request"])) {
        $_SESSION["_" . $tfolder]["request"] = array();
        $_SESSION["_" . $tfolder][$tview] = array();
    }
    if (isset($_REQUEST["subitem"])) {
        $_SESSION["_" . $tfolder][$tview]["subitem"] = $_REQUEST["subitem"];
    }
    if (isset($_SESSION["_" . $tfolder][$tview]["subitem"])) {
        $t["subitem"] = $_SESSION["_" . $tfolder][$tview]["subitem"];
    }
    if (isset($_REQUEST["filters"])) {
        $_SESSION["_" . $tfolder][$tview]["filters"] = $_REQUEST["filters"];
    }
    if (isset($_SESSION["_" . $tfolder][$tview]["filters"])) {
        $t["filter"] = $_SESSION["_" . $tfolder][$tview]["filters"];
    }
    if ($t["filter"] != "") {
        $t["sqlfilters"] = array();
        $ops = array("eq", "neq", "lt", "gt", "like", "nlike", "starts", "oneof");
        foreach (explode("||", $t["filter"]) as $key => $filter) {
            $filter = explode("|", $filter);
            if (count($filter) == 3 and isset($t["fields"][$filter[0]]) and in_array($filter[1], $ops)) {
                if (trim($filter[2]) == "") {
                    continue;
                }
                if (!empty($t["search"])) {
                    if ($filter[0] == "lastmodifiedby") {
                        $t["search"]["user"] = $filter[2];
                    }
                    if ($filter[0] == "lastmodified") {
                        $t["search"]["modified"] = array("type" => $filter[1], "value" => $filter[2]);
                    }
                }
                $t["sqlfilters"][] = array("field" => $filter[0], "type" => $filter[1], "value" => $filter[2]);
                if ($t["fields"][$filter[0]]["SIMPLE_TYPE"] == "checkbox") {
                    $filter[2] = $filter[2] == "{t}yes{/t}" ? "1" : "0";
                }
                if ($filter[1] == "oneof") {
                    $filter[2] = explode(",", $filter[2]);
                }
                if (in_array($t["fields"][$filter[0]]["SIMPLE_TYPE"], array("date", "dateselect", "time", "datetime"))) {
                    $filter[2] = modify::datetime_to_int($filter[2]);
                }
                $op = "=";
                $key_var = "@filter_value_" . $key . "@";
                switch ($filter[1]) {
                    case "neq":
                        $op = "!=";
                        break;
                    case "oneof":
                        $op = "in";
                        $key_var = "(" . $key_var . ")";
                        break;
                    case "lt":
                        $op = "<";
                        break;
                    case "gt":
                        $op = ">";
                        break;
                    case "like":
                        $op = "like";
                        $filter[2] = "%" . $filter[2] . "%";
                        break;
                    case "nlike":
                        $op = "not like";
                        $filter[2] = "%" . $filter[2] . "%";
                        break;
                    case "starts":
                        $op = "like";
                        $filter[2] = $filter[2] . "%";
                        break;
                }
                $t["sqlvars"]["filter_value_" . $key] = $filter[2];
                $t["sqlwhere"][] = $filter[0] . " " . $op . " " . $key_var;
                $t["sqlwhere_default"][] = $filter[0] . " " . $op . " " . $key_var;
            }
        }
    }
    if (!empty($t["att"]["ENABLE_ASSET_RIGHTS"])) {
        $t["sqlvarsnoquote"]["permission_sql_read_nq"] = $_SESSION["permission_sql_read"];
        $t["sqlvarsnoquote"]["permission_sql_write_nq"] = $_SESSION["permission_sql_write"];
    }
    foreach ($t["sqlwhere_default"] as $key => $value) {
        if (!preg_match_all("|@(.*?)@|i", $value, $matches, PREG_SET_ORDER)) {
            continue;
        }
        foreach ($matches as $match) {
            if (count($match) != 2) {
                continue;
            }
            $req_key = $match[1];
            if (isset($_SESSION[$req_key])) {
                $t["sqlvars"][$req_key] = $_SESSION[$req_key];
            }
        }
    }
    if ($t["default_sql"] == "" or $t["default_sql"] != "no_select") {
        $vars = array("handler" => $t["handler"], "sqlvarsnoquote" => $t["sqlvarsnoquote"], "default_sql" => $t["default_sql"], "custom_name" => $t["custom_name"]);
        $fcount = $GLOBALS["sel_folder"]["fcount"];
        if (!empty($vars["handler"]) or !empty($vars["default_sql"]) or count($t["sqlvars"]["folders"]) > 1 or !empty($t["custom_name"])) {
            $t["maxdatasets"] = db_count($tname, $t["sqlwhere_default"], $t["sqlvars"], $vars);
        } else {
            if (!sys_strbegins($tname, "simple_sys_") and ($t["sqlwhere_default"] == array("folder in (@folders@)") or $fcount == 0)) {
                $t["maxdatasets"] = $fcount;
            } else {
                if ($fcount > 100) {
                    $cid = "dbcount_" . sha1(serialize(array($t["sqlvars"], $t["sqlwhere_default"], $fcount)));
                    $t["maxdatasets"] = sys_cache_get($cid);
                    if ($t["maxdatasets"] === false) {
                        $t["maxdatasets"] = db_count($tname, $t["sqlwhere_default"], $t["sqlvars"], $vars);
                        sys_cache_set($cid, $t["maxdatasets"], OUTPUT_CACHE);
                    }
                } else {
                    $t["maxdatasets"] = db_count($tname, $t["sqlwhere_default"], $t["sqlvars"], $vars);
                }
            }
        }
    } else {
        $t["maxdatasets"] = 0;
    }
    if (isset($_REQUEST["orderby"]) and isset($_REQUEST["order"])) {
        $_SESSION[$tname][$tview]["orderby"] = $_REQUEST["orderby"];
        $_SESSION[$tname][$tview]["order"] = $_REQUEST["order"];
    }
    $t["hidden_fields"] = array();
    if (isset($_REQUEST["hide_fields"])) {
        $_SESSION[$tname][$tview]["hidden"] = explode(",", $_REQUEST["hide_fields"]);
    }
    if (!empty($_SESSION[$tname][$tview]["hidden"]) and empty($t["views"][$tview]["SCHEMA_MODE"])) {
        $t["hidden_fields"] = $_SESSION[$tname][$tview]["hidden"];
        foreach ($t["hidden_fields"] as $field) {
            unset($t["fields"][$field]);
        }
    }
    if (isset($_SESSION[$tname][$tview]["order"]) and isset($_SESSION[$tname][$tview]["orderby"]) and in_array($_SESSION[$tname][$tview]["order"], array("asc", "desc")) and isset($t["fields"][$_SESSION[$tname][$tview]["orderby"]])) {
        $t["orderby"] = $_SESSION[$tname][$tview]["orderby"];
        $t["order"] = $_SESSION[$tname][$tview]["order"];
    }
    foreach ($t["sqlwhere"] as $key => $value) {
        if (!preg_match_all("|@(.*?)@|i", $value, $matches, PREG_SET_ORDER)) {
            continue;
        }
        foreach ($matches as $match) {
            if (count($match) != 2) {
                continue;
            }
            $req_key = $match[1];
            if ($req_key == "folders") {
                continue;
            }
            if ($req_key == "item") {
                $skey = $tview;
            } else {
                $skey = "request";
            }
            if (isset($_SESSION["_" . $tfolder][$skey][$req_key])) {
                $t["sqlvars"][$req_key] = $_SESSION["_" . $tfolder][$skey][$req_key];
            }
            if (isset($_SESSION[$req_key])) {
                $t["sqlvars"][$req_key] = $_SESSION[$req_key];
            }
            if (isset($_REQUEST[$req_key])) {
                $t["sqlvars"][$req_key] = $_REQUEST[$req_key];
                $_SESSION["_" . $tfolder][$skey][$req_key] = $_REQUEST[$req_key];
            }
            if (!isset($t["sqlvars"][$req_key]) and empty($t["sqlvarsnoquote"][$req_key])) {
                $t["sqlwhere"][$key] = "1=1";
            }
        }
    }
    if (!isset($_SESSION[$tname][$tview]["group"])) {
        $_SESSION[$tname][$tview]["group"] = $t["group"];
    }
    if (!isset($_SESSION[$tname][$tview]["groupby"])) {
        $_SESSION[$tname][$tview]["groupby"] = $t["groupby"];
    }
    if (isset($_REQUEST["group"])) {
        if ($_SESSION[$tname][$tview]["groupby"] == "") {
            $_SESSION[$tname][$tview]["groupby"] = $t["orderby"];
            $_SESSION[$tname][$tview]["group"] = $t["order"];
        } else {
            $_SESSION[$tname][$tview]["groupby"] = "";
            $_SESSION[$tname][$tview]["group"] = "";
        }
    }
    if (!isset($_REQUEST["plain"])) {
        $t["groupby"] = $_SESSION[$tname][$tview]["groupby"];
        $t["group"] = $_SESSION[$tname][$tview]["group"];
    } else {
        $t["groupby"] = "";
        $t["group"] = "";
    }
    if ($t["groupby"] != "" and isset($t["fields"][$t["groupby"]])) {
        $field = $t["fields"][$t["groupby"]];
        $field["WIDTH"] = 0;
        unset($t["fields"][$t["groupby"]]);
        unset($t["fields_query"][$t["groupby"]]);
        $t["fields"] = array_merge(array($t["groupby"] => $field), $t["fields"]);
        $t["fields_query"] = array_unique(array_merge(array($t["groupby"]), $t["fields_query"]));
    }
    _asset_process_pages($t["maxdatasets"]);
    if (!isset($t["views"][$tview]["NOSQLORDER"])) {
        $t["sqlorder"] = ($t["groupby"] != "" ? $t["groupby"] . " " . $t["group"] . "," : "") . $t["orderby"] . " " . $t["order"];
    }
    if (!isset($t["views"][$tview]["NOSQLLIMIT"]) and empty($_REQUEST["print_all"]) and (empty($_REQUEST["export"]) or !empty($_REQUEST["limit"]))) {
        $t["sqllimit"] = array(($t["page"] - 1) * $t["limit"], $t["limit"]);
    }
    if (!empty($_REQUEST["iframe"]) and isset($_REQUEST["session_remove_request"])) {
        $t["sqllimit"] = array();
    }
    // offline reading
    if (!empty($t["sqlvars"]["item"]) and $t["views"][$tview]["SCHEMA_MODE"] == "edit" and $t["maxdatasets"] == 0) {
        sys_warning("{t}Item(s) not found or access denied.{/t}");
    }
    if ($t["maxdatasets"] != 0) {
        _asset_get_rows();
    }
    if ((!empty($_REQUEST["form_submit_create"]) or !empty($_REQUEST["form_submit_edit"])) and $t["rights"]["write"] and $t["schema_mode"] != "") {
        $mode = $t["schema_mode"] == "edit" ? "edit" : "create";
        list($t["errors"], $defaults, $form_ids, $saved_ids) = asset::create_edit($tfolder, $tview, $mode);
        foreach ($t["limits"] as $key => $val) {
            if (in_array($val, $form_ids)) {
                unset($t["limits"][$key]);
            }
        }
        if (count($t["errors"]) == 0) {
            $t["limits"] = range(0, $t["limit"] - 1);
            if (!empty($_REQUEST["form_submit_return"])) {
                $arr = array_pop(array_slice($_SESSION["history"], -2, 1));
                if (empty($arr[2])) {
                    $arr[2] = "default";
                }
                sys_redirect("index.php?view=" . $arr[2] . "&" . sys::$urladdon);
            }
            if (!empty($_REQUEST["form_submit_go_edit"])) {
                $items = "";
                foreach ($saved_ids as $id) {
                    $items .= "&item[]=" . rawurlencode($id);
                }
                sys_redirect("index.php?view=edit" . $items . "&" . sys::$urladdon);
            }
        }
        foreach ($defaults as $id => $field) {
            foreach ($field as $field_name => $value) {
                $t["fields"][$field_name]["SIMPLE_DEFAULTS"][$id] = $value;
                $t["fields"][$field_name]["SIMPLE_DEFAULT"] = "";
            }
        }
    }
    sys::$smarty->assign_by_ref("t", $t);
}
Exemplo n.º 2
0
if ($user['authlevel'] < 3) {
    AdminMessage($lang['adm_err_denied']);
}
global $config;
ini_set('memory_limit', $config->stats_php_memory ? $config->stats_php_memory : '256M');
lng_include('admin');
$sort_fields = array(SORT_ID => 'id', SORT_NAME => 'username', SORT_EMAIL => 'email', SORT_IP => 'user_lastip', SORT_TIME_REGISTERED => 'register_time', SORT_TIME_LAST_VISIT => 'onlinetime', SORT_TIME_BAN_UNTIL => 'banaday', SORT_REFERRAL_COUNT => 'referral_count', SORT_REFERRAL_DM => 'referral_dm');
$sort = sys_get_param_int('sort', SORT_ID);
$sort = $sort_fields[$sort] ? $sort : SORT_ID;
if (($action = sys_get_param_int('action')) && ($user_id = sys_get_param_id('uid'))) {
    $user_selected = db_user_by_id($user_id, false, 'id, username, authlevel');
    if ($user_selected['authlevel'] < $user['authlevel'] && $user['authlevel'] >= 3) {
        switch ($action) {
            case ACTION_DELETE:
                DeleteSelectedUser($user_id);
                sys_redirect("{$_SERVER['SCRIPT_NAME']}?sort={$sort}");
                break;
            case ACTION_USE:
                // Impersonate
                sn_sys_impersonate($user_selected);
                break;
        }
    } else {
        // Restricted try to delete user higher or equal level
        AdminMessage($lang['adm_err_denied']);
    }
}
$template = gettemplate('admin/userlist', true);
$multi_ip = array();
$ip_query = db_user_list_admin_multiaccounts();
while ($ip = db_fetch($ip_query)) {
Exemplo n.º 3
0
<?php

include_once 'common.' . substr(strrchr(__FILE__, '.'), 1);
if (sn_module_get_active_count('payment') && !defined('SN_GOOGLE')) {
    sys_redirect('metamatter.php');
}
$template = gettemplate('dark_matter', true);
lng_include('infos');
$template->assign_vars(array('URL_DARK_MATTER' => $config->url_dark_matter, 'DARK_MATTER_DESCRIPTION' => $lang['info'][RES_DARK_MATTER]['description'], 'PAYMENT_AVAILABLE' => sn_module_get_active_count('payment') && !defined('SN_GOOGLE'), 'PAGE_HEADER' => $lang['sys_dark_matter']));
display($template, $lang['sys_dark_matter']);
Exemplo n.º 4
0
<?php

// Придумать какой статус должен быть у глобальных ответов, что бы не перекрывать статусы платежных систем
// Может добавить спецстатус "Ответ системы платежа" и парсить дальше getMessage
// см constants.php
include_once 'common.' . substr(strrchr(__FILE__, '.'), 1);
if (!sn_module_get_active_count('payment')) {
    sys_redirect('overview.php');
    die;
}
global $config;
lng_include('payment');
$template = gettemplate('metamatter', true);
$player_currency_default = player_load_option($user, PLAYER_OPTION_CURRENCY_DEFAULT);
$player_currency = sys_get_param_str('player_currency', $player_currency_default);
empty($lang['pay_currency_list'][$player_currency]) ? $player_currency = $player_currency_default ? $player_currency_default : $config->payment_currency_default : false;
$player_currency_default != $player_currency ? player_save_option($user, PLAYER_OPTION_CURRENCY_DEFAULT, $player_currency) : false;
// Конвертация ММ в ТМ
if (sys_get_param('mm_convert_do')) {
    try {
        if (!($mm_convert = sys_get_param_id('mm_convert'))) {
            throw new exception($lang['pay_msg_mm_convert_wrong_amount'], ERR_ERROR);
        }
        sn_db_transaction_start();
        $user = db_user_by_id($user['id'], true);
        if ($mm_convert > mrc_get_level($user, null, RES_METAMATTER)) {
            throw new exception($lang['pay_msg_mm_convert_not_enough'], ERR_ERROR);
        }
        $payment_comment = sprintf("Игрок сконвертировал %d Метаматерии в Тёмную Материю", $mm_convert);
        if (!mm_points_change($user['id'], RPG_CONVERT_MM, -$mm_convert, $payment_comment)) {
            throw new exception($lang['pay_msg_mm_convert_mm_error'], ERR_ERROR);
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
<?php

global $debug;
// Придумать какой статус должен быть у глобальных ответов, что бы не перекрывать статусы платежных систем
// Может добавить спецстатус "Ответ системы платежа" и парсить дальше getMessage
// см constants.php
include_once 'common.' . substr(strrchr(__FILE__, '.'), 1);
if (!sn_module_get_active_count('payment')) {
    sys_redirect('dark_matter.php');
    die;
}
global $config;
lng_include('payment');
lng_include('infos');
$template = gettemplate('metamatter', true);
// $player_currency_default = player_load_option($user, PLAYER_OPTION_CURRENCY_DEFAULT);
$player_currency_default = classSupernova::$user_options[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;
$player_currency_default != $player_currency ? classSupernova::$user_options[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)) {
Exemplo n.º 7
0
function mrc_mercenary_hire($mode, $user, $mercenary_id)
{
    global $config, $lang, $sn_powerup_buy_discounts;
    try {
        $is_permanent = $mode == UNIT_PLANS || !$config->empire_mercenary_temporary;
        $cost_alliance_multiplyer = SN_IN_ALLY === true && $mode == UNIT_PLANS ? $config->ali_bonus_members : 1;
        $cost_alliance_multiplyer = $cost_alliance_multiplyer >= 1 ? $cost_alliance_multiplyer : 1;
        if (!in_array($mercenary_id, sn_get_groups($mode == UNIT_PLANS ? 'plans' : 'mercenaries'))) {
            throw new Exception($lang['mrc_msg_error_wrong_mercenary'], ERR_ERROR);
        }
        if (!mrc_officer_accessible($user, $mercenary_id)) {
            throw new Exception($lang['mrc_msg_error_requirements'], ERR_ERROR);
        }
        $mercenary_level = sys_get_param_int('mercenary_level');
        if ($mercenary_level < 0 || $mercenary_level > get_unit_param($mercenary_id, P_MAX_STACK)) {
            throw new Exception($lang['mrc_msg_error_wrong_level'], ERR_ERROR);
        }
        if ($mercenary_level && !array_key_exists($mercenary_period = sys_get_param_int('mercenary_period'), $sn_powerup_buy_discounts)) {
            throw new Exception($lang['mrc_msg_error_wrong_period'], ERR_ERROR);
        }
        sn_db_transaction_start();
        $mercenary_level_old = mrc_get_level($user, $planetrow, $mercenary_id, true, true);
        if ($config->empire_mercenary_temporary && $mercenary_level_old && $mercenary_level) {
            throw new Exception($lang['mrc_msg_error_already_hired'], ERR_ERROR);
            // Can't hire already hired temp mercenary - dismiss first
        } elseif ($config->empire_mercenary_temporary && !$mercenary_level_old && !$mercenary_level) {
            throw new Exception('', ERR_NONE);
            // Can't dismiss (!$mercenary_level) not hired (!$mercenary_level_old) temp mercenary. But no error
        }
        if ($mercenary_level) {
            $darkmater_cost = eco_get_total_cost($mercenary_id, $mercenary_level);
            if (!$config->empire_mercenary_temporary && $mercenary_level_old) {
                $darkmater_cost_old = eco_get_total_cost($mercenary_id, $mercenary_level_old);
                $darkmater_cost[BUILD_CREATE][RES_DARK_MATTER] -= $darkmater_cost_old[BUILD_CREATE][RES_DARK_MATTER];
            }
            $darkmater_cost = ceil($darkmater_cost[BUILD_CREATE][RES_DARK_MATTER] * $mercenary_period * $sn_powerup_buy_discounts[$mercenary_period] / $config->empire_mercenary_base_period);
        } else {
            $darkmater_cost = 0;
        }
        $darkmater_cost *= $cost_alliance_multiplyer;
        if (mrc_get_level($user, null, RES_DARK_MATTER) < $darkmater_cost) {
            throw new Exception($lang['mrc_msg_error_no_resource'], ERR_ERROR);
        }
        if ($darkmater_cost && $mercenary_level || !$is_permanent) {
            $unit_row = db_unit_by_location($user['id'], LOC_USER, $user['id'], $mercenary_id);
            if (is_array($unit_row) && ($dismiss_left_days = floor((strtotime($unit_row['unit_time_finish']) - SN_TIME_NOW) / PERIOD_DAY))) {
                $dismiss_full_cost = eco_get_total_cost($mercenary_id, $unit_row['unit_level']);
                $dismiss_full_cost = $dismiss_full_cost[BUILD_CREATE][RES_DARK_MATTER];
                $dismiss_full_days = round((strtotime($unit_row['unit_time_finish']) - strtotime($unit_row['unit_time_start'])) / PERIOD_DAY);
                /*
                        print(sprintf($lang['mrc_mercenary_dismissed_log'], $lang['tech'][$mercenary_id], $mercenary_id, $dismiss_full_cost, $dismiss_full_days,
                          $unit_row['unit_time_start'], $unit_row['unit_time_finish'], $dismiss_left_days, floor($dismiss_full_cost * $dismiss_left_days / $dismiss_full_days)
                          ));
                */
                rpg_points_change($user['id'], RPG_MERCENARY_DISMISSED, 0, sprintf($lang['mrc_mercenary_dismissed_log'], $lang['tech'][$mercenary_id], $mercenary_id, $dismiss_full_cost, $dismiss_full_days, $unit_row['unit_time_start'], $unit_row['unit_time_finish'], $dismiss_left_days, floor($dismiss_full_cost * $dismiss_left_days / $dismiss_full_days)));
            }
            db_unit_list_delete($user['id'], LOC_USER, $user['id'], $mercenary_id);
        }
        if ($darkmater_cost && $mercenary_level) {
            db_unit_set_insert("unit_player_id = {$user['id']},\n        unit_location_type = " . LOC_USER . ",\n        unit_location_id = {$user['id']},\n        unit_type = {$mode},\n        unit_snid = {$mercenary_id},\n        unit_level = {$mercenary_level},\n        unit_time_start = " . (!$is_permanent ? 'FROM_UNIXTIME(' . SN_TIME_NOW . ')' : 'null') . ",\n        unit_time_finish = " . (!$is_permanent ? 'FROM_UNIXTIME(' . (SN_TIME_NOW + $mercenary_period) . ')' : 'null'));
            rpg_points_change($user['id'], $mode == UNIT_PLANS ? RPG_PLANS : RPG_MERCENARY, -$darkmater_cost, sprintf($lang[$mode == UNIT_PLANS ? 'mrc_plan_bought_log' : 'mrc_mercenary_hired_log'], $lang['tech'][$mercenary_id], $mercenary_id, $darkmater_cost, round($mercenary_period / PERIOD_DAY)));
        }
        sn_db_transaction_commit();
        sys_redirect($_SERVER['REQUEST_URI']);
    } 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());
    }
    return $operation_result;
}
Exemplo n.º 8
0
    }
    $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);
        sn_db_transaction_commit();
        sys_redirect("galaxy.php?mode=name&galaxy={$uni_galaxy}&system={$uni_system}");
    }
} catch (exception $e) {
    sn_db_transaction_rollback();
    $template->assign_block_vars('result', array('STATUS' => in_array($e->getCode(), array(ERR_NONE, ERR_WARNING, ERR_ERROR)) ? $e->getCode() : ERR_ERROR, 'MESSAGE' => $e->getMessage()));
}
$template->assign_vars(array('GALAXY' => $uni_galaxy, 'SYSTEM' => $uni_system, 'NAME' => sys_safe_output($uni_row['universe_name']), 'PRICE' => $uni_row['universe_price'], 'PAGE_HINT' => $lang['uni_name_page_hint']));
display($template, $lang['sys_universe'] . ' - ' . $lang['uni_naming'], true, '', false);
Exemplo n.º 9
0
 protected function payment_request_process($options = array())
 {
     global $lang, $config;
     if (!$this->manifest['active']) {
         throw new Exception($lang['pay_msg_module_disabled'], SN_MODULE_DISABLED);
     }
     // Если есть payment_id - загружаем под него данные
     if (!empty($this->payment_params['payment_id'])) {
         $this->request_payment_id = sys_get_param_id($this->payment_params['payment_id']);
         if (!$this->request_payment_id) {
             throw new Exception($lang['pay_msg_request_payment_id_invalid'], SN_PAYMENT_REQUEST_INTERNAL_ID_WRONG);
         }
         if (!$this->db_get_by_id($this->request_payment_id)) {
             throw new Exception($lang['pay_msg_request_payment_id_invalid'], SN_PAYMENT_REQUEST_INTERNAL_ID_WRONG);
         }
         // Проверяем - был ли этот платеж обработан?
         // TODO - Статусы бывают разные. Нужен спецфлаг payment_processed
         if ($this->payment_status != PAYMENT_STATUS_NONE) {
             sn_db_transaction_rollback();
             sys_redirect(SN_ROOT_VIRTUAL . 'metamatter.php?payment_id=' . $this->payment_id);
             die;
         }
     }
     // Пытаемся получить из запроса ИД аккаунта
     $request_account_id = !empty($this->payment_params['account_id']) ? sys_get_param_id($this->payment_params['account_id']) : 0;
     // Если в запросе нет ИД аккаунта - пытаемся использовать payment_account_id
     if (empty($request_account_id) && !empty($this->payment_account_id)) {
         $request_account_id = $this->payment_account_id;
     }
     // Если теперь у нас нету ИД аккаунта ни в запросе, ни в записи таблицы - можно паниковать
     if (empty($request_account_id)) {
         // TODO - аккаунт
         throw new Exception($lang['pay_msg_request_user_invalid'], $this->retranslate_error(SN_PAYMENT_REQUEST_USER_NOT_FOUND, $options));
     }
     // Если нет записи в таблице - тогда берем payment_account_id из запроса
     if (empty($this->payment_account_id)) {
         $this->payment_account_id = $request_account_id;
     }
     // Если у нас отличаются ИД аккаунта в запросе и ИД аккаунта в записи - тоже можно паниковать
     if ($this->payment_account_id != $request_account_id) {
         // TODO - Поменять сообщение об ошибке
         throw new Exception($lang['pay_msg_request_user_invalid'], $this->retranslate_error(SN_PAYMENT_REQUEST_USER_NOT_FOUND, $options));
     }
     // Проверяем существование аккаунта с данным ИД
     if (!$this->account->db_get_by_id($this->payment_account_id)) {
         throw new Exception($lang['pay_msg_request_user_invalid'] . ' ID ' . $this->payment_account_id, $this->retranslate_error(SN_PAYMENT_REQUEST_USER_NOT_FOUND, $options));
     }
     // TODO Проверка на сервер_ид - как бы и не нужна, наверное?
     if (!empty($this->payment_params['server_id'])) {
         $this->request_server_id = sys_get_param_str($this->payment_params['server_id']);
         if (SN_ROOT_VIRTUAL != $this->request_server_id) {
             throw new Exception($lang['pay_msg_request_server_wrong'] . " {$this->request_server_id} вместо " . SN_ROOT_VIRTUAL, SN_PAYMENT_REQUEST_SERVER_WRONG);
         }
     }
     // Сверка количества оплаченной ММ с учётом бонусов
     if (!empty($this->payment_params['payment_dark_matter_gained'])) {
         $request_mm_amount = sys_get_param_id($this->payment_params['payment_dark_matter_gained']);
         if ($request_mm_amount != $this->payment_dark_matter_gained && $this->is_loaded) {
             throw new Exception($lang['pay_msg_mm_request_amount_invalid'] . " пришло {$request_mm_amount} ММ вместо {$this->payment_dark_matter_gained} ММ", SN_PAYMENT_REQUEST_MM_AMOUNT_INVALID);
         }
         empty($this->payment_dark_matter_gained) ? $this->payment_dark_matter_gained = $request_mm_amount : false;
     }
     if (empty($this->payment_dark_matter_paid)) {
         // TODO - обратный расчёт из gained
     }
     // Проверка наличия внешнего ИД платежа
     if (!empty($this->payment_params['payment_external_id'])) {
         $request_payment_external_id = sys_get_param_id($this->payment_params['payment_external_id']);
         if (empty($request_payment_external_id)) {
             throw new exception($lang['pay_msg_request_payment_id_invalid'], SN_PAYMENT_REQUEST_EXTERNAL_ID_WRONG);
         } elseif (!empty($this->payment_external_id) && $this->payment_external_id != $request_payment_external_id) {
             // TODO - Может быть поменять сообщение
             throw new exception($lang['pay_msg_request_payment_id_invalid'], SN_PAYMENT_REQUEST_EXTERNAL_ID_WRONG);
         }
         $this->payment_external_id = $request_payment_external_id;
     }
     // Сверка суммы, запрошенной СН к оплате
     if (!empty($this->payment_params['payment_external_money'])) {
         $request_money_out = sys_get_param_float($this->payment_params['payment_external_money']);
         if ($request_money_out != $this->payment_external_amount && $this->is_loaded) {
             throw new Exception($lang['pay_msg_request_payment_amount_invalid'] . " пришло {$request_money_out} денег вместо {$this->payment_external_amount} денег", SN_PAYMENT_REQUEST_CURRENCY_AMOUNT_INVALID);
         }
         empty($this->payment_external_amount) ? $this->payment_external_amount = $request_money_out : false;
     }
     // Заполняем поле валюты платёжной системы
     if (!empty($this->payment_params['payment_external_currency'])) {
         $this->payment_external_currency = sys_get_param_str($this->payment_params['payment_external_currency']);
         if (empty($this->payment_external_currency)) {
             // TODO - поменять сообщение
             throw new Exception($lang['pay_msg_request_payment_amount_invalid'] . " {$this->payment_external_currency}", SN_PAYMENT_REQUEST_CURRENCY_AMOUNT_INVALID);
         }
     }
     if (empty($this->payment_external_currency)) {
         $this->payment_external_currency = $this->config['currency'];
     }
     // Заполнение внутренней суммы и валюты из внешних данных
     if (empty($this->payment_currency)) {
         $this->payment_currency = $config->payment_currency_default;
     }
     if (empty($this->payment_amount) && !empty($this->payment_external_currency)) {
         $this->payment_amount = self::currency_convert($this->payment_external_amount, $this->payment_external_currency, $this->payment_currency);
     }
     // TODO - Тестовый режим
     if (!empty($this->payment_params['test'])) {
         $this->payment_test = $this->config['test'] || sys_get_param_int($this->payment_params['test']);
     }
     $this->generate_description();
     //    // TODO - REMOVE
     //    return array(
     //      'payer' => $this->account,
     //    );
 }
Exemplo n.º 10
0
 /**
  * Имперсонация
  *
  * @param $user_selected
  */
 public function impersonate($user_selected)
 {
     if ($_COOKIE[SN_COOKIE_U_I]) {
         die('You already impersonating someone. Go back to living other\'s life! Or clear your cookies and try again');
         // TODO: Log it
     }
     if ($this->auth_level_max_local < AUTH_LEVEL_ADMINISTRATOR) {
         die('You can\'t impersonate - too low level');
         // TODO: Log it
     }
     if ($this->auth_level_max_local <= $user_selected['authlevel']) {
         die('You can\'t impersonate this account - level is greater or equal to yours');
         // TODO: Log it
     }
     $account_translate = PlayerToAccountTranslate::db_translate_get_account_by_user_id($user_selected['id'], self::$main_provider->provider_id);
     $account_translate = reset($account_translate[$user_selected['id']][self::$main_provider->provider_id]);
     $account_to_impersonate = new Account(self::$main_provider->db);
     $account_to_impersonate->db_get_by_id($account_translate['provider_account_id']);
     if (!$account_to_impersonate->is_exists) {
         die('Какая-то ошибка - не могу найти аккаунт для имперсонации');
         // TODO: Log it
     }
     self::$main_provider->impersonate($account_to_impersonate);
     self::cookie_set($_COOKIE[SN_COOKIE_U], true, 0);
     // TODO - Имперсонейт - только на одну сессию
     self::cookie_set($user_selected['id']);
     // sec_set_cookie_by_user($user_selected, 0);
     sys_redirect(SN_ROOT_RELATIVE);
 }
Exemplo n.º 11
0
    header("Pragma: private");
    readfile(cms::$cache_file);
    exit;
}
if (!empty($_REQUEST["file"]) and !empty($_REQUEST["page"])) {
    header("Location: {$base_dir}/download.php?find=asset|simple_cms|1|pagename=" . $_REQUEST["page"] . "&view=details&field=attachment&subitem=" . $_REQUEST["file"]);
    exit;
}
if (CHECK_DOS and APC and !DEBUG) {
    cms::checkdos();
}
$cms = new cms();
if (isset($_REQUEST["logout"])) {
    if (!empty($_SESSION["username"])) {
        login::process_logout();
    }
    if (isset($_COOKIE[SESSION_NAME])) {
        unset($_COOKIE[SESSION_NAME]);
    }
    $_SESSION = array();
}
if ((ENABLE_ANONYMOUS or ENABLE_ANONYMOUS_CMS) and empty($_SESSION["username"])) {
    login_anonymous_session();
}
if (empty($_SESSION["username"])) {
    sys_redirect("{$base_dir}/index.php?logout&page=" . $_REQUEST["page"]);
}
error_reporting(E_ALL);
require_once "lib/pmwiki/pmwiki.php";
$cms->render_page();
$cms->output();
Exemplo n.º 12
0
/**
 *
 * admin/overview.php
 *
 * @version 2.0 copyright (c) 2014 Gorlum for http://supernova.ws
 *
 */
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']);
} elseif ($user['authlevel'] < 3) {
    sys_redirect(SN_ROOT_VIRTUAL . 'admin/banned.php');
}
$TypeSort = sys_get_param_str('type', 'id');
$template = gettemplate('admin/adm_overview', true);
$Last15Mins = db_user_list_online_sorted($TypeSort);
$Count = 0;
while ($TheUser = db_fetch($Last15Mins)) {
    $TheUser['NAME'] = htmlentities($TheUser['NAME'], ENT_COMPAT, 'UTF-8');
    //  $TheUser['BROWSER'] = htmlentities($TheUser['BROWSER'], ENT_COMPAT, 'UTF-8');
    $TheUser['ALLY'] = htmlentities($TheUser['ALLY'], ENT_COMPAT, 'UTF-8');
    $TheUser['STAT_POINTS'] = pretty_number($TheUser['STAT_POINTS']);
    $TheUser['ACTIVITY'] = pretty_time(SN_TIME_NOW - $TheUser['ACTIVITY']);
    $template->assign_block_vars('user', $TheUser);
    $Count++;
}
$template->assign_vars(array('USERS' => $Count, 'PAGE_HINT' => $lang['adm_ov_hint']));
Exemplo n.º 13
0
/**
 * @param bool|string $redirect нужно ли сделать перенаправление после логаута
 * <p><b>false</b> - не перенаправлять</p>
 * <p><i><b>true</b></i> - перенаправить на главную страницу</p>
 * <p><b>string</b> - перенаправить на указанный URL</p>
 *
 * @param bool $only_impersonator Если установлен - то логаут происходит только при имперсонации
 */
function sn_sys_logout($redirect = true, $only_impersonator = false)
{
    global $user_impersonator;
    if ($only_impersonator && !$user_impersonator) {
        return;
    }
    if ($_COOKIE[SN_COOKIE_I] && $user_impersonator['authlevel'] >= 3) {
        // sn_cookie_set_user($user_impersonator, 1);
        // sec_set_cookie_by_fields($user_impersonator['id'], $user_impersonator['username'], $user_impersonator['password'], 1);
        sec_set_cookie_by_user($user_impersonator, 1);
        $redirect = $redirect === true ? 'admin/userlist.php' : $redirect;
    } else {
        sn_setcookie(SN_COOKIE, '', time() - PERIOD_WEEK, SN_ROOT_RELATIVE);
    }
    sn_setcookie(SN_COOKIE_I, '', time() - PERIOD_WEEK, SN_ROOT_RELATIVE);
    if ($redirect === true) {
        sys_redirect(SN_ROOT_RELATIVE . 'login.php');
    } elseif ($redirect !== false) {
        sys_redirect($redirect);
    }
}
Exemplo n.º 14
0
<?php

/**
 * dark_matter.php
 *
 * Adjust Dark Matter quantity
 *
 * @version 1.0 (c) copyright 2013 by Gorlum for http://supernova.ws
 *
 */
define('INSIDE', true);
define('INSTALL', false);
define('IN_ADMIN', true);
require '../common.' . substr(strrchr(__FILE__, '.'), 1);
if (!sn_module_get_active_count('payment')) {
    sys_redirect(SN_ROOT_VIRTUAL . 'admin/overview.php');
}
if ($user['authlevel'] < 3) {
    AdminMessage($lang['adm_err_denied']);
}
$template = gettemplate("admin/adm_metamatter", true);
$message = '';
$message_status = ERR_ERROR;
if ($points = sys_get_param_float('points')) {
    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)) {
Exemplo n.º 15
0
function sn_sys_sector_buy($redirect = 'overview.php')
{
    global $lang, $user, $planetrow;
    if (!sys_get_param_str('sector_buy') || $planetrow['planet_type'] != PT_PLANET) {
        return;
    }
    sn_db_transaction_start();
    $user = db_user_by_id($user['id'], true, '*');
    $planetrow = db_planet_by_id($planetrow['id'], true, '*');
    // Тут не надо делать обсчет - ресурсы мы уже посчитали, очередь (и количество зданий) - тоже
    //  $planetrow = sys_o_get_updated($user, $planetrow, SN_TIME_NOW);
    //  $user = $planetrow['user'];
    //  $planetrow = $planetrow['planet'];
    $sector_cost = eco_get_build_data($user, $planetrow, UNIT_SECTOR, mrc_get_level($user, $planetrow, UNIT_SECTOR), true);
    $sector_cost = $sector_cost[BUILD_CREATE][RES_DARK_MATTER];
    if ($sector_cost <= $user[get_unit_param(RES_DARK_MATTER, P_NAME)]) {
        $planet_name_text = uni_render_planet($planetrow);
        if (rpg_points_change($user['id'], RPG_SECTOR, -$sector_cost, sprintf($lang['sys_sector_purchase_log'], $user['username'], $user['id'], $planet_name_text, $lang['sys_planet_type'][$planetrow['planet_type']], $planetrow['id'], $sector_cost))) {
            $sector_db_name = pname_resource_name(UNIT_SECTOR);
            db_planet_set_by_id($planetrow['id'], "{$sector_db_name} = {$sector_db_name} + 1");
        } else {
            sn_db_transaction_rollback();
        }
    }
    sn_db_transaction_commit();
    sys_redirect($redirect);
}
Exemplo n.º 16
0
        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);
            }
        }
        if ($note_id_edit) {
            if ($check_note_id['owner'] != $user['id']) {
                throw new exception('note_err_owner_wrong', ERR_ERROR);
            }
            doquery("UPDATE {{notes}} SET `time` = " . SN_TIME_NOW . ", `priority` = {$note_priority}, `title` = '{$note_title}', `text` = '{$note_text}',\n        `galaxy` = {$note_galaxy}, `system` = {$note_system}, `planet` = {$note_planet}, `planet_type` = {$note_planet_type}, `sticky` = {$note_sticky}\n        WHERE `id` = {$note_id_edit} LIMIT 1;");
        } else {
            doquery("INSERT INTO {{notes}} SET `owner` = {$user['id']}, `time` = " . SN_TIME_NOW . ", `priority` = {$note_priority}, `title` = '{$note_title}', `text` = '{$note_text}',\n        `galaxy` = {$note_galaxy}, `system` = {$note_system}, `planet` = {$note_planet}, `planet_type` = {$note_planet_type}, `sticky` = {$note_sticky};");
        }
        sn_db_transaction_commit();
        sys_redirect('notes.php?STATUS=' . ERR_NONE . '&MESSAGE=' . ($note_id_edit ? 'note_err_none_changed' : 'note_err_none_added'));
        //    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()]);
    }
}
if (!$note_id_edit) {
    note_assign($template, array('id' => 0, 'time' => SN_TIME_NOW, 'priority' => 2, 'planet_type' => PT_PLANET, 'title' => $lang['note_new_title'], 'text' => $lang['note_new_text']));
}
$note_exist = false;
$notes_query = doquery("SELECT * FROM {{notes}} WHERE owner={$user['id']} ORDER BY priority DESC, time DESC");
while ($note_row = db_fetch($notes_query)) {
    note_assign($template, $note_row);
    $note_exist = $note_exist || $note_row['id'] == $note_id_edit;
Exemplo n.º 17
0
 protected function password_reset_confirm()
 {
     global $lang, $config;
     if (!$this->is_password_reset_confirm) {
         return $this->account_login_status;
     }
     if ($this->account_login_status != LOGIN_UNDEFINED) {
         return $this->account_login_status;
     }
     // Проверяем поддержку сброса пароля
     if (!$this->is_feature_supported(AUTH_FEATURE_PASSWORD_RESET)) {
         return $this->account_login_status;
     }
     try {
         $code_unsafe = sys_get_param_str_unsafe('password_reset_code');
         if (empty($code_unsafe)) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_EMPTY, ERR_ERROR);
         }
         sn_db_transaction_start();
         $confirmation = $this->confirmation->db_confirmation_get_by_type_and_code(CONFIRM_PASSWORD_RESET, $code_unsafe);
         // OK 4.5
         if (empty($confirmation)) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_WRONG, ERR_ERROR);
         }
         if (SN_TIME_NOW - strtotime($confirmation['create_time']) > AUTH_PASSWORD_RESET_CONFIRMATION_EXPIRE) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_TOO_OLD, ERR_ERROR);
         }
         unset($this->account);
         $this->account = new Account($this->db);
         if (!$this->account->db_get_by_email($confirmation['email'])) {
             throw new Exception(PASSWORD_RESTORE_ERROR_CODE_OK_BUT_NO_ACCOUNT_FOR_EMAIL, ERR_ERROR);
         }
         $new_password_unsafe = $this->make_random_password();
         $salt_unsafe = $this->password_salt_generate();
         if (!$this->account->db_set_password($new_password_unsafe, $salt_unsafe)) {
             // Ошибка смены пароля
             throw new Exception(AUTH_ERROR_INTERNAL_PASSWORD_CHANGE_ON_RESTORE, ERR_ERROR);
         }
         $this->account_login_status = LOGIN_UNDEFINED;
         $this->remember_me = 1;
         $this->cookie_set();
         $this->login_cookie();
         if ($this->account_login_status == LOGIN_SUCCESS) {
             // TODO - НЕ ОБЯЗАТЕЛЬНО ОТПРАВЛЯТЬ ЧЕРЕЗ ЕМЕЙЛ! ЕСЛИ ЭТО ФЕЙСБУЧЕК ИЛИ ВКШЕЧКА - МОЖНО ЧЕРЕЗ ЛС ПИСАТЬ!!
             $message_header = sprintf($lang['log_lost_email_title'], $config->game_name);
             $message = sprintf($lang['log_lost_email_pass'], $config->game_name, $this->account->account_name, $new_password_unsafe);
             @($operation_result = mymail($confirmation['email'], $message_header, htmlspecialchars($message)));
             // $users_translated = classSupernova::$auth->db_translate_get_users_from_account_list($this->provider_id, $this->account->account_id); // OK 4.5
             $users_translated = PlayerToAccountTranslate::db_translate_get_users_from_account_list($this->provider_id, $this->account->account_id);
             // OK 4.5
             if (!empty($users_translated)) {
                 // Отправляем в лички письмо о сбросе пароля
                 // ПО ОПРЕДЕЛЕНИЮ в $users_translated только
                 //    - аккаунты, поддерживающие сброс пароля
                 //    - список аккаунтов, имеющих тот же емейл, что указан в Подтверждении
                 //    - игроки, привязанные только к этим аккаунтам
                 // Значит им всем сразу скопом можно отправлять сообщения
                 $message = sprintf($lang['sys_password_reset_message_body'], $new_password_unsafe);
                 $message = sys_bbcodeParse($message) . '<br><br>';
                 // msg_send_simple_message($found_provider->data[F_USER_ID], 0, SN_TIME_NOW, MSG_TYPE_ADMIN, $lang['sys_administration'], $lang['sys_login_register_message_title'], $message);
                 foreach ($users_translated as $user_id => $providers_list) {
                     msg_send_simple_message($user_id, 0, SN_TIME_NOW, MSG_TYPE_ADMIN, $lang['sys_administration'], $lang['sys_login_register_message_title'], $message);
                 }
             } else {
                 // Фигня - может быть и пустой, если у нас есть только аккаунт, но нет пользователей
                 // throw new Exception(AUTH_PASSWORD_RESET_INSIDE_ERROR_NO_ACCOUNT_FOR_CONFIRMATION, ERR_ERROR);
             }
         }
         $this->confirmation->db_confirmation_delete_by_type_and_email(CONFIRM_PASSWORD_RESET, $confirmation['email']);
         // OK 4.5
         sn_db_transaction_commit();
         sys_redirect('overview.php');
     } catch (Exception $e) {
         sn_db_transaction_rollback();
         $this->account_login_status = $e->getMessage();
     }
     return $this->account_login_status;
 }
Exemplo n.º 18
0
 *
 * @version 1.1st Security checks & tests by Gorlum for http://supernova.ws
 * @version 1.1
 * @copyright 2008 By Chlorel for XNova
 */
include 'common.' . substr(strrchr(__FILE__, '.'), 1);
$unit_id = sys_get_param_id('gid');
if ($unit_id == RES_DARK_MATTER) {
    sys_redirect('dark_matter.php');
}
if ($unit_id == RES_METAMATTER) {
    sys_redirect('metamatter.php');
}
lng_include('infos');
if (!$unit_id || !get_unit_param($unit_id) && !isset($lang['info'][$unit_id])) {
    sys_redirect('index.php?page=techtree');
}
$template = gettemplate('novapedia', true);
$unit_data = get_unit_param($unit_id);
$unit_type = $unit_data['type'];
if ($unit_type == UNIT_SHIPS) {
    $template_result['UNIT_IS_SHIP'] = true;
    $ship_data = get_ship_data($unit_id, $user);
    $template_result += array('BASE_SPEED' => pretty_number($ship_data['speed_base']), 'ACTUAL_SPEED' => pretty_number($ship_data['speed']), 'BASE_CONSUMPTION' => pretty_number($ship_data['consumption_base']), 'ACTUAL_CONSUMPTION' => pretty_number($ship_data['consumption']), 'BASE_CAPACITY' => pretty_number($unit_data['capacity']), 'ACTUAL_CAPACITY' => pretty_number($ship_data['capacity']));
    $engine_template_info = array();
    foreach ($unit_data['engine'] as $unit_engine_data) {
        $unit_engine_data = get_engine_data($user, $unit_engine_data);
        $engine_template_info[] = array('NAME' => $lang['tech'][$unit_engine_data['tech']], 'MIN_LEVEL' => $unit_engine_data['min_level'], 'USER_TECH_LEVEL' => mrc_get_level($user, null, $unit_engine_data['tech']), 'BASE_SPEED' => pretty_number($unit_engine_data['speed_base']), 'BASE_CONSUMPTION' => pretty_number($unit_engine_data['consumption_base']), 'ACTUAL_SPEED' => pretty_number($unit_engine_data['speed']), 'ACTUAL_CONSUMPTION' => pretty_number($unit_engine_data['consumption']));
    }
    $template_result['.']['engine'] = $engine_template_info;
}
Exemplo n.º 19
0
 private static function _redirect($url)
 {
     session_write_close();
     sys_redirect($url);
 }
Exemplo n.º 20
0
 static function process_action_sys()
 {
     @set_time_limit(900);
     switch ($_REQUEST["action_sys"]) {
         case "maintenance":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             $lock_file = SIMPLE_STORE . "/maintenance.lck";
             if (!file_exists($lock_file)) {
                 touch($lock_file);
                 sys_log_message_alert("info", "{t}Maintenance mode{/t}: {t}Active{/t}");
             } else {
                 unlink($lock_file);
                 sys_log_message_alert("info", "{t}Maintenance mode{/t}: {t}Inactive{/t}");
             }
             break;
         case "clear_locking":
             self::_remove_locks();
             dirs_create_empty_dir(SIMPLE_STORE . "/locking");
             sys_log_message_log("clean", "{t}Locking{/t}");
             break;
         case "clear_output":
             dirs_create_empty_dir(SIMPLE_CACHE . "/smarty");
             dirs_create_empty_dir(SIMPLE_CACHE . "/output");
             dirs_create_empty_dir(SIMPLE_CACHE . "/artichow");
             dirs_create_empty_dir(SIMPLE_CACHE . "/thumbs");
             dirs_create_empty_dir(SIMPLE_CACHE . "/lang");
             self::build_css();
             self::build_js();
             self::build_icons();
             sys_log_message_log("clean", "{t}Output{/t}");
             break;
         case "clear_debug":
             dirs_create_empty_dir(SIMPLE_CACHE . "/debug");
             sys_log_message_log("clean", "{t}Debug-dir{/t}");
             break;
         case "clear_cms":
             dirs_create_empty_dir(SIMPLE_CACHE . "/cms");
             sys_log_message_log("clean", "{t}CMS{/t}");
             break;
         case "clear_ip":
             dirs_create_empty_dir(SIMPLE_CACHE . "/ip");
             if (APC) {
                 apc_clear_cache("user");
             }
             sys_log_message_log("clean", "IP");
             break;
         case "clear_schema":
             dirs_create_empty_dir(SIMPLE_CACHE . "/schema");
             if (APC) {
                 apc_clear_cache("user");
             }
             sys_log_message_log("clean", "{t}Schema{/t}");
             break;
         case "clear_schemadata":
             dirs_create_empty_dir(SIMPLE_CACHE . "/schema_data");
             dirs_create_empty_dir(SIMPLE_CACHE . "/preview");
             if (APC) {
                 apc_clear_cache("user");
             }
             sys_log_message_log("clean", "{t}Schema data{/t}");
             break;
         case "clear_email":
             dirs_create_empty_dir(SIMPLE_CACHE . "/imap");
             dirs_create_empty_dir(SIMPLE_CACHE . "/pop3");
             sys_log_message_log("clean", "{t}E-mail{/t}");
             break;
         case "clean_notifications":
             db_delete("simple_sys_notifications", array("sent='1'"), array());
             sql_table_optimize("simple_sys_notifications");
             sys_log_message_log("clean", "{t}Notifications{/t}");
             break;
         case "clear_upload":
             dirs_create_empty_dir(SIMPLE_CACHE . "/upload");
             sys_log_message_log("clean", "{t}Uploaded files{/t}");
             break;
         case "clean_tables":
             db_optimize_tables();
             sys_log_message_log("clean", "{t}Optimize Tables{/t}");
             break;
         case "clean_statistics":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             db_delete("simple_sys_stats", array(), array());
             sql_table_optimize("simple_sys_stats");
             sys_log_message_log("clean", "{t}Statistics{/t}");
             break;
         case "clean_events":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             db_delete("simple_sys_events", array(), array());
             $folder = db_select_value("simple_sys_tree", "id", "ftype=@type@", array("type" => "sys_events"));
             if (!empty($folder)) {
                 db_delete("simple_sys_search", array("folder=@folder@"), array("folder" => $folder));
             }
             sql_table_optimize("simple_sys_events");
             sql_table_optimize("simple_sys_search");
             sys_log_message_log("clean", "{t}Events{/t}");
             break;
         case "clean_trash":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             $trash = db_select_value("simple_sys_tree", "id", "anchor=@anchor@", array("anchor" => "trash"));
             if (!empty($trash)) {
                 $folders = db_select("simple_sys_tree", array("id", "fmountpoint"), "parent=@parent@", "", "", array("parent" => $trash));
                 if (is_array($folders) and count($folders) > 0) {
                     foreach ($folders as $folder) {
                         if (!empty($folder["fmountpoint"])) {
                             continue;
                         }
                         folders::delete($folder["id"]);
                     }
                 }
             }
             dirs_create_empty_dir(SIMPLE_STORE . "/trash");
             sys_log_message_log("clean", "{t}Trash{/t}");
             sys_redirect("index.php?" . sys::$urladdon);
             break;
         case "clean_cache":
             $dirs = array(SIMPLE_STORE . "/cron", SIMPLE_CACHE . "/imap", SIMPLE_CACHE . "/pop3", SIMPLE_CACHE . "/smarty", SIMPLE_CACHE . "/cms", SIMPLE_CACHE . "/cifs", SIMPLE_CACHE . "/gdocs", SIMPLE_CACHE . "/lang", SIMPLE_CACHE . "/output", SIMPLE_CACHE . "/artichow", SIMPLE_CACHE . "/thumbs", SIMPLE_CACHE . "/schema");
             foreach ($dirs as $dir) {
                 self::_dirs_clean_dir($dir, 2592000);
             }
             // 30 days
             self::_remove_locks();
             $dirs = array(SIMPLE_CACHE . "/schema_data", SIMPLE_CACHE . "/preview", SIMPLE_STORE . "/locking", SIMPLE_CACHE . "/upload", SIMPLE_CACHE . "/ip", SIMPLE_CACHE . "/debug", SIMPLE_CACHE . "/updater", SIMPLE_CACHE . "/backup");
             foreach ($dirs as $dir) {
                 self::_dirs_clean_dir($dir, 86400);
             }
             // 1 day
             sys_log_message_log("clean", "{t}Clean Cache{/t}");
             sys_redirect("index.php?" . sys::$urladdon);
             break;
         case "clear_setup":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             @unlink("simple_store/config.php");
             @unlink("simple_store/config_old.php");
             header("Location: index.php");
             exit;
             break;
         case "backup":
             self::_create_backup($_SESSION["folder"]);
             self::_out("<br><a href='index.php?folder=^system/!sys_nodb_backups'>{t}Continue{/t}</a>");
             exit;
             break;
         case "restore_newer":
             self::$_restore_onlynewer = true;
             echo self::_restore($_REQUEST["file"]);
             self::_out("<br><a href='index.php'>{t}Continue{/t}</a>");
             exit;
             break;
         case "restore":
             echo self::_restore($_REQUEST["file"]);
             self::_out("<br><a href='index.php'>{t}Continue{/t}</a>");
             exit;
             break;
         case "restore_here":
             self::$_restore_here = true;
             echo self::_restore($_REQUEST["file"]);
             self::_out("<br><a href='index.php'>{t}Continue{/t}</a>");
             exit;
             break;
         case "restore_missing":
             self::$_restore_missing = true;
             echo self::_restore($_REQUEST["file"]);
             self::_out("<br><a href='index.php'>{t}Continue{/t}</a>");
             exit;
             break;
         case "rebuild_search":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             self::rebuild_schema(true);
             self::_out("<br><a href='index.php'>{t}Continue{/t}</a>");
             exit;
             break;
         case "clear_session":
             if (!sys_validate_token()) {
                 sys_die("{t}Invalid security token{/t}");
             }
             db_delete("simple_sys_session", array(), array());
             if (APC) {
                 apc_clear_cache("user");
             }
             sys_log_message_log("clean", "{t}Sessions{/t}");
             self::_out("<br><a href='index.php'>{t}Continue{/t}</a>");
             exit;
             break;
         case "phpinfo":
             echo "System time: " . date("c") . "<br>";
             echo "Database time: " . sgsml_parser::sql_date();
             phpinfo();
             exit;
             break;
     }
 }
Exemplo n.º 21
0
<?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);
Exemplo n.º 22
0
     if ($build_data['CAN'][BUILD_CREATE]) {
         if ($planetrow['PLANET_GOVERNOR_ID'] == $hire) {
             $planetrow['PLANET_GOVERNOR_LEVEL']++;
             $query = '`PLANET_GOVERNOR_LEVEL` + 1';
         } else {
             $planetrow['PLANET_GOVERNOR_LEVEL'] = 1;
             $planetrow['PLANET_GOVERNOR_ID'] = $hire;
             $query = '1';
         }
         db_planet_set_by_id($planetrow['id'], "`PLANET_GOVERNOR_ID` = {$hire}, `PLANET_GOVERNOR_LEVEL` = {$query}");
         rpg_points_change($user['id'], RPG_GOVERNOR, -$build_data[BUILD_CREATE][RES_DARK_MATTER], sprintf($lang['ov_governor_purchase'], $lang['tech'][$hire], $hire, $planetrow['PLANET_GOVERNOR_LEVEL'], uni_render_planet_full($planetrow, '', false, true)));
         //  => 'Игрок купил Губернатора %1$s ID %2$d уровня %3$d на планету %4$s',
         // die();
     }
     sn_db_transaction_commit();
     sys_redirect('overview.php?mode=manage');
     die;
 }
 lng_include('mrc_mercenary');
 int_planet_pretemplate($planetrow, $template);
 foreach (sn_get_groups('governors') as $governor_id) {
     if ($planetrow['planet_type'] == PT_MOON && $governor_id == MRC_TECHNOLOGIST) {
         continue;
     }
     $governor_level = $planetrow['PLANET_GOVERNOR_ID'] == $governor_id ? $planetrow['PLANET_GOVERNOR_LEVEL'] : 0;
     $build_data = eco_get_build_data($user, $planetrow, $governor_id, $governor_level);
     $template->assign_block_vars('governors', array('ID' => $governor_id, 'NAME' => $lang['tech'][$governor_id], 'COST' => $build_data[BUILD_CREATE][RES_DARK_MATTER], 'MAX' => get_unit_param($governor_id, P_MAX_STACK), 'LEVEL' => $governor_level));
 }
 $user_dark_matter = mrc_get_level($user, false, RES_DARK_MATTER);
 $planet_density_index = $planetrow['density_index'];
 $density_price_chart = planet_density_price_chart($planet_density_index);
Exemplo n.º 23
0
// TODO ban
if ($template_result[F_BANNED_STATUS] && !$skip_ban_check) {
    if (defined('IN_API')) {
        return;
    }
    $bantime = date(FMT_DATE_TIME, $template_result[F_BANNED_STATUS]);
    // TODO: Add ban reason. Add vacation time. Add message window
    sn_sys_logout(false, true);
    message("{$lang['sys_banned_msg']} {$bantime}", $lang['ban_title']);
    die("{$lang['sys_banned_msg']} {$bantime}");
}
$template_result[F_USER_AUTHORIZED] = $sys_user_logged_in = !empty($user) && isset($user['id']) && $user['id'];
// !!! Просто $allow_anonymous используется в платежных модулях !!!
$allow_anonymous = $allow_anonymous || isset($sn_page_data['allow_anonymous']) && $sn_page_data['allow_anonymous'];
if (!$allow_anonymous && !$sys_user_logged_in) {
    sn_setcookie(SN_COOKIE, '', time() - PERIOD_WEEK, SN_ROOT_RELATIVE);
    sys_redirect(SN_ROOT_VIRTUAL . 'login.php');
}
$user_time_diff = user_time_diff_get();
//defined('SN_CLIENT_TIME_DIFF_SECONDS') or define('SN_CLIENT_TIME_DIFF_SECONDS', $user_time_diff[PLAYER_OPTION_TIME_DIFF]);
//defined('SN_CLIENT_TIME_UTC_OFFSET') or define('SN_CLIENT_TIME_UTC_OFFSET', $user_time_diff[PLAYER_OPTION_TIME_DIFF_UTC_OFFSET]);
//$time_diff = SN_CLIENT_TIME_DIFF_SECONDS + SN_CLIENT_TIME_UTC_OFFSET;
//defined('SN_CLIENT_TIME_DIFF') or define('SN_CLIENT_TIME_DIFF', $time_diff);
//defined('SN_CLIENT_TIME_LOCAL') or define('SN_CLIENT_TIME_LOCAL', SN_TIME_NOW + SN_CLIENT_TIME_DIFF);
global $time_diff;
define('SN_CLIENT_TIME_DIFF', $time_diff = $user_time_diff[PLAYER_OPTION_TIME_DIFF] + $user_time_diff[PLAYER_OPTION_TIME_DIFF_UTC_OFFSET]);
define('SN_CLIENT_TIME_LOCAL', SN_TIME_NOW + SN_CLIENT_TIME_DIFF);
!empty($user) && sys_get_param_id('only_hide_news') ? die(nws_mark_read($user)) : false;
!empty($user) && sys_get_param_id('survey_vote') ? die(survey_vote($user)) : false;
lng_load_i18n($sn_mvc['i18n'][$sn_page_name]);
execute_hooks($sn_mvc['model'][''], $template);