refactor propel configuration
This commit is contained in:
@@ -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
49
composer.lock
generated
@@ -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": [
|
||||
|
||||
@@ -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);
|
||||
}*/
|
||||
|
||||
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
@@ -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__');
|
||||
@@ -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__');
|
||||
@@ -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__');
|
||||
@@ -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__');
|
||||
@@ -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;
|
||||
6
local/config/database.yml
Normal file
6
local/config/database.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
database:
|
||||
connection:
|
||||
driver: mysql
|
||||
user: root
|
||||
password: azerty
|
||||
dsn: mysql:dbname=thelia;host:localhost
|
||||
Reference in New Issue
Block a user