Updated Database component

Signed-off-by: Gregory PLANCHAT <g.planchat@gmail.com>
This commit is contained in:
Gregory PLANCHAT 2012-03-10 08:17:38 +01:00
commit 802be5f8c3
23 changed files with 338 additions and 111 deletions

View file

@ -31,6 +31,14 @@ abstract class Wootook_Core_Database_Adapter_Adapter
return $this->_tablePrefix;
}
/**
* @return string
*/
public function getTable($table)
{
return $this->getTablePrefix() . $table;
}
/**
* @return Wootook_Core_Database_Sql_Select
*/
@ -123,7 +131,8 @@ abstract class Wootook_Core_Database_Adapter_Adapter
{
$statement = $this->prepare($sql);
if (!$statement->execute()) {
throw new Wootook_Core_Exception_Database_AdapterError($this, 'Could not execute query.');
$message = sprintf('[SQLSTATE %s] Could not execute query: %s', $statement->errorState(), $statement->errorMessage());
throw new Wootook_Core_Exception_Database_StatementError($statement, $message);
}
return $statement;

View file

@ -177,7 +177,15 @@ class Wootook_Core_Database_ConnectionManager
$options = $event->getData('options');
try {
$connection = $this->load($engine, false, array($params, $options));
} catch (Wootook_Core_Exception_Database_AdapterError $e) {
//Wootook_Core_ErrorProfiler::getSingleton()->addException($e);
return null;
}
if (!$connection) {
throw new Wootook_Core_Exception_DataAccessException('Could not find data connection handler.');
}
if (($prefix = Wootook::getConfig("resource/database/{$connectionName}/table_prefix")) !== null) {
$connection->setTablePrefix($prefix);

View file

@ -37,6 +37,9 @@ abstract class Wootook_Core_Database_Sql_DmlQuery
$this->_init($tableName);
}
/**
* @return Wootook_Core_Database_Adapter_Adapter
*/
public function getConnection()
{
return $this->_connection;
@ -265,7 +268,7 @@ abstract class Wootook_Core_Database_Sql_DmlQuery
public function beforePrepare(Wootook_Core_Database_Statement_Statement $statement)
{
foreach ($this->_placeholders as $placeholder) {
$placeholder->befrePrepare($statement);
$placeholder->beforePrepare($statement);
}
return $this;

View file

@ -3,4 +3,15 @@
class Wootook_Core_Database_Sql_Placeholder_Expression
extends Wootook_Core_Database_Sql_Placeholder_Placeholder
{
protected $_expression = null;
public function __construct($expression)
{
$this->_expression = (string) $expression;
}
public function __toString()
{
return $this->_expression;
}
}

View file

@ -4,22 +4,22 @@ abstract class Wootook_Core_Database_Sql_Placeholder_Placeholder
{
abstract public function __toString();
abstract public function beforePrepare(Wootook_Core_Database_Statement_Statement $statement)
public function beforePrepare(Wootook_Core_Database_Statement_Statement $statement)
{
return $this;
}
abstract public function afterPrepare(Wootook_Core_Database_Statement_Statement $statement)
public function afterPrepare(Wootook_Core_Database_Statement_Statement $statement)
{
return $this;
}
abstract public function beforeExcute(Wootook_Core_Database_Statement_Statement $statement)
public function beforeExcute(Wootook_Core_Database_Statement_Statement $statement)
{
return $this;
}
abstract public function afterExecute(Wootook_Core_Database_Statement_Statement $statement)
public function afterExecute(Wootook_Core_Database_Statement_Statement $statement)
{
return $this;
}

View file

@ -87,6 +87,10 @@ abstract class Wootook_Core_Database_Sql_Select
}
}
} else {
if ($column instanceof Wootook_Core_Database_Sql_Placeholder_Placeholder) {
$this->_placeholders[] = $column;
}
$this->_parts[self::COLUMNS][] = array(
'table' => $table,
'alias' => null,
@ -120,17 +124,17 @@ abstract class Wootook_Core_Database_Sql_Select
$this->column($fields);
if (is_array($table)) {
$alias = key($table);
$table = current($table);
$table = $this->_connection->getTable(current($table));
if ($schema !== null) {
$this->_parts[self::JOIN][] = "\n{$mode} JOIN {$this->_connection->quoteIdentifier($schema)}{$this->_connection->quoteIdentifier($this->_connection->getTable($table))} AS {$this->_connection->quoteIdentifier($alias)}"
$this->_parts[self::JOIN][] = "\n{$mode} JOIN {$this->_connection->quoteIdentifier($schema)}{$this->_connection->quoteIdentifier($table)} AS {$this->_connection->quoteIdentifier($alias)}"
. "\n ON {$condition}";
} else {
$this->_parts[self::JOIN][] = "\n{$mode} JOIN {$this->_connection->quoteIdentifier($this->_connection->getTable($table))} AS {$this->_connection->quoteIdentifier($alias)}"
$this->_parts[self::JOIN][] = "\n{$mode} JOIN {$this->_connection->quoteIdentifier($table)} AS {$this->_connection->quoteIdentifier($alias)}"
. "\n ON {$condition}";
}
} else {
$this->_parts[self::JOIN][] = "\n{$mode} JOIN {$this->_connection->quoteIdentifier($this->_connection->getTable($table))}"
$this->_parts[self::JOIN][] = "\n{$mode} JOIN {$this->_connection->quoteIdentifier($table)}"
. "\n ON {$condition}";
}
@ -233,8 +237,6 @@ abstract class Wootook_Core_Database_Sql_Select
$fields[] = "({$field['field']})";
}
} else if ($field['field'] instanceof Wootook_Core_Database_Sql_Placeholder_Placeholder) {
$field['field']->prepare($this);
if ($field['alias'] !== null) {
$fields[] = "({$field['field']}) AS {$field['alias']}";
} else {
@ -256,7 +258,7 @@ abstract class Wootook_Core_Database_Sql_Select
if (!empty($fields)) {
return 'SELECT ' . implode(", ", $fields);
}
return '*';
return 'SELECT *';
}
public function renderFrom()

View file

@ -241,4 +241,66 @@ class Wootook_Core_Database_Statement_Pdo_Mysql
}
return null;
}
/**
* @return bool
*/
public function closeCursor()
{
try {
return $this->_handler->closeCursor();
} catch (PDOException $e) {
throw new Wootook_Core_Exception_Database_AdapterError($this, $e->getMessage(), null, $e);
}
return false;
}
/**
* @return bool
*/
public function nextRowset()
{
try {
return $this->_handler->nextRowset();
} catch (PDOException $e) {
throw new Wootook_Core_Exception_Database_AdapterError($this, $e->getMessage(), null, $e);
}
return false;
}
/**
* @return string
*/
public function errorCode()
{
return $this->_handler->errorCode();
}
/**
* @return array
*/
public function errorInfo()
{
return $this->_handler->errorInfo();
}
/**
* @return string
*/
public function errorMessage()
{
$info = $this->_handler->errorInfo();
return $info[2];
}
/**
* @return string
*/
public function errorState()
{
$info = $this->_handler->errorInfo();
return $info[0];
}
}

