Updated install
Added Form manager Added session messages display Signed-off-by: Gregory PLANCHAT <g.planchat@gmail.com>
This commit is contained in:
parent
9636b4bb00
commit
5acde87794
220 changed files with 1962 additions and 1134 deletions
|
|
@ -34,8 +34,8 @@ define('IN_INSTALL', true);
|
|||
|
||||
define('STEP_SYSTEM', 1);
|
||||
define('STEP_DATABASE', 2);
|
||||
define('STEP_PROFILE', 3);
|
||||
define('STEP_UNIVERSE', 4);
|
||||
define('STEP_UNIVERSE', 3);
|
||||
define('STEP_PROFILE', 4);
|
||||
define('STEP_CONFIG', 5);
|
||||
|
||||
require_once dirname(dirname(__FILE__)) .'/application/bootstrap.php';
|
||||
|
|
@ -80,8 +80,7 @@ case 'intro':
|
|||
break;
|
||||
|
||||
case 'install':
|
||||
$session->addError('Test %s', 'Hello world!');
|
||||
if ($step != $session->getData('step')) {
|
||||
if ($step > $session->getData('step')) {
|
||||
$session->setData('step', 0);
|
||||
$response->setRedirect("?mode=intro", Wootook_Core_Controller_Response_Http::REDIRECT_TEMPORARY);
|
||||
$response->sendHeaders();
|
||||
|
|
@ -92,26 +91,52 @@ case 'install':
|
|||
case STEP_SYSTEM:
|
||||
if ($request->isPost()) {
|
||||
$form = new Wootook_Core_Form($session, array(
|
||||
'url_path' => 'text'
|
||||
'url_path' => 'text',
|
||||
'timezone' => 'text'
|
||||
));
|
||||
$form->addField('url_path');
|
||||
$form->setRequest($request);
|
||||
$form->populate();
|
||||
|
||||
if (!$form->validate()) {
|
||||
$session->setData('step', $step);
|
||||
$session->setData('step', STEP_SYSTEM);
|
||||
$session->setFormData($form->getData());
|
||||
var_dump($session);
|
||||
$response->setRedirect("?mode=install&step={$step}");
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_SYSTEM)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
$layout->getMessagesblock()->prepareMessages('install');
|
||||
$session->setBaseUrl($request->getPost('url_path'));
|
||||
|
||||
$session->setStep(STEP_DATABASE);
|
||||
$response->setRedirect("?mode=install&step={$nextStep}");
|
||||
$config = array(
|
||||
'global' => array(
|
||||
'storyline' => array(
|
||||
'universe' => 'legacies',
|
||||
'episode' => 'default',
|
||||
),
|
||||
'web' => array(
|
||||
'base_url' => $request->getPost('url_path')
|
||||
),
|
||||
'date' => array(
|
||||
'timezone' => $request->getPost('timezone')
|
||||
),
|
||||
'layout' => array(
|
||||
'page' => 'page.php',
|
||||
'admin' => 'admin.php',
|
||||
'empire' => 'empire.php'
|
||||
),
|
||||
'locales' => array(
|
||||
'fr' => 'fr_FR',
|
||||
'fr_FR' => 'fr_FR',
|
||||
'en' => 'en_US',
|
||||
'en_US' => 'en_US'
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
Wootook::writeConfig($config);
|
||||
|
||||
$session->setData('step', STEP_DATABASE);
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_DATABASE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
|
@ -133,43 +158,209 @@ case 'install':
|
|||
$form->populate();
|
||||
|
||||
if (!$form->validate()) {
|
||||
$session->setData('step', $step);
|
||||
$session->setFormData($request->getPost());
|
||||
$response->setRedirect("?mode=install&step={$step}");
|
||||
$session->setData('step', STEP_DATABASE);
|
||||
$session->setFormData($request->getData());
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_DATABASE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if ($request->getPost('test')) {
|
||||
$data = array(
|
||||
'status' => 'pending',
|
||||
'message' => ''
|
||||
);
|
||||
|
||||
try {
|
||||
$hostname = $request->getPost('host');
|
||||
$username = $request->getPost('user');
|
||||
$password = $request->getPost('password');
|
||||
$database = $request->getPost('dbname');
|
||||
$port = $request->getPost('port');
|
||||
|
||||
$connection = new Wootook_Database("mysql:dbname={$database};host={$hostname};port={$port}", $username, $password);
|
||||
$data['status'] = 'success';
|
||||
} catch (PDOException $e) {
|
||||
$data['status'] = 'error';
|
||||
$data['message'] = $e->getMessage();
|
||||
}
|
||||
|
||||
Wootook_Core_ErrorProfiler::unregister(true);
|
||||
$response->setHeader('Content-Type', 'application/json');
|
||||
$response->setBody(json_encode($data));
|
||||
|
||||
$response->sendHeaders();
|
||||
echo $response->sendBody();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
$layout->getMessagesblock()->prepareMessages('install');
|
||||
$session->setStep(STEP_PROFILE);
|
||||
$response->setRedirect("?mode=install&step={$nextStep}");
|
||||
|
||||
$config = Wootook::getConfig();
|
||||
$config['database'] = array(
|
||||
'core_setup' => array(
|
||||
'engine' => 'mysql',
|
||||
'options' => array(
|
||||
),
|
||||
'params' => array(
|
||||
'hostname' => $request->getPost('host'),
|
||||
'username' => $request->getPost('user'),
|
||||
'password' => $request->getPost('password'),
|
||||
'database' => $request->getPost('dbname'),
|
||||
'port' => $request->getPost('port')
|
||||
),
|
||||
'table_prefix' => $request->getPost('prefix'),
|
||||
),
|
||||
'core_read' => array(
|
||||
'engine' => 'mysql',
|
||||
'options' => array(
|
||||
),
|
||||
'params' => array(
|
||||
'hostname' => $request->getPost('host'),
|
||||
'username' => $request->getPost('user'),
|
||||
'password' => $request->getPost('password'),
|
||||
'database' => $request->getPost('dbname'),
|
||||
'port' => $request->getPost('port')
|
||||
),
|
||||
'table_prefix' => $request->getPost('prefix'),
|
||||
),
|
||||
'core_write' => array(
|
||||
'engine' => 'mysql',
|
||||
'options' => array(
|
||||
),
|
||||
'params' => array(
|
||||
'hostname' => $request->getPost('host'),
|
||||
'username' => $request->getPost('user'),
|
||||
'password' => $request->getPost('password'),
|
||||
'database' => $request->getPost('dbname'),
|
||||
'port' => $request->getPost('port')
|
||||
),
|
||||
'table_prefix' => $request->getPost('prefix'),
|
||||
),
|
||||
);
|
||||
|
||||
Wootook::writeConfig($config);
|
||||
|
||||
$session->setData('step', STEP_UNIVERSE);
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_UNIVERSE)));
|
||||
$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');
|
||||
$layout->load('install.step.database');
|
||||
break;
|
||||
|
||||
case STEP_UNIVERSE:
|
||||
if (empty($_POST)) {
|
||||
$session->setData('step', $step);
|
||||
$response->setRedirect("?mode=install&step={$nextStep}");
|
||||
if ($request->isPost()) {
|
||||
$form = new Wootook_Core_Form($session, array(
|
||||
'galaxies' => 'text',
|
||||
'systems' => 'text',
|
||||
'positions' => 'text',
|
||||
|
||||
'allow_spy_drone_attacks' => 'text',
|
||||
'use_large_numbers' => 'text'
|
||||
));
|
||||
$form->setRequest($request);
|
||||
$form->populate();
|
||||
|
||||
if (!$form->validate()) {
|
||||
$session->setData('step', STEP_UNIVERSE);
|
||||
$session->setFormData($request->getData());
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_PROFILE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
$config = Wootook::getConfig();
|
||||
$config['default'] = array(
|
||||
'engine' => array(
|
||||
'core' => array(
|
||||
'use_large_numbers' => (bool) $request->getPost('use_large_numbers')
|
||||
),
|
||||
'universe' => array(
|
||||
'galaxies' => $request->getPost('galaxies'),
|
||||
'systems' => $request->getPost('systems'),
|
||||
'positions' => $request->getPost('positions')
|
||||
),
|
||||
'combat' => array(
|
||||
'allow_spy_drone_attacks' => (bool) $request->getPost('allow_spy_drone_attacks')
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
Wootook::writeConfig($config);
|
||||
|
||||
$scriptPath = APPLICATION_PATH . 'code' . DIRECTORY_SEPARATOR . 'core'
|
||||
. 'Wootook' . DIRECTORY_SEPARATOR . 'Core' . DIRECTORY_SEPARATOR
|
||||
. 'install' . DIRECTORY_SEPARATOR . 'mysql5';
|
||||
$queue = new Wootook_Core_Setup_Model_Updater_ScriptQueue($scriptPath);
|
||||
|
||||
try {
|
||||
$updater = new Wootook_Core_Setup_Model_Updater();
|
||||
foreach ($queue as $installScript) {
|
||||
$updater->run($installScript);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$session->addSuccess(Wootook::__('An error occured durong game data initialization.'));
|
||||
$session->setData('step', STEP_SYSTEM);
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_SYSTEM)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
$session->addSuccess(Wootook::__('Game data successfully initialized.'));
|
||||
}
|
||||
|
||||
$layout->load('install.step.universe');
|
||||
break;
|
||||
|
||||
case STEP_PROFILE:
|
||||
if ($request->isPost()) {
|
||||
$form = new Wootook_Core_Form($session, array(
|
||||
'username' => 'text',
|
||||
'email' => 'text',
|
||||
'email_confirm' => 'text',
|
||||
'password' => 'text',
|
||||
'password_confirm' => 'text',
|
||||
));
|
||||
$form->setRequest($request);
|
||||
$form->populate();
|
||||
|
||||
if (!$form->validate()) {
|
||||
$session->setData('step', STEP_PROFILE);
|
||||
$session->setFormData($request->getData());
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_PROFILE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if ($request->getPost('password') != $request->getPost('password_confirm')) {
|
||||
$session->setData('step', STEP_PROFILE);
|
||||
$session->setFormData($request->getData());
|
||||
$session->addError(Wootook::__('Passwords does not match.'));
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_PROFILE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if ($request->getPost('email') != $request->getPost('email_confirm')) {
|
||||
$session->setData('step', STEP_PROFILE);
|
||||
$session->setFormData($request->getData());
|
||||
$session->addError(Wootook::__('e-mails does not match.'));
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_PROFILE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
Wootook_Empire_Model_User::register($request->getPost('username'), $request->getPost('email'), $request->getPost('password'));
|
||||
|
||||
$session->setData('step', STEP_UNIVERSE);
|
||||
$response->setRedirect(Wootook::getUrl('install/index.php', array('mode' => 'install', 'step' => STEP_UNIVERSE)));
|
||||
$response->sendHeaders();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
$layout->load('install.universe');
|
||||
$layout->load('install.step.profile');
|
||||
break;
|
||||
|
||||
case STEP_CONFIG:
|
||||
|
|
@ -367,96 +558,10 @@ EOF;
|
|||
$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 );
|
||||
$frame = parsetemplate ( $subTpl, $lang );
|
||||
}
|
||||
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 =<<<EOF
|
||||
<?php return array(
|
||||
'global' => 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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue