function show()
 {
     global $LNG;
     $referralID = HTTP::_GP('ref', 0);
     if (!empty($referralID)) {
         $this->redirectTo('index.php?page=register&referralID=' . $referralID);
     }
     $universeSelect = array();
     foreach (Universe::availableUniverses() as $uniId) {
         $config = Config::get($uniId);
         $universeSelect[$uniId] = $config->uni_name . ($config->game_disable == 0 ? $LNG['uni_closed'] : '');
     }
     $Code = HTTP::_GP('code', 0);
     $loginCode = false;
     if (isset($LNG['login_error_' . $Code])) {
         $loginCode = $LNG['login_error_' . $Code];
     }
     $config = Config::get();
     $this->assign(array('universeSelect' => $universeSelect, 'code' => $loginCode, 'descHeader' => sprintf($LNG['loginWelcome'], $config->game_name), 'descText' => sprintf($LNG['loginServerDesc'], $config->game_name), 'loginInfo' => sprintf($LNG['loginInfo'], '<a href="index.php?page=rules">' . $LNG['menu_rules'] . '</a>')));
     $screenshots = array();
     $directoryIterator = new DirectoryIterator('styles/resource/images/login/screens/');
     foreach ($directoryIterator as $fileInfo) {
         /** @var $fileInfo DirectoryIterator */
         if (!$fileInfo->isFile()) {
             continue;
         }
         $thumbnail = 'styles/resource/images/login/screens/' . $fileInfo->getFilename();
         if (file_exists('styles/resource/images/login/screens/thumbnails/' . $fileInfo->getFilename())) {
             $thumbnail = 'styles/resource/images/login/screens/thumbnails/' . $fileInfo->getFilename();
         }
         $screenshots[] = array('path' => 'styles/resource/images/login/screens/' . $fileInfo->getFilename(), 'thumbnail' => $thumbnail);
     }
     $this->assign(array('screenshots' => $screenshots));
     $this->display('page.index.default.tpl');
 }
Exemple #2
0
/**
 *  2Moons
 *  Copyright (C) 2012 Jan Kröpke
 *
 * For the full copyright and license information, please view the LICENSE
 *
 * @package 2Moons
 * @author Jan Kröpke <*****@*****.**>
 * @copyright 2012 Jan Kröpke <*****@*****.**>
 * @licence MIT
 * @version 1.7.2 (2013-03-18)
 * @info $Id$
 * @link http://2moons.cc/
 */
