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'); }
/** * 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'); }
$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; }
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'); }
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; }