vendor/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
author ymh <ymh.work@gmail.com>
Sat, 24 Sep 2011 15:40:41 +0200
changeset 0 7f95f8617b0b
permissions -rwxr-xr-x
first commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * This file is part of the Symfony framework.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * (c) Fabien Potencier <fabien@symfony.com>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * This source file is subject to the MIT license that is bundled
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * with this source code in the file LICENSE.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
use Symfony\Component\Config\Definition\ConfigurationInterface;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
 * FrameworkExtension configuration structure.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
 * @author Jeremy Mikola <jmikola@gmail.com>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
class Configuration implements ConfigurationInterface
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    private $debug;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
     * Constructor
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
     * @param Boolean $debug Whether to use the debug mode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    public function  __construct($debug)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
        $this->debug = (Boolean) $debug;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
     * Generates the configuration tree builder.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
     * @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    public function getConfigTreeBuilder()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
        $treeBuilder = new TreeBuilder();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        $rootNode = $treeBuilder->root('framework');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
                ->scalarNode('charset')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
                ->scalarNode('trust_proxy_headers')->defaultFalse()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
                ->scalarNode('secret')->isRequired()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
                ->scalarNode('ide')->defaultNull()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
                ->booleanNode('test')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
        $this->addFormSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
        $this->addEsiSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
        $this->addProfilerSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        $this->addRouterSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
        $this->addSessionSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
        $this->addTemplatingSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
        $this->addTranslatorSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
        $this->addValidationSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
        $this->addAnnotationsSection($rootNode);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        return $treeBuilder;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    private function addFormSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
                ->arrayNode('form')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
                    ->treatNullLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
                    ->treatTrueLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
                        ->booleanNode('enabled')->defaultTrue()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
                ->arrayNode('csrf_protection')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
                    ->treatNullLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
                    ->treatTrueLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
                        ->booleanNode('enabled')->defaultTrue()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
                        ->scalarNode('field_name')->defaultValue('_token')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    private function addEsiSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
                ->arrayNode('esi')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
                    ->treatNullLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
                    ->treatTrueLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
                        ->booleanNode('enabled')->defaultTrue()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    private function addProfilerSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
                ->arrayNode('profiler')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
                        ->booleanNode('only_exceptions')->defaultFalse()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
                        ->booleanNode('only_master_requests')->defaultFalse()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
                        ->scalarNode('dsn')->defaultValue('sqlite:%kernel.cache_dir%/profiler.db')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
                        ->scalarNode('username')->defaultValue('')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
                        ->scalarNode('password')->defaultValue('')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
                        ->scalarNode('lifetime')->defaultValue(86400)->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
                        ->arrayNode('matcher')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
                            ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
                            ->performNoDeepMerging()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
                            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
                                ->scalarNode('ip')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
                                ->scalarNode('path')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
                                ->scalarNode('service')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
    private function addRouterSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
                ->arrayNode('router')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
                        ->scalarNode('resource')->isRequired()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
                        ->scalarNode('type')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
                        ->scalarNode('http_port')->defaultValue(80)->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
                        ->scalarNode('https_port')->defaultValue(443)->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
    private function addSessionSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
                ->arrayNode('session')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
                        ->booleanNode('auto_start')->defaultFalse()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
                        ->scalarNode('default_locale')->defaultValue('en')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
                        ->scalarNode('storage_id')->defaultValue('session.storage.native')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
                        ->scalarNode('name')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
                        ->scalarNode('lifetime')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
                        ->scalarNode('path')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
                        ->scalarNode('domain')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
                        ->booleanNode('secure')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
                        ->booleanNode('httponly')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
    private function addTemplatingSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
        $organizeUrls = function($urls)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
        {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
            $urls += array(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
                'http' => array(),
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
                'ssl'  => array(),
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
            );
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
            foreach ($urls as $i => $url) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
                if (is_integer($i)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
                    if (0 === strpos($url, 'https://') || 0 === strpos($url, '//')) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
                        $urls['http'][] = $urls['ssl'][] = $url;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
                    } else {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
                        $urls['http'][] = $url;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
                    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
                    unset($urls[$i]);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
                }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
            return $urls;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
        };
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
                ->arrayNode('templating')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
                        ->scalarNode('assets_version')->defaultValue(null)->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
                        ->scalarNode('assets_version_format')->defaultValue(null)->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
                        ->arrayNode('form')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
                            ->addDefaultsIfNotSet()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
                            ->fixXmlConfig('resource')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
                            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
                                ->arrayNode('resources')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
                                    ->addDefaultsIfNotSet()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
                                    ->defaultValue(array('FrameworkBundle:Form'))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
                                    ->validate()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
                                        ->ifTrue(function($v) {return !in_array('FrameworkBundle:Form', $v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
                                        ->then(function($v){
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
                                            return array_merge(array('FrameworkBundle:Form'), $v);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
                                        })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
                                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
                                    ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
                                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
                    ->fixXmlConfig('assets_base_url')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
                        ->arrayNode('assets_base_urls')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
                            ->addDefaultsIfNotSet()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
                            ->defaultValue(array('http' => array(), 'ssl' => array()))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
                            ->beforeNormalization()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
                                ->ifTrue(function($v) { return !is_array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
                                ->then(function($v) { return array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
                            ->beforeNormalization()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
                                ->always()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
                                ->then($organizeUrls)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
                            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
                                ->arrayNode('http')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
                                    ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
                                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
                                ->arrayNode('ssl')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
                                    ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
                                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
                        ->scalarNode('cache')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
                    ->fixXmlConfig('engine')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
                        ->arrayNode('engines')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
                            ->isRequired()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
                            ->requiresAtLeastOneElement()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
                            ->beforeNormalization()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
                                ->ifTrue(function($v){ return !is_array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
                                ->then(function($v){ return array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
                            ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
                    ->fixXmlConfig('loader')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
                        ->arrayNode('loaders')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
                            ->beforeNormalization()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
                                ->ifTrue(function($v){ return !is_array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
                                ->then(function($v){ return array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
                             ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
                            ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
                    ->fixXmlConfig('package')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
                        ->arrayNode('packages')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
                            ->useAttributeAsKey('name')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
                            ->prototype('array')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
                                ->fixXmlConfig('base_url')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
                                ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
                                    ->scalarNode('version')->defaultNull()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
                                    ->scalarNode('version_format')->defaultNull()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
                                    ->arrayNode('base_urls')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
                                        ->addDefaultsIfNotSet()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
                                        ->defaultValue(array('http' => array(), 'ssl' => array()))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
                                        ->beforeNormalization()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
                                            ->ifTrue(function($v) { return !is_array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
                                            ->then(function($v) { return array($v); })
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
                                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
                                        ->beforeNormalization()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
                                            ->always()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
                                            ->then($organizeUrls)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
                                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
                                        ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
                                            ->arrayNode('http')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
                                                ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
                                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
                                            ->arrayNode('ssl')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
                                                ->prototype('scalar')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
                                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
                                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
                                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
                                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
                            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
                        ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
    private function addTranslatorSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
                ->arrayNode('translator')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
                    ->treatNullLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
                    ->treatTrueLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
                        ->booleanNode('enabled')->defaultTrue()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
                        ->scalarNode('fallback')->defaultValue('en')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
    private function addValidationSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
                ->arrayNode('validation')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
                    ->canBeUnset()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
                    ->treatNullLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
                    ->treatTrueLike(array('enabled' => true))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
                    ->booleanNode('enabled')->defaultTrue()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
                        ->scalarNode('cache')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
                        ->booleanNode('enable_annotations')->defaultFalse()->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
    private function addAnnotationsSection(ArrayNodeDefinition $rootNode)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
        $rootNode
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
            ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
                ->arrayNode('annotations')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
                    ->addDefaultsIfNotSet()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
                    ->children()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
                        ->scalarNode('cache')->defaultValue('file')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
                        ->scalarNode('file_cache_dir')->defaultValue('%kernel.cache_dir%/annotations')->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
                        ->booleanNode('debug')->defaultValue($this->debug)->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
                    ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
                ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
            ->end()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
        ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
}