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

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