Completed
Push — master ( f413dd...7f4a11 )
by Ivo
08:26
created

Configuration::getConfigTreeBuilder()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 38
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 38
ccs 5
cts 5
cp 1
rs 8.8571
cc 1
eloc 27
nc 1
nop 0
crap 1
1
<?php
2
3
/*
4
 * This file is part of the Ivoaz ContentEditable bundle.
5
 *
6
 * (c) Ivo Azirjans <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace Ivoaz\Bundle\ContentEditableBundle\DependencyInjection;
13
14
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
15
use Symfony\Component\Config\Definition\ConfigurationInterface;
16
17
/**
18
 * @author Ivo Azirjans <[email protected]>
19
 */
20
class Configuration implements ConfigurationInterface
21
{
22
    const MODEL_ORM = 'orm';
23
    const MODEL_MONGODB = 'mongodb';
24
25 2
    /**
26
     * {@inheritdoc}
27 2
     */
28 2
    public function getConfigTreeBuilder()
29
    {
30
        $treeBuilder = new TreeBuilder();
31 2
        $rootNode = $treeBuilder->root('ivoaz_content_editable');
32 2
33 2
        $supportedModelTypes = [self::MODEL_ORM, self::MODEL_MONGODB];
34
35 2
        $rootNode
36
            ->addDefaultsIfNotSet()
37
            ->children()
38
39
                ->scalarNode('model_type')
40
                    ->validate()
41
                        ->ifNotInArray($supportedModelTypes)
42
                        ->thenInvalid(
43
                            sprintf(
44
                                'The model type "%%s" is not supported. Please use one of the following model type: %s.',
45
                                implode(', ', $supportedModelTypes)
46
                            )
47
                        )
48
                    ->end()
49
                    ->cannotBeEmpty()
50
                    ->defaultValue(self::MODEL_ORM)
51
                ->end()
52
53
                ->scalarNode('model_manager_name')
54
                    ->defaultValue(null)
55
                ->end()
56
57
                ->scalarNode('editor')
58
                    ->cannotBeEmpty()
59
                    ->defaultValue('ivoaz_content_editable.default_editor')
60
                ->end()
61
62
            ->end();
63
64
        return $treeBuilder;
65
    }
66
}
67