function ShowTopnavPage()
{
    global $LNG, $USER;
    $template = new template();
    $universeSelect = array();
    foreach (Universe::availableUniverses() as $uniId) {
        $config = Config::get($uniId);
        $universeSelect[$uniId] = sprintf('%s (ID: %d)', $config->uni_name, $uniId);
    }
    ksort($universeSelect);
    $template->assign_vars(array('ad_authlevel_title' => $LNG['ad_authlevel_title'], 're_reset_universe' => $LNG['re_reset_universe'], 'mu_universe' => $LNG['mu_universe'], 'mu_moderation_page' => $LNG['mu_moderation_page'], 'adm_cp_title' => $LNG['adm_cp_title'], 'adm_cp_index' => $LNG['adm_cp_index'], 'adm_cp_logout' => $LNG['adm_cp_logout'], 'sid' => session_id(), 'id' => $USER['id'], 'authlevel' => $USER['authlevel'], 'AvailableUnis' => $universeSelect, 'UNI' => Universe::getEmulated()));
    $template->show('ShowTopnavPage.tpl');
}
 function show()
 {
     global $LNG;
     $universeSelect = array();
     $referralData = array('id' => 0, 'name' => '');
     $accountName = "";
     $externalAuth = HTTP::_GP('externalAuth', array());
     $referralID = HTTP::_GP('referralID', 0);
     foreach (Universe::availableUniverses() as $uniId) {
         $config = Config::get($uniId);
         $universeSelect[$uniId] = $config->uni_name . ($config->game_disable == 0 || $config->reg_closed == 1 ? $LNG['uni_closed'] : '');
     }
     if (!isset($externalAuth['account'], $externalAuth['method'])) {
         $externalAuth['account'] = 0;
         $externalAuth['method'] = '';
     } else {
         $externalAuth['method'] = strtolower(str_replace(array('_', '\\', '/', '.', ""), '', $externalAuth['method']));
     }
     if (!empty($externalAuth['account']) && file_exists('includes/extauth/' . $externalAuth['method'] . '.class.php')) {
         $path = 'includes/extauth/' . $externalAuth['method'] . '.class.php';
         require $path;
         $methodClass = ucwords($externalAuth['method']) . 'Auth';
         /** @var $authObj externalAuth */
         $authObj = new $methodClass();
         if (!$authObj->isActiveMode()) {
             $this->redirectTo('index.php?code=5');
         }
         if (!$authObj->isValid()) {
             $this->redirectTo('index.php?code=4');
         }
         $accountData = $authObj->getAccountData();
         $accountName = $accountData['name'];
     }
     $config = Config::get();
     if ($config->ref_active == 1 && !empty($referralID)) {
         $db = Database::get();
         $sql = "SELECT username FROM %%USERS%% WHERE id = :referralID AND universe = :universe;";
         $referralAccountName = $db->selectSingle($sql, array(':referralID' => $referralID, ':universe' => Universe::current()), 'username');
         if (!empty($referralAccountName)) {
             $referralData = array('id' => $referralID, 'name' => $referralAccountName);
         }
     }
     $this->assign(array('referralData' => $referralData, 'accountName' => $accountName, 'externalAuth' => $externalAuth, 'universeSelect' => $universeSelect, 'registerRulesDesc' => sprintf($LNG['registerRulesDesc'], '<a href="index.php?page=rules">' . $LNG['menu_rules'] . '</a>')));
     $this->display('page.register.default.tpl');
 }
    function run()
    {
        $config = Config::get(ROOT_UNI);
        $unis = Universe::availableUniverses();
        //Delete old messages
        $del_before = TIMESTAMP - $config->del_oldstuff * 86400;
        $del_inactive = TIMESTAMP - $config->del_user_automatic * 86400;
        $del_deleted = TIMESTAMP - $config->del_user_manually * 86400;
        if ($del_inactive === TIMESTAMP) {
            $del_inactive = 2147483647;
        }
        $sql = 'DELETE FROM %%MESSAGES%% WHERE `message_time` < :time;';
        Database::get()->delete($sql, array(':time' => $del_before));
        $sql = 'DELETE FROM %%ALLIANCE%% WHERE `ally_members` = 0;';
        Database::get()->delete($sql);
        $sql = 'DELETE FROM %%PLANETS%% WHERE `destruyed` < :time AND `destruyed` != 0;';
        Database::get()->delete($sql, array(':time' => TIMESTAMP));
        $sql = 'DELETE FROM %%SESSION%% WHERE `lastonline` < :time;';
        Database::get()->delete($sql, array(':time' => TIMESTAMP - SESSION_LIFETIME));
        $sql = 'DELETE FROM %%FLEETS_EVENT%% WHERE fleetID NOT IN (SELECT fleet_id FROM %%FLEETS%%);';
        Database::get()->delete($sql);
        $sql = 'UPDATE %%USERS%% SET `email_2` = `email` WHERE `setmail` < :time;';
        Database::get()->update($sql, array(':time' => TIMESTAMP));
        $sql = 'SELECT `id` FROM %%USERS%% WHERE `authlevel` = :authlevel
		AND ((`db_deaktjava` != 0 AND `db_deaktjava` < :timeDeleted) OR `onlinetime` < :timeInactive);';
        $deleteUserIds = Database::get()->select($sql, array(':authlevel' => AUTH_USR, ':timeDeleted' => $del_deleted, ':timeInactive' => $del_inactive));
        if (empty($deleteUserIds)) {
            foreach ($deleteUserIds as $dataRow) {
                PlayerUtil::deletePlayer($dataRow['id']);
            }
        }
        foreach ($unis as $uni) {
            $sql = 'SELECT units FROM %%TOPKB%% WHERE `universe` = :universe ORDER BY units DESC LIMIT 99,1;';
            $battleHallLowest = Database::get()->selectSingle($sql, array(':universe' => $uni), 'units');
            if (!is_null($battleHallLowest)) {
                $sql = 'DELETE %%TOPKB%%, %%TOPKB_USERS%%
				FROM %%TOPKB%%
				INNER JOIN %%TOPKB_USERS%% USING (rid)
				WHERE `universe` = :universe AND `units` < :battleHallLowest;';
                Database::get()->delete($sql, array(':universe' => $uni, ':battleHallLowest' => $battleHallLowest));
            }
        }
        $sql = 'DELETE FROM %%RW%% WHERE `time` < :time AND `rid` NOT IN (SELECT `rid` FROM %%TOPKB%%);';
        Database::get()->delete($sql, array(':time' => $del_before));
    }
 function show()
 {
     global $LNG;
     $referralID = HTTP::_GP('ref', 0);
     if (!empty($referralID)) {
         $this->redirectTo('index.php?page=register&referralID=' . $referralID);
     }
     $universeSelect = array();
     foreach (Universe::availableUniverses() as $uniId) {
         $config = Config::get($uniId);
         $universeSelect[$uniId] = $config->uni_name . ($config->game_disable == 0 ? $LNG['uni_closed'] : '');
     }
     $Code = HTTP::_GP('code', 0);
     $loginCode = false;
     if (isset($LNG['login_error_' . $Code])) {
         $loginCode = $LNG['login_error_' . $Code];
     }
     $config = Config::get();
     $this->assign(array('universeSelect' => $universeSelect, 'code' => $loginCode, 'descHeader' => sprintf($LNG['loginWelcome'], $config->game_name), 'descText' => sprintf($LNG['loginServerDesc'], $config->game_name), 'loginInfo' => sprintf($LNG['loginInfo'], '<a href="index.php?page=rules">' . $LNG['menu_rules'] . '</a>')));
     $this->display('page.index.default.tpl');
 }
Exemple #6
0
 $sql = "SELECT \n\tuser.*,\n\tCOUNT(message.message_id) as messages\n\tFROM %%USERS%% as user\n\tLEFT JOIN %%MESSAGES%% as message ON message.message_owner = user.id AND message.message_unread = :unread\n\tWHERE user.id = :userId\n\tGROUP BY message.message_owner;";
 $USER = $db->selectSingle($sql, array(':unread' => 1, ':userId' => $session->userId));
 if (empty($USER)) {
     HTTP::redirectTo('index.php?code=3');
 }
 $LNG = new Language($USER['lang']);
 $LNG->includeData(array('L18N', 'INGAME', 'TECH', 'CUSTOM'));
 $THEME->setUserTheme($USER['dpath']);
 if ($config->game_disable == 0 && $USER['authlevel'] == AUTH_USR) {
     ShowErrorPage::printError($LNG['sys_closed_game'] . '<br><br>' . $config->close_reason, false);
 }
 if ($USER['bana'] == 1) {
     ShowErrorPage::printError("<font size=\"6px\">" . $LNG['css_account_banned_message'] . "</font><br><br>" . sprintf($LNG['css_account_banned_expire'], _date($LNG['php_tdformat'], $USER['banaday'], $USER['timezone'])) . "<br><br>" . $LNG['css_goto_homeside'], false);
 }
 if (MODE === 'INGAME') {
     $universeAmount = count(Universe::availableUniverses());
     if (Universe::current() != $USER['universe'] && $universeAmount > 1) {
         HTTP::redirectToUniverse($USER['universe']);
     }
     $session->selectActivePlanet();
     $sql = "SELECT * FROM %%PLANETS%% WHERE id = :planetId;";
     $PLANET = $db->selectSingle($sql, array(':planetId' => $session->planetId));
     if (empty($PLANET)) {
         $sql = "SELECT * FROM %%PLANETS%% WHERE id = :planetId;";
         $PLANET = $db->selectSingle($sql, array(':planetId' => $USER['id_planet']));
         if (empty($PLANET)) {
             throw new Exception("Main Planet does not exist!");
         } else {
             $session->planetId = $USER['id_planet'];
         }
     }
 protected function display($file)
 {
     global $LNG;
     $this->save();
     if ($this->getWindow() !== 'ajax') {
         $this->getPageData();
     }
     $this->assign(array('lang' => $LNG->getLanguage(), 'bodyclass' => $this->getWindow(), 'basepath' => PROTOCOL . HTTP_HOST . HTTP_BASE, 'isMultiUniverse' => count(Universe::availableUniverses()) > 1));
     $this->assign(array('LNG' => $LNG), false);
     $this->tplObj->display('extends:layout.' . $this->getWindow() . '.tpl|' . $file);
     exit;
 }
Exemple #8
0
function ShowUniversePage()
{
    global $LNG, $USER;
    $template = new template();
    $action = HTTP::_GP('action', '');
    $universe = HTTP::_GP('uniID', 0);
    switch ($action) {
        case 'open':
            $config = Config::get($universe);
            $config->game_disable = 1;
            $config->save();
            break;
        case 'closed':
            $config = Config::get($universe);
            $config->game_disable = 0;
            $config->save();
            break;
        case 'delete':
            if (!empty($universe) && $universe != ROOT_UNI && $universe != Universe::current()) {
                $GLOBALS['DATABASE']->query("DELETE FROM " . ALLIANCE . ", " . ALLIANCE_RANK . ", " . ALLIANCE_REQUEST . " \n\t\t\t\tUSING " . ALLIANCE . " \n\t\t\t\tLEFT JOIN " . ALLIANCE_RANK . " ON " . ALLIANCE . ".id = " . ALLIANCE_RANK . ".allianceID\n\t\t\t\tLEFT JOIN " . ALLIANCE_REQUEST . " ON " . ALLIANCE . ".id = " . ALLIANCE_REQUEST . " .allianceID\n\t\t\t\tWHERE ally_universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . BANNED . " WHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . BUDDY . ", " . BUDDY_REQUEST . "\n\t\t\t\tUSING " . BUDDY . "\n\t\t\t\tLEFT JOIN " . BUDDY_REQUEST . " ON " . BUDDY . ".id = " . BUDDY_REQUEST . ".id\n\t\t\t\tWHERE " . BUDDY . ".universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . CONFIG . " WHERE uni = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . DIPLO . " WHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . FLEETS . ", " . FLEETS_EVENT . ", " . AKS . ", " . LOG_FLEETS . "\n\t\t\t\tUSING " . FLEETS . "\n\t\t\t\tLEFT JOIN " . FLEETS_EVENT . " ON " . FLEETS . ".fleet_id = " . FLEETS_EVENT . ".fleetID\n\t\t\t\tLEFT JOIN " . AKS . " ON " . FLEETS . ".fleet_group = " . AKS . ".id\n\t\t\t\tLEFT JOIN " . LOG_FLEETS . " ON " . FLEETS . ".fleet_id = " . LOG_FLEETS . ".fleet_id\n\t\t\t\tWHERE " . FLEETS . ".fleet_universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . MESSAGES . " WHERE message_universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . NOTES . " WHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . PLANETS . " WHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . STATPOINTS . " WHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . TICKETS . ", " . TICKETS_ANSWER . "\n\t\t\t\tUSING " . TICKETS . "\n\t\t\t\tLEFT JOIN " . TICKETS_ANSWER . " ON " . TICKETS . ".ticketID = " . TICKETS_ANSWER . ".ticketID\n\t\t\t\tWHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . TOPKB . " WHERE universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . USERS . ", " . USERS_ACS . ", " . USERS_AUTH . ", " . TOPKB_USERS . ", " . SESSION . ", " . SHORTCUTS . ", " . RECORDS . "\n\t\t\t\tUSING " . USERS . "\n\t\t\t\tLEFT JOIN " . USERS_ACS . " ON " . USERS . ".id = " . USERS_ACS . ".userID\n\t\t\t\tLEFT JOIN " . USERS_AUTH . " ON " . USERS . ".id = " . USERS_AUTH . ".id\n\t\t\t\tLEFT JOIN " . TOPKB_USERS . " ON " . USERS . ".id = " . TOPKB_USERS . ".uid\n\t\t\t\tLEFT JOIN " . SESSION . " ON " . USERS . ".id = " . SESSION . ".userID\n\t\t\t\tLEFT JOIN " . SHORTCUTS . " ON " . USERS . ".id = " . SHORTCUTS . ".ownerID\n\t\t\t\tLEFT JOIN " . RECORDS . " ON " . USERS . ".id = " . RECORDS . ".userID\n\t\t\t\tLEFT JOIN " . LOSTPASSWORD . " ON " . USERS . ".id = " . LOSTPASSWORD . ".userID\n\t\t\t\tWHERE " . USERS . ".universe = " . $universe . ";");
                $GLOBALS['DATABASE']->query("DELETE FROM " . USERS_VALID . " WHERE universe = " . $universe . ";");
                if (Universe::getEmulated() == $universe) {
                    Universe::setEmulated(Universe::current());
                }
                if (count(Universe::availableUniverses()) == 2) {
                    // Hack The Session
                    setcookie(session_name(), session_id(), SESSION_LIFETIME, HTTP_BASE, NULL, HTTPS, true);
                    HTTP::redirectTo("../admin.php?reload=r");
                }
            }
            break;
        case 'create':
            $universeCount = count(Universe::availableUniverses());
            // Check Multiuniverse Support
            $ch = curl_init();
            if ($universeCount == 1) {
                curl_setopt($ch, CURLOPT_URL, PROTOCOL . HTTP_HOST . HTTP_BASE . "uni" . ROOT_UNI . "/");
            } else {
                curl_setopt($ch, CURLOPT_URL, PROTOCOL . HTTP_HOST . HTTP_BASE);
            }
            curl_setopt($ch, CURLOPT_HTTPGET, true);
            curl_setopt($ch, CURLOPT_AUTOREFERER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; 2Moons/" . Config::get()->VERSION . "; +http://2moons.cc)");
            curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3", "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4"));
            curl_exec($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            if ($httpCode != 302) {
                $template = new template();
                $template->message(str_replace(array('{NGINX-CODE}'), array('rewrite /(.*)/?uni[0-9]+/?(.*) /$1/$2 break;'), $LNG->getTemplate('createUniverseInfo')) . '<a href="javascript:window.history.back();"><button>' . $LNG['uvs_back'] . '</button></a>' . '<a href="javascript:window.location.reload();"><button>' . $LNG['uvs_reload'] . '</button></a>');
                exit;
            }
            $config = Config::get();
            $configSQL = array();
            foreach (Config::getGlobalConfigKeys() as $basicConfigKey) {
                $configSQL[] = '`' . $basicConfigKey . '` = "' . $config->{$basicConfigKey} . '"';
            }
            $configSQL[] = '`uni_name` = "' . $LNG['fcm_universe'] . ' ' . ($universeCount + 1) . '"';
            $configSQL[] = '`close_reason` = ""';
            $configSQL[] = '`OverviewNewsText` = "' . $GLOBALS['DATABASE']->escape($config->OverviewNewsText) . '"';
            $GLOBALS['DATABASE']->query("INSERT INTO " . CONFIG . " SET " . implode(', ', $configSQL) . ";");
            $newUniverse = $GLOBALS['DATABASE']->GetInsertID();
            Config::reload();
            list($userID, $planetID) = PlayerUtil::createPlayer($newUniverse, $USER['username'], '', $USER['email'], $USER['lang'], 1, 1, 1, NULL, AUTH_ADM);
            $GLOBALS['DATABASE']->query("UPDATE " . USERS . " SET password = '******'password'] . "' WHERE id = " . $userID . ";");
            if ($universeCount === 1) {
                // Hack The Session
                setcookie(session_name(), session_id(), SESSION_LIFETIME, HTTP_ROOT . 'uni' . $USER['universe'] . '/', NULL, HTTPS, true);
                HTTP::redirectTo("uni" . $USER['universe'] . "/admin.php?reload=r");
            }
            break;
    }
    $uniList = array();
    $uniResult = $GLOBALS['DATABASE']->query("SELECT uni, users_amount, game_disable, energySpeed, halt_speed, resource_multiplier, fleet_speed, game_speed, uni_name, COUNT(DISTINCT inac.id) as inactive, COUNT(planet.id) as planet\n\tFROM " . CONFIG . " conf\n\tLEFT JOIN " . USERS . " as inac ON uni = inac.universe AND inac.onlinetime < " . (TIMESTAMP - INACTIVE) . "\n\tLEFT JOIN " . PLANETS . " as planet ON uni = planet.universe\n\tGROUP BY conf.uni, inac.universe, planet.universe\n\tORDER BY uni ASC;");
    while ($uniRow = $GLOBALS['DATABASE']->fetch_array($uniResult)) {
        $uniList[$uniRow['uni']] = $uniRow;
    }
    $template->assign_vars(array('uniList' => $uniList, 'SID' => session_id()));
    $template->show('UniversePage.tpl');
}
Exemple #9
0
 public function save($options = NULL)
 {
     if (empty($this->updateRecords)) {
         // Do nothing here.
         return true;
     }
     if (is_null($options)) {
         $options = array();
     }
     $options += array('noGlobalSave' => false);
     $updateData = array();
     $params = array();
     foreach ($this->updateRecords as $columnName) {
         $updateData[] = '`' . $columnName . '` = :' . $columnName;
         $params[':' . $columnName] = $this->configData[$columnName];
         //TODO: find a better way ...
         if (!$options['noGlobalSave'] && in_array($columnName, self::$globalConfigKeys)) {
             foreach (Universe::availableUniverses() as $universeId) {
                 if ($universeId != $this->configData['uni']) {
                     $config = Config::get();
                     $config->{$columnName} = $this->configData[$columnName];
                     $config->save(array('noGlobalSave' => true));
                 }
             }
         }
     }
     $sql = 'UPDATE %%CONFIG%% SET ' . implode(', ', $updateData) . ' WHERE `UNI` = :universe';
     $params[':universe'] = $this->configData['uni'];
     $db = Database::get();
     $db->update($sql, $params);
     $this->updateRecords = array();
     return true;
 }