refactor propel configuration
This commit is contained in:
69
core/lib/Thelia/Config/DatabaseConfiguration.php
Normal file
69
core/lib/Thelia/Config/DatabaseConfiguration.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Thelia */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : info@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* 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 */
|
||||
/* */
|
||||
/* 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 <http://www.gnu.org/licenses/>. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Thelia\Config;
|
||||
|
||||
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
||||
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
||||
|
||||
class DatabaseConfiguration implements ConfigurationInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* Generates the configuration tree builder.
|
||||
*
|
||||
* @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder
|
||||
*/
|
||||
public function getConfigTreeBuilder()
|
||||
{
|
||||
$treeBuilder = new TreeBuilder();
|
||||
$rootNode = $treeBuilder->root("database");
|
||||
|
||||
$rootNode
|
||||
->children()
|
||||
->arrayNode("connection")
|
||||
->children()
|
||||
->scalarNode("driver")
|
||||
->defaultValue("mysql")
|
||||
->validate()
|
||||
->ifNotInArray(array("mysql", "sqlite", "pgsql"))
|
||||
->thenInvalid("Invalid driver database %s")
|
||||
->end()
|
||||
->end()
|
||||
->scalarNode("user")
|
||||
->defaultValue("root")
|
||||
->end()
|
||||
->scalarNode("password")
|
||||
->defaultValue("")
|
||||
->end()
|
||||
->scalarNode("dsn")
|
||||
->cannotBeEmpty()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
;
|
||||
|
||||
return $treeBuilder;
|
||||
}
|
||||
}
|
||||
78
core/lib/Thelia/Config/DefinePropel.php
Normal file
78
core/lib/Thelia/Config/DefinePropel.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Thelia */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : info@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* 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 */
|
||||
/* */
|
||||
/* 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 <http://www.gnu.org/licenses/>. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Thelia\Config;
|
||||
|
||||
use Symfony\Component\Config\Definition\Processor;
|
||||
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
||||
|
||||
|
||||
class DefinePropel {
|
||||
|
||||
private $processorConfig;
|
||||
|
||||
public function __construct(ConfigurationInterface $configuration, array $propelConf)
|
||||
{
|
||||
$processor = new Processor();
|
||||
$this->processorConfig = $processor->processConfiguration($configuration, $propelConf);
|
||||
}
|
||||
|
||||
public function getConfig()
|
||||
{
|
||||
$connection = $this->processorConfig["connection"];
|
||||
return $conf = array(
|
||||
"datasources" =>
|
||||
array(
|
||||
"thelia" =>
|
||||
array(
|
||||
"adapter" => $connection["driver"],
|
||||
"connection" =>
|
||||
array(
|
||||
"dsn" => $connection["dsn"],
|
||||
"user" => $connection["user"],
|
||||
"password" => $connection["password"]
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
/*
|
||||
* $conf = array (
|
||||
'datasources' =>
|
||||
array (
|
||||
'thelia' =>
|
||||
array (
|
||||
'adapter' => THELIA_DB_ADAPTER,
|
||||
'connection' =>
|
||||
array (
|
||||
'dsn' => THELIA_DB_DSN,
|
||||
'user' => THELIA_DB_USER,
|
||||
'password' => THELIA_DB_PASSWORD,
|
||||
),
|
||||
),
|
||||
),
|
||||
'generator_version' => '1.6.8',
|
||||
);
|
||||
return $conf;
|
||||
*/
|
||||
}
|
||||
@@ -34,10 +34,14 @@ namespace Thelia\Core;
|
||||
|
||||
use Symfony\Component\HttpKernel\Kernel;
|
||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
||||
use Symfony\Component\Config\Definition\Processor;
|
||||
use Symfony\Component\Yaml\Yaml;
|
||||
|
||||
|
||||
use Thelia\Core\Bundle;
|
||||
use Thelia\Log\Tlog;
|
||||
use Thelia\Config\DatabaseConfiguration;
|
||||
use Thelia\Config\DefinePropel;
|
||||
|
||||
use Propel;
|
||||
use PropelConfiguration;
|
||||
@@ -47,27 +51,38 @@ class Thelia extends Kernel
|
||||
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
parent::init();
|
||||
if($this->debug) {
|
||||
ini_set('display_errors', 1);
|
||||
}
|
||||
$this->initPropel();
|
||||
}
|
||||
|
||||
protected function initPropel()
|
||||
{
|
||||
if (file_exists(THELIA_ROOT . '/local/config/config_db.php') === false) {
|
||||
if (file_exists(THELIA_ROOT . '/local/config/database.yml') === false) {
|
||||
return ;
|
||||
}
|
||||
Propel::init(THELIA_CONF_DIR . "/config_thelia.php");
|
||||
|
||||
if ($this->isDebug()) {
|
||||
Propel::setLogger(Tlog::getInstance());
|
||||
$config = Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT);
|
||||
$config->setParameter('debugpdo.logging.details.method.enabled', true);
|
||||
$config->setParameter('debugpdo.logging.details.time.enabled', true);
|
||||
$config->setParameter('debugpdo.logging.details.mem.enabled', true);
|
||||
|
||||
$con = Propel::getConnection("thelia");
|
||||
$con->useDebug(true);
|
||||
|
||||
if(! Propel::isInit()) {
|
||||
|
||||
$definePropel = new DefinePropel(new DatabaseConfiguration(),
|
||||
Yaml::parse(THELIA_ROOT . '/local/config/database.yml'));
|
||||
|
||||
Propel::setConfiguration($definePropel->getConfig());
|
||||
|
||||
if ($this->isDebug()) {
|
||||
Propel::setLogger(Tlog::getInstance());
|
||||
$config = Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT);
|
||||
$config->setParameter('debugpdo.logging.details.method.enabled', true);
|
||||
$config->setParameter('debugpdo.logging.details.time.enabled', true);
|
||||
$config->setParameter('debugpdo.logging.details.mem.enabled', true);
|
||||
|
||||
$con = Propel::getConnection("thelia");
|
||||
$con->useDebug(true);
|
||||
}
|
||||
|
||||
Propel::initialize();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Submodule core/lib/Thelia/Tpex updated: 0a3c053561...ce3cc65f6e
Reference in New Issue
Block a user