View file

@ -136,11 +136,41 @@ abstract class Wootook_Core_Database_Statement_Statement
*/
abstract public function columnCount();
/**
* @return string
*/
abstract public function errorCode();
/**
* @return string
*/
abstract public function errorMessage();
/**
* @return array
*/
abstract public function errorInfo();
/**
* @return string
*/
abstract public function errorState();
/**
* @return int
*/
abstract public function rowCount();
/**
* @return bool
*/
abstract public function closeCursor();
/**
* @return bool
*/
abstract public function nextRowset();
public function current()
{
return $this->_currentRow;

View file

@ -67,18 +67,16 @@ SQL_EOF;
$idValues = func_get_arg(0);
$database = $this->getReadConnection();
$select = $database->select()
->from(array('main_table' => $database->getTable($this->getTableName())))
->limit(1);
$idFields = array();
foreach ($this->_idFieldNames as $field) {
$idFields[] = "{$field}=:{$field}";
$select->where("{$database->quoteIdentifier($field)}=:{$field}");
}
$idFields = '(' . implode(') AND (', $idFields) . ')';
$sql =<<<SQL_EOF
SELECT * FROM {$database->getTable(self::getTableName())}
WHERE $idFields
LIMIT 1
SQL_EOF;
$statement = $database->prepare($sql);
$statement = $database->prepare($select);
$statement->execute($idValues);
$datas = $statement->fetch(PDO::FETCH_ASSOC);
@ -86,7 +84,9 @@ SQL_EOF;
throw new Wootook_Core_Exception_DataAccessException('Could not load data: this id combination could not be found.');
}
$this->_data = $datas;
$this->_data = array();
$this->getDataMapper()->decode($this, $datas);
$this->_isLoaded = true;
return $this;

