     1: <?php
     2: /*************************************************************************************/
     3: /*                                                                                   */
     4: /*      Thelia                                                                       */
     5: /*                                                                                   */
     6: /*      Copyright (c) OpenStudio                                                     */
     7: /*  email : info@thelia.net                                                      */
     8: /*      web : http://www.thelia.net                                                  */
     9: /*                                                                                   */
    10: /*      This program is free software; you can redistribute it and/or modify         */
    11: /*      it under the terms of the GNU General Public License as published by         */
    12: /*      the Free Software Foundation; either version 3 of the License                */
    13: /*                                                                                   */
    14: /*      This program is distributed in the hope that it will be useful,              */
    15: /*      but WITHOUT ANY WARRANTY; without even the implied warranty of               */
    16: /*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                */
    17: /*      GNU General Public License for more details.                                 */
    18: /*                                                                                   */
    19: /*      You should have received a copy of the GNU General Public License            */
    20: /*      along with this program. If not, see <http://www.gnu.org/licenses/>.     */
    21: /*                                                                                   */
    22: /*************************************************************************************/
    23:
    24: namespace Thelia\Config;
    25:
    26: use Symfony\Component\Config\Definition\ConfigurationInterface;
    27: use Symfony\Component\Config\Definition\Builder\TreeBuilder;
    28:
    29: class DatabaseConfiguration implements ConfigurationInterface
    30: {
    31:
    32:     /**
    33:      * Generates the configuration tree builder.
    34:      *
    35:      * @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder
    36:      */
    37:     public function getConfigTreeBuilder()
    38:     {
    39:         $treeBuilder = new TreeBuilder();
    40:         $rootNode = $treeBuilder->root("database");
    41:
    42:         $rootNode
    43:             ->children()
    44:                 ->arrayNode("connection")
    45:                     ->children()
    46:                         ->scalarNode("driver")
    47:                             ->defaultValue("mysql")
    48:                             ->validate()
    49:                             ->ifNotInArray(array("mysql", "sqlite", "pgsql"))
    50:                                 ->thenInvalid("Invalid driver database %s")
    51:                             ->end()
    52:                         ->end()
    53:                         ->scalarNode("user")
    54:                             ->defaultValue("root")
    55:                         ->end()
    56:                         ->scalarNode("password")
    57:                             ->defaultValue("")
    58:                         ->end()
    59:                         ->scalarNode("dsn")
    60:                             ->cannotBeEmpty()
    61:                         ->end()
    62:                     ->end()
    63:                 ->end()
    64:             ->end()
    65:         ;
    66:
    67:         return $treeBuilder;
    68:     }
    69: }