* All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * --> NOTICE <-- * This file is part of the core development branch, changing its contents will * make you unable to use the automatic updates manager. Please refer to the * documentation for further information about customizing Wootook. * */ define('INSIDE' , true); define('INSTALL', false); define('IN_INSTALL', true); define('STEP_SYSTEM', 1); define('STEP_DATABASE', 2); define('STEP_PROFILE', 3); define('STEP_UNIVERSE', 4); define('STEP_CONFIG', 5); require_once dirname(dirname(__FILE__)) .'/application/bootstrap.php'; //include(ROOT_PATH . 'includes/databaseinfos.php'); //include(ROOT_PATH . 'includes/migrateinfo.php'); $mode = isset($_GET['mode']) ? strval($_GET['mode']) : 'intro'; $step = isset($_GET['step']) ? intval($_GET['step']) : 1; $prevStep = $step - 1; $nextStep = $step + 1; includeLang('install/install'); $baseUrl = (isset($_SERVER["HTTPS"]) && strtolower($_SERVER["HTTPS"]) == "on" ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . ($_SERVER["SERVER_PORT"] != "80" ? ":{$_SERVER["SERVER_PORT"]}" : ''); if (isset($_SERVER['REQUEST_URI'])) { if (strrpos($_SERVER['REQUEST_URI'], '/') == (strlen($_SERVER['REQUEST_URI']) - 1)) { $baseUrl .= dirname($_SERVER['REQUEST_URI']) . '/'; } else { $baseUrl .= dirname(dirname($_SERVER['REQUEST_URI'])) . '/'; } } Wootook::setConfig('global/web/base_url', $baseUrl); Wootook::setConfig('global/package', 'install'); Wootook::setConfig('global/theme', 'default'); Wootook::setconfig('global/layout', array( 'page' => 'page.php', 'install' => 'install.php' )); $session = Wootook::getSession('install'); $layout = new Wootook_Core_Layout(); $request = new Wootook_Core_Controller_Request_Http(); $response = new Wootook_Core_Controller_Response_Http(); switch ($mode) { case 'intro': $layout->load('install.intro'); $session->setData('step', 1); break; case 'install': $session->addError('Test %s', 'Hello world!'); if ($step != $session->getData('step')) { $session->setData('step', 0); $response->setRedirect("?mode=intro", Wootook_Core_Controller_Response_Http::REDIRECT_TEMPORARY); $response->sendHeaders(); exit(0); } switch ($step) { case STEP_SYSTEM: if ($request->isPost()) { $form = new Wootook_Core_Form($session, array( 'url_path' => 'text' )); $form->addField('url_path'); $form->setRequest($request); $form->populate(); if (!$form->validate()) { $session->setData('step', $step); $session->setFormData($form->getData()); var_dump($session); $response->setRedirect("?mode=install&step={$step}"); $response->sendHeaders(); exit(0); } $layout->getMessagesblock()->prepareMessages('install'); $session->setBaseUrl($request->getPost('url_path')); $session->setStep(STEP_DATABASE); $response->setRedirect("?mode=install&step={$nextStep}"); $response->sendHeaders(); exit(0); } $layout->load('install.step.system'); break; case STEP_DATABASE: if ($request->isPost()) { $form = new Wootook_Core_Form($session, array( 'host' => 'text', 'port' => 'text', 'user' => 'text', 'password' => 'text', 'dbname' => 'text', 'prefix' => 'text', )); $form->setRequest($request); $form->populate(); if (!$form->validate()) { $session->setData('step', $step); $session->setFormData($request->getPost()); $response->setRedirect("?mode=install&step={$step}"); $response->sendHeaders(); exit(0); } $layout->getMessagesblock()->prepareMessages('install'); $session->setStep(STEP_PROFILE); $response->setRedirect("?mode=install&step={$nextStep}"); $response->sendHeaders(); exit(0); } $layout->load('install.database'); break; case STEP_PROFILE: if (empty($_POST)) { $session->setData('step', $step); $response->setRedirect("?mode=install&step={$nextStep}"); $response->sendHeaders(); exit(0); } $layout->load('install.profile'); break; case STEP_UNIVERSE: if (empty($_POST)) { $session->setData('step', $step); $response->setRedirect("?mode=install&step={$nextStep}"); $response->sendHeaders(); exit(0); } $layout->load('install.universe'); break; case STEP_CONFIG: if (empty($_POST)) { $session->setData('step', $step); $response->setRedirect("?mode=install&step={$nextStep}"); $response->sendHeaders(); exit(0); } $layout->load('install.config'); break; } break; case 'ins': if ($page == 1) { if (isset($_GET['error']) && intval($_GET['error']) == 1) { adminMessage ($lang['ins_error1'], $lang['ins_error']); } elseif (isset($_GET['error']) && intval($_GET['error']) == 2) { adminMessage ($lang['ins_error2'], $lang['ins_error']); } $subTpl = gettemplate('install/ins_form'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate($subTpl, $bloc); } else if ($page == 2) { $host = $_POST['host']; $user = $_POST['user']; $pass = $_POST['passwort']; $prefix = $_POST['prefix']; $db = $_POST['db']; $connection = @mysql_connect($host, $user, $pass); if (!$connection) { header("Location: ?mode=ins&page=1&error=1"); exit(); } $dbselect = @mysql_select_db($db); if (!$dbselect) { header("Location: ?mode=ins&page=1&error=1"); exit(); } $dz = fopen("../config.php", "w"); if (!$dz) { header("Location: ?mode=ins&page=1&error=2"); exit(); } $fileData =<< array( 'database' => array( 'engine' => 'mysql', 'options' => array( 'hostname' => '{$host}', 'username' => '{$user}', 'password' => '{$pass}', 'database' => '{$db}' ), 'table_prefix' => '{$prefix}', ) ) ); EOF; fwrite($dz, $fileData); fclose($dz); doquery ( $QryTableAks , 'aks' ); doquery ( $QryTableAnnonce , 'annonce' ); doquery ( $QryTableAlliance , 'alliance' ); doquery ( $QryTableBanned , 'banned' ); doquery ( $QryTableBuddy , 'buddy' ); doquery ( $QryTableChat , 'chat' ); doquery ( $QryTableConfig , 'config' ); doquery ( $QryInsertConfig , 'config' ); doquery ( $QryTabledeclared , 'declared' ); doquery ( $QryTableErrors , 'errors' ); doquery ( $QryTableFleets , 'fleets' ); doquery ( $QryTableGalaxy , 'galaxy' ); doquery ( $QryTableIraks , 'iraks' ); doquery ( $QryTableLunas , 'lunas' ); doquery ( $QryTableMessages , 'messages' ); doquery ( $QryTableNotes , 'notes' ); doquery ( $QryTablePlanets , 'planets' ); doquery ( $QryTableRw , 'rw' ); doquery ( $QryTableStatPoints , 'statpoints' ); doquery ( $QryTableUsers , 'users' ); doquery ( $QryTableMulti , 'multi' ); $subTpl = gettemplate ('install/ins_form_done'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate ( $subTpl, $bloc ); } elseif ($page == 3) { if (isset($_GET['error']) && intval($_GET['error']) == 3) { adminMessage($lang['ins_error3'], $lang['ins_error']); } $subTpl = gettemplate ('install/ins_acc'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate ( $subTpl, $bloc ); } elseif ($page == 4) { $adm_user = $_POST['adm_user']; $adm_pass = $_POST['adm_pass']; $adm_email = $_POST['adm_email']; $adm_planet = $_POST['adm_planet']; $adm_sex = $_POST['adm_sex']; $md5pass = md5($adm_pass); if (!isset($_POST['adm_user'])) { header("Location: ?mode=ins&page=3&error=3"); exit(); } if (!isset($_POST['adm_pass'])) { header("Location: ?mode=ins&page=3&error=3"); exit(); } if (!isset($_POST['adm_email'])) { header("Location: ?mode=ins&page=3&error=3"); exit(); } if (!isset($_POST['adm_planet'])) { header("Location: ?mode=ins&page=3&error=3"); exit(); } $config = include(ROOT_PATH . 'config.php'); $db_host = $config['global']['database']['options']['hostname']; $db_user = $config['global']['database']['options']['username']; $db_pass = $config['global']['database']['options']['password']; $db_db = $config['global']['database']['options']['database']; $db_prefix = $config['global']['database']['table_prefix']; $connection = @mysql_connect($db_host, $db_user, $db_pass); if (!$connection) { header("Location: ?mode=ins&page=1&error=1"); exit(); } $dbselect = @mysql_select_db($db_db); if (!$dbselect) { header("Location: ?mode=ins&page=1&error=1"); exit(); } $QryInsertAdm = "INSERT INTO {{table}} SET "; $QryInsertAdm .= "`id` = '1', "; $QryInsertAdm .= "`username` = '". $adm_user ."', "; $QryInsertAdm .= "`email` = '". $adm_email ."', "; $QryInsertAdm .= "`email_2` = '". $adm_email ."', "; $QryInsertAdm .= "`authlevel` = '3', "; $QryInsertAdm .= "`sex` = '". $adm_sex ."', "; $QryInsertAdm .= "`id_planet` = '1', "; $QryInsertAdm .= "`galaxy` = '1', "; $QryInsertAdm .= "`system` = '1', "; $QryInsertAdm .= "`planet` = '1', "; $QryInsertAdm .= "`current_planet` = '1', "; $QryInsertAdm .= "`register_time` = '". time() ."', "; $QryInsertAdm .= "`password` = '". $md5pass ."';"; doquery($QryInsertAdm, 'users'); $QryAddAdmPlt = "INSERT INTO {{table}} SET "; $QryAddAdmPlt .= "`name` = '". $adm_planet ."', "; $QryAddAdmPlt .= "`id_owner` = '1', "; $QryAddAdmPlt .= "`galaxy` = '1', "; $QryAddAdmPlt .= "`system` = '1', "; $QryAddAdmPlt .= "`planet` = '1', "; $QryAddAdmPlt .= "`last_update` = '". time() ."', "; $QryAddAdmPlt .= "`planet_type` = '1', "; $QryAddAdmPlt .= "`image` = 'normaltempplanet02', "; $QryAddAdmPlt .= "`diameter` = '12750', "; $QryAddAdmPlt .= "`field_max` = '163', "; $QryAddAdmPlt .= "`temp_min` = '47', "; $QryAddAdmPlt .= "`temp_max` = '87', "; $QryAddAdmPlt .= "`metal` = '500', "; $QryAddAdmPlt .= "`metal_perhour` = '0', "; $QryAddAdmPlt .= "`metal_max` = '1000000', "; $QryAddAdmPlt .= "`crystal` = '500', "; $QryAddAdmPlt .= "`crystal_perhour` = '0', "; $QryAddAdmPlt .= "`crystal_max` = '1000000', "; $QryAddAdmPlt .= "`deuterium` = '500', "; $QryAddAdmPlt .= "`deuterium_perhour` = '0', "; $QryAddAdmPlt .= "`deuterium_max` = '1000000';"; doquery($QryAddAdmPlt, 'planets'); $QryAddAdmGlx = "INSERT INTO {{table}} SET "; $QryAddAdmGlx .= "`galaxy` = '1', "; $QryAddAdmGlx .= "`system` = '1', "; $QryAddAdmGlx .= "`planet` = '1', "; $QryAddAdmGlx .= "`id_planet` = '1'; "; doquery($QryAddAdmGlx, 'galaxy'); doquery("UPDATE {{table}} SET `config_value` = '1' WHERE `config_name` = 'LastSettedGalaxyPos';", 'config'); doquery("UPDATE {{table}} SET `config_value` = '1' WHERE `config_name` = 'LastSettedSystemPos';", 'config'); doquery("UPDATE {{table}} SET `config_value` = '1' WHERE `config_name` = 'LastSettedPlanetPos';", 'config'); doquery("UPDATE {{table}} SET `config_value` = `config_value` + '1' WHERE `config_name` = 'users_amount' LIMIT 1;", 'config'); $subTpl = gettemplate ('install/ins_acc_done'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate ( $subTpl, $bloc ); } break; case 'goto': if ($page == 1) { $subTpl = gettemplate ('install/ins_goto_intro'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate ( $subTpl, $bloc ); } elseif ($page == 2) { if ($_GET['error'] == 1) { adminMessage ($lang['ins_error1'], $lang['ins_error']); } elseif ($_GET['error'] == 2) { adminMessage ($lang['ins_error2'], $lang['ins_error']); } $subTpl = gettemplate ('install/ins_goto_form'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate ( $subTpl, $bloc ); } elseif ($page == 3) { $host = $_POST['host']; $user = $_POST['user']; $pass = $_POST['passwort']; $prefix = $_POST['prefix']; $db = $_POST['db']; if (!mysql_connect($host, $user, $pass)) { header("Location: ?mode=goto&page=2&error=1"); exit(); } if (!mysql_select_db($db)) { header("Location: ?mode=goto&page=2&error=1"); exit(); } $dz = fopen("../config.php", "w"); if (!$dz) { header("Location: ?mode=ins&page=1&error=2"); exit(); } $fileData =<< array( 'database' => array( 'engine' => 'mysql', 'options' => array( 'hostname' => '{$host}', 'username' => '{$user}', 'password' => '{$pass}', 'database' => '{$db}' ), 'table_prefix' => '{$prefix}', ) ) ); EOF; fwrite($dz, $fileData); fclose($dz); foreach ($QryMigrate as $query) { doquery($query, $prefix); } $subTpl = gettemplate('install/ins_goto_done'); $bloc = $lang; $bloc['dpath'] = $dpath; $frame = parsetemplate($subTpl, $bloc); } break; case 'bye': header("Location: ../"); break; default: header('Location: ?mode=intro'); die(); } echo $layout->render();