refactor propel configuration

This commit is contained in:
Manuel Raynaud
2013-03-26 17:25:10 +01:00
parent f8cbfbd858
commit 8433c5d555
13 changed files with 237 additions and 101 deletions

View File

@@ -17,7 +17,8 @@
"symfony/dependency-injection" : "2.2.*",
"symfony/event-dispatcher" : "2.2.*",
"symfony/http-kernel" : "2.2.*",
"symfony/routing" : "2.2.*"
"symfony/routing" : "2.2.*",
"symfony/yaml" : "2.2.*"
},
"minimum-stability": "stable",
"config" : {

49
composer.lock generated
View File

@@ -1,5 +1,5 @@
{
"hash": "b3f80466f5d4e8ce553b10dd65630a69",
"hash": "89f5db06d70dd16aa1ba0f4983c89335",
"packages": [
{
"name": "ircmaxell/password-compat",
@@ -619,6 +619,53 @@
"description": "Symfony Routing Component",
"homepage": "http://symfony.com",
"time": "2013-02-11 11:24:47"
},
{
"name": "symfony/yaml",
"version": "v2.2.0",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
"reference": "v2.2.0-RC3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.2.0-RC3",
"reference": "v2.2.0-RC3",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Component\\Yaml\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony Yaml Component",
"homepage": "http://symfony.com",
"time": "2013-01-27 16:49:19"
}
],
"packages-dev": [

View File

@@ -13,8 +13,9 @@ $loader = require __DIR__ . "/vendor/autoload.php";
if (file_exists(THELIA_ROOT . '/local/config/config_db.php')) {
require THELIA_ROOT . '/local/config/config_db.php';
} else {
if (!file_exists(THELIA_ROOT . '/local/config/database.yml')) {
define('THELIA_INSTALL_MODE',true);
}
/*else {
define('THELIA_INSTALL_MODE',true);
}*/

View 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;
}
}

View 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;
*/
}

View File

@@ -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();
}
}

View File

@@ -1,16 +0,0 @@
<?php
// database acces configuration for mysql
// ---------------------------------------------
//database type : mysql, sqlite, pgsql, etc
define('THELIA_DB_ADAPTER','mysql');
// database login
define('THELIA_DB_USER', '__DB_LOGIN__');
// database password
define('THELIA_DB_PASSWORD', '__DB_PASSWORD__');
//database DSN
define('THELIA_DB_DSN','mysql:dbname=__DB_NAME__;host:__DB_HOST__');

View File

@@ -1,16 +0,0 @@
<?php
// database acces configuration for mysql
// ---------------------------------------------
//database type : mysql, sqlite, pgsql, etc
define('THELIA_DB_ADAPTER','oracle');
// database login
define('THELIA_DB_USER', '__DB_LOGIN__');
// database password
define('THELIA_DB_PASSWORD', '__DB_PASSWORD__');
//database DSN
define('THELIA_DB_DSN','mysql:dbname=__DB_NAME__;host:__DB_HOST__');

View File

@@ -1,16 +0,0 @@
<?php
// database acces configuration for postgresql
// ---------------------------------------------
//database type : mysql, sqlite, pgsql, etc
define('THELIA_DB_ADAPTER','pgsql');
// database login
define('THELIA_DB_USER', '__DB_LOGIN__');
// database password
define('THELIA_BD_PASSWORD', '__DB_PASSWORD__');
//database dsn
define('THELIA_DB_DSN','pgsql:host=__DB_HOST__;port=__DB_PORT__;dbname=__DB_NAME__;user=__DB_LOGIN__;password=__DB_PASSWORD__');

View File

@@ -1,15 +0,0 @@
<?php
// database acces configuration for sqlite
// ---------------------------------------------
//database type : mysql, sqlite, pgsql, etc
define('THELIA_DB_ADAPTER','sqlite');
// database login
define('THELIA_DB_USER', '__DB_LOGIN__');
// database password
define('THELIA_DB_PASSWORD', '__DB_PASSWORD__');
define('THELIA_DB_DSN','sqlite:__DB_FILE__');

View File

@@ -1,18 +0,0 @@
<?php
$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;

View File

@@ -0,0 +1,6 @@
database:
connection:
driver: mysql
user: root
password: azerty
dsn: mysql:dbname=thelia;host:localhost