View file

@ -1,6 +1,6 @@
<?php
abstract class Wootook_Core_Exception_Database_StatementError
class Wootook_Core_Exception_Database_StatementError
extends Wootook_Core_Exception_RuntimeException
implements Wootook_Core_Exception_Database_Error
{

View file

@ -9,6 +9,12 @@ class Wootook_Core_Mvc_Controller_Request_Http
protected $_controllerKey = 'controller';
protected $_moduleKey = 'module';
protected $_queryVars = array();
protected $_postVars = array();
protected $_cookieVars = array();
protected $_serverVars = array();
protected $_postFiles = array();
public function __construct(Array $options = array())
{
parent::__construct($options);
@ -64,6 +70,22 @@ class Wootook_Core_Mvc_Controller_Request_Http
}
}
public function init()
{
$this->_queryVars = $_GET;
$this->_postVars = $_POST;
$this->_cookieVars = $_COOKIE;
$this->_serverVars = $_SERVER;
$this->_postFiles = $_FILES;
$this->clearData();
$this->addData($this->_serverVars);
$this->addData($this->_cookieVars);
$this->addData($this->_queryVars);
$this->addData($this->_postVars);
}
public function setParam($key, $value)
{
return $this->setData($key, $value);
@ -74,86 +96,103 @@ class Wootook_Core_Mvc_Controller_Request_Http
if ($this->hasData($key)) {
return $this->getData($key);
}
if (isset($_POST[$key])) {
return $_POST[$key];
if ($this->hasPost($key)) {
return $this->getPost($key);
}
if (isset($_GET[$key])) {
return $_GET[$key];
if ($this->hasQuery($key)) {
return $this->getQuery($key);
}
if (isset($_FILES[$key])) {
return $_FILES[$key];
if ($this->hasCookie($key)) {
return $this->getCookie($key);
}
if (isset($_COOKIE[$key])) {
return $_COOKIE[$key];
}
if (isset($_SERVER[$key])) {
return $_SERVER[$key];
}
return $default;
return $this->getServer($key, $default);
}
public function getQuery($key, $default = null)
{
if (!isset($_GET[$key])) {
if (!isset($this->_queryVars[$key])) {
return $default;
}
return $_GET[$key];
}
public function getFile($key, $default = null)
{
if (!isset($_FILES[$key])) {
return $default;
}
return $_FILES[$key];
}
public function getCookie($key, $default = null)
{
if (!isset($_COOKIE[$key])) {
return $default;
}
return unserialize(stripslashes($_COOKIE[$key]));
}
public function getRawCookie($key, $default = null)
{
if (!isset($_COOKIE[$key])) {
return $default;
}
return $_COOKIE[$key];
}
public function getPost($key, $default = null)
{
if (!isset($_POST[$key])) {
return $default;
}
return $_POST[$key];
}
public function getServer($key, $default = null)
{
if (!isset($_SERVER[$key])) {
return $default;
}
return $_SERVER[$key];
return $this->_queryVars[$key];
}
public function getAllQueryData()
{
return $_GET;
return $this->_queryVars;
}
public function getAllFilesData()
public function hasQuery($key)
{
return $_FILES;
return isset($this->_queryVars[$key]);
}
public function setQuery($key, $value)
{
$this->_queryVars[$key] = (string) $value;
return $this;
}
public function unsetQuery($key)
{
unset($this->_queryVars[$key]);
return $this;
}
public function getPost($key, $default = null)
{
if (!isset($this->_postVars[$key])) {
return $default;
}
return $this->_postVars[$key];
}
public function getAllPostData()
{
return $this->_postVars;
}
public function hasPost($key)
{
return isset($this->_postVars[$key]);
}
public function setPost($key, $value)
{
$this->_postVars[$key] = (string) $value;
return $this;
}
public function unsetPost($key)
{
unset($this->_postVars[$key]);
return $this;
}
public function getCookie($key, $default = null)
{
if (!isset($this->_cookieVars[$key])) {
return $default;
}
return unserialize(stripslashes($this->_cookieVars[$key]));
}
public function getRawCookie($key, $default = null)
{
if (!isset($this->_cookieVars[$key])) {
return $default;
}
return $this->_cookieVars[$key];
}
public function getAllCookieData()
{
$data = array();
foreach ($_COOKIE as $key => $value) {
foreach ($this->_cookieVars as $key => $value) {
$data[$key] = unserialize(stripslashes($value));
}
return $data;
@ -161,17 +200,59 @@ class Wootook_Core_Mvc_Controller_Request_Http
public function getAllRawCookieData()
{
return $_COOKIE;
return $this->_cookieVars;
}
public function getAllPostData()
public function hasCookie($key)
{
return $_POST;
return isset($this->_cookieVars[$key]);
}
public function setCookie($key, $value)
{
$this->_cookieVars[$key] = addslashes(serialize((string) $value));
return $this;
}
public function setRawCookie($key, $value)
{
$this->_cookieVars[$key] = (string) $value;
return $this;
}
public function unsetCookie($key)
{
unset($this->_cookieVars[$key]);
return $this;
}
public function getServer($key, $default = null)
{
if (!isset($this->_serverVars[$key])) {
return $default;
}
return $this->_serverVars[$key];
}
public function getAllServerData()
{
return $_SERVER;
return $this->_serverVars;
}
public function getFile($key, $default = null)
{
if (!isset($this->_postFiles[$key])) {
return $default;
}
return $this->_postFiles[$key];
}
public function getAllFilesData()
{
return $this->_postFiles;
}
public function isPost()

View file

@ -3,6 +3,13 @@
abstract class Wootook_Core_Mvc_Controller_Request_Request
extends Wootook_Object
{
public function __construct(Array $data = array())
{
$this->init();
parent::__construct($data);
}
public function setParam($key, $value)
{
return $this->setData($key, $value);
@ -16,6 +23,8 @@ abstract class Wootook_Core_Mvc_Controller_Request_Request
return $default;
}
abstract public function init();
abstract public function getModuleName();
abstract public function getControllerName();
abstract public function getActionName();

View file

@ -1,6 +1,6 @@
<?php
abstract class Wootook_Core_Resource_CollectionAbstract
abstract class Wootook_Core_Resource_EntityCollection
implements Iterator, Countable
{
protected $_connection = null;
@ -39,7 +39,8 @@ abstract class Wootook_Core_Resource_CollectionAbstract
public function getSelect()
{
if ($this->_select === null) {
$this->_select = $this->getReadConnection()->select($this->_entityTable);
$this->_select = $this->getReadConnection()
->select(array('main_table' => $this->getReadConnection()->getTable($this->_entityTable)));
$this->_prepareSelect($this->_select);
}

View file

@ -122,6 +122,15 @@ class Wootook_Empire_Model_Planet
return self::factory($planetId);
}
public function __construct(Array $data = array(), Wootook_Player_Model_Entity $player = null)
{
parent::__construct($data);
if ($player !== null) {
$this->setPlayer($player);
}
}
public function _init()
{
$this->_tableName = 'planets';
@ -258,7 +267,7 @@ class Wootook_Empire_Model_Planet
$resources = Wootook_Empire_Helper_Config_Resources::getSingleton();
$production = Wootook_Empire_Helper_Config_Production::getSingleton();
if (!$this->isPlanet()) {
if (!$this->isPlanet() || !$this->getPlayer()) {
return $this;
}
@ -437,7 +446,8 @@ class Wootook_Empire_Model_Planet
public function getPlayer()
{
if ($this->_player === null && $this->getPlayerId()) {
$this->_player = Wootook_Player_Model_Entity::factory($this->getPlayerId());
$this->_player = new Wootook_Player_Model_Entity();
$this->_player->load($this->getPlayerId());
}
return $this->_player;
}
@ -445,6 +455,7 @@ class Wootook_Empire_Model_Planet
public function setPlayer(Wootook_Player_Model_Entity $player)
{
$this->_player = $player;
$this->setData('id_owner', $player->getId());
return $this;
}
@ -756,7 +767,7 @@ class Wootook_Empire_Model_Planet
*/
public function getBuildingQueue()
{
if ($this->_builder === null) {
if ($this->_builder === null && $this->getPlayer()) {
$this->_builder = new Wootook_Empire_Model_Planet_Builder($this, $this->getPlayer());
}
return $this->_builder;
@ -843,12 +854,12 @@ class Wootook_Empire_Model_Planet
{
$adapter = Wootook_Core_Database_ConnectionManager::getSingleton()
->getConnection('core_read');
$select = $adapter->select(array('galaxy' => 'galaxy'));
$select = $adapter->select(array('galaxy' => $adapter->getTable('galaxy')));
$select
->column(array(
'galaxy' => 'galaxy.galaxy',
'system' => 'galaxy.system',
'count' => 'COUNT(*)'
'galaxy' => 'galaxy',
'system' => 'system',
'count' => new Wootook_Core_Database_Sql_Placeholder_Expression('COUNT(*)')
))
->group('galaxy.galaxy')
->group('galaxy.system')
@ -860,7 +871,7 @@ class Wootook_Empire_Model_Planet
if ($galaxyList !== null) {
array_walk($galaxyList, array(__CLASS__, '_cleanItemRanges'));
$select->where('galaxy.galaxy IN(' . implode(', ', $galaxyList) . ')');
$select->where('galaxy', array(array(Wootook_Core_Database_Sql_Select::OPERATOR_IN => $galaxyList)));
}
if ($systemList === null && Wootook::getGameConfig('user/registration/system_list')) {
@ -869,7 +880,7 @@ class Wootook_Empire_Model_Planet
if ($systemList !== null) {
array_walk($systemList, array(__CLASS__, '_cleanItemRanges'));
$select->where('galaxy.system IN(' . implode(', ', $systemList) . ')');
$select->where('system', array(array(Wootook_Core_Database_Sql_Select::OPERATOR_IN => $systemList)));
}
$orders = array(
@ -879,7 +890,7 @@ class Wootook_Empire_Model_Planet
"RAND() / 1000",
);
$select
->order('((' . implode(') * (', $orders) . '))', 'ASC')
->order(new Wootook_Core_Database_Sql_Placeholder_Expression('((' . implode(') * (', $orders) . '))'), 'ASC')
//->order("ABS(galaxy.system - CEIL({$collection->quote(Wootook::getGameConfig('engine/universe/systems'))} / 2))", 'ASC')
//->order("ABS(galaxy.galaxy - CEIL({$collection->quote(Wootook::getGameConfig('engine/universe/galaxies'))} / 2))", 'ASC')
//->order("1.5 / COUNT(*)", 'ASC')

View file

@ -1,7 +1,7 @@
<?php
class Wootook_Empire_Resource_Fleet_Collection
extends Wootook_Core_Resource_CollectionAbstract
extends Wootook_Core_Resource_EntityCollection
{
protected function _construct()
{

View file

@ -1,7 +1,7 @@
<?php
class Wootook_Empire_Resource_Planet_Collection
extends Wootook_Core_Resource_CollectionAbstract
extends Wootook_Core_Resource_EntityCollection
{
protected function _construct()
{

View file

@ -138,7 +138,7 @@ class Wootook_Player_Model_Entity
'user_agent' => $request->getServer('HTTP_USER_AGENT')
));
$player->getWriteConnection()->beginTransaction();
//$player->getWriteConnection()->beginTransaction();
$player->save();
@ -150,9 +150,9 @@ class Wootook_Player_Model_Entity
if (!$statement->execute()) {
throw new Wootook_Empire_Exception_RuntimeException('No more planet to colonize!'); // Oops, no more free place
}
} catch (PDOException $e) {
Wootook_Core_ErrorProfiler::getSingleton()->exceptionManager($e);
$this->getWriteConnection()->rollback();
} catch (Wootook_Core_Exception_Database_Error $e) {
Wootook_Core_ErrorProfiler::getSingleton()->addException($e);
//$this->getWriteConnection()->rollback();
return null;
}
@ -161,7 +161,7 @@ class Wootook_Player_Model_Entity
throw new Wootook_Empire_Exception_RuntimeException('No more planet to colonize!'); // Oops, no more free place
}
$collection = new Wootook_Empire_Resource_Planet_Collection($player->getReadConneciton());
$collection = new Wootook_Empire_Resource_Planet_Collection($player->getReadConnection());
$collection->addTypeToFilter(Wootook_Empire_Model_Planet::TYPE_PLANET)
->addFieldToFilter('galaxy', $systemInfo['galaxy'])
->addFieldToFilter('system', $systemInfo['system'])
@ -178,8 +178,8 @@ class Wootook_Player_Model_Entity
$finalPosition = $positions[$key];
$planet = $player->createNewPlanet(
$systemInfo->getData('galaxy'),
$systemInfo->getData('system'),
$systemInfo['galaxy'],
$systemInfo['system'],
$finalPosition,
Wootook_Empire_Model_Planet::TYPE_PLANET,
Wootook::getRequest()->getParam('planet'),
@ -200,21 +200,21 @@ class Wootook_Player_Model_Entity
$player->save();
} catch (Wootook_Core_Exception_DataAccessException $e) {
$player->getWriteConnection()->rollback();
//$player->getWriteConnection()->rollback();
$session = Wootook_Core_Model_Session::factory(Wootook_Player_Model_Entity::SESSION_KEY);
Wootook_Core_ErrorProfiler::getSingleton()->exceptionManager($e);
Wootook_Core_ErrorProfiler::getSingleton()->addException($e);
$session->addError($e->getMessage());
return null;
} catch (Wootook_Empire_Exception_RuntimeException $e) {
$player->getWriteConnection()->rollback();
//$player->getWriteConnection()->rollback();
$session = Wootook_Core_Model_Session::factory(Wootook_Player_Model_Entity::SESSION_KEY);
Wootook_Core_ErrorProfiler::getSingleton()->exceptionManager($e);
Wootook_Core_ErrorProfiler::getSingleton()->addException($e);
$session->addError($e->getMessage());
return null;
}
$player->getWriteConnection()->commit();
//$player->getWriteConnection()->commit();
return $player;
}
@ -230,10 +230,9 @@ class Wootook_Player_Model_Entity
$size = mt_rand(floor($factor / 10), ceil($factor * 5 / 4)) + mt_rand(0, $fuzz);
}
$now = time();
$planet = new Wootook_Empire_Model_Planet();
$now = new Wootook_Core_DateTime();
$planet = new Wootook_Empire_Model_Planet(array(), $this);
$planet
->setData('id_owner', $this->getId())
->setData('name', $name)
->setData('galaxy', $galaxy)
->setData('system', $system)

View file

@ -1,7 +1,7 @@
<?php
class Wootook_Player_Resource_Entity_Collection
extends Wootook_Core_Resource_CollectionAbstract
extends Wootook_Core_Resource_EntityCollection
{
public function _construct()
{

View file

@ -1,7 +1,7 @@
<?php
class Wootook_Player_Resource_Message_Collection
extends Wootook_Core_Resource_CollectionAbstract
extends Wootook_Core_Resource_EntityCollection
{
public function _construct()
{

View file

@ -3,7 +3,7 @@
'resource' => array(
'database' => array(
'default' => array(
'engine' => 'mysql',
'engine' => 'pdo_mysql',
'options' => array(
),
'params' => array(

View file

@ -119,7 +119,6 @@ $session['speed'] = $speedArray;
$session['consumption'] = $consumptionArray;
$session['capacity'] = $capacityArray;
var_dump($_SESSION);
if (empty($fleetArray)) {
message($lang['fl_unselectall'], $lang['fl_error'], "fleet." . PHPEXT, 1);
} else {

View file

@ -132,7 +132,6 @@ $mission = isset($_POST['target_mission']) ? $_POST['target_mission'] : 0;
$SpeedFactor = GetGameSpeedFactor();
$AllFleetSpeed = GetFleetMaxSpeed($fleetArray, 0, $user);
var_dump($AllFleetSpeed, $fleetArray);
$MaxFleetSpeed = min($AllFleetSpeed);
$distance = GetTargetDistance($planetrow->getGalaxy(), $galaxy, $planetrow->getSystem(), $system, $planetrow->getPosition(), $planet);

View file

@ -109,7 +109,7 @@ if (isset($_SERVER['REQUEST_URI'])) {
if ($offset == (strlen($_SERVER['REQUEST_URI']) - 1)) {
$baseUrl .= substr($_SERVER['REQUEST_URI'], 0, strpos(substr($_SERVER['REQUEST_URI'], 0, -1), '/')) . '/';
} else {
$baseUrl .= substr($_SERVER['REQUEST_URI'], 0, strrpos(substr($_SERVER['REQUEST_URI'], 0, $offset), '/', strlen($_SERVER['REQUEST_URI']) - $offset - 1)) . '/';
$baseUrl .= substr($_SERVER['REQUEST_URI'], 0, strpos(substr($_SERVER['REQUEST_URI'], 0, $offset), '/', strlen($_SERVER['REQUEST_URI']) - $offset - 1)) . '/';
}
}
$session = Wootook::getSession('install');
@ -230,6 +230,7 @@ case 'install':
'web' => array(
'url' => array(
'base' => $request->getPost('url_path'),
'link' => $request->getPost('url_path'),
'skin' => $request->getPost('url_path') . 'skin/',
'js' => $request->getPost('url_path') . 'js/',
'css' => $request->getPost('url_path') . 'css/',
@ -239,6 +240,7 @@ case 'install':
'path' => array(
'base' => ROOT_PATH,
'skin' => ROOT_PATH . 'skin' . DIRECTORY_SEPARATOR,
'design' => ROOT_PATH . 'application' . DIRECTORY_SEPARATOR . 'design' . DIRECTORY_SEPARATOR,
),
'date' => array(
'timezone' => $request->getPost('timezone')
@ -515,7 +517,7 @@ case 'install':
if ($request->getPost('email') != $request->getPost('email_confirm')) {
$session->setData('step', STEP_PROFILE);
$session->setFormData($request->getData());
$session->setFormData($request->getAllDatas());
$session->addError(Wootook::__('Both e-mails does not match.'));
$response->setRedirect(Wootook::getStaticUrl('install/index.php', array('mode' => 'install', 'step' => STEP_PROFILE)));
$response->sendHeaders();
@ -526,16 +528,17 @@ case 'install':
$user = Wootook_Player_Model_Entity::register($request->getPost('username'), $request->getPost('email'), $request->getPost('password'));
} catch (Wootook_Empire_Exception_RuntimeException $e) {
}
$layout->getMessagesBlock()->prepareMessages('user');
if (!$user || !$user->getId()) {
$session->setData('step', STEP_PROFILE);
$session->setFormData($request->getData());
$session->setFormData($request->getAllDatas());
$session->addError(Wootook::__('Could not create user.'));
$response->setRedirect(Wootook::getStaticUrl('install/index.php', array('mode' => 'install', 'step' => STEP_PROFILE)));
$response->sendHeaders();
exit(0);
} else {
Wootook_Player_Model_Entity::setLoggedIn($user);
Wootook_Player_Model_Session::getSingleton()->setLoggedIn($user);
$user->setData('authlevel', LEVEL_ADMIN)->save();
@ -543,7 +546,7 @@ case 'install':
}
$session->setData('step', STEP_CONFIG);
//$response->setRedirect(Wootook::getStaticUrl('install/index.php', array('mode' => 'install', 'step' => STEP_CONFIG)));
$response->setRedirect(Wootook::getStaticUrl('install/index.php', array('mode' => 'install', 'step' => STEP_CONFIG)));
$response->setRedirect(Wootook::getStaticUrl('install/index.php', array('mode' => 'summary')));
$response->sendHeaders();
exit(0);