Configuration   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 1
dl 0
loc 104
c 0
b 0
f 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B getConfigTreeBuilder() 0 99 1
1
<?php
2
3
namespace Mdiyakov\DoctrineSolrBundle\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
6
use Symfony\Component\Config\Definition\ConfigurationInterface;
7
8
class Configuration implements ConfigurationInterface
9
{
10
    /**
11
     * {@inheritdoc}
12
     */
13
    public function getConfigTreeBuilder()
14
    {
15
        $treeBuilder = new TreeBuilder();
16
        $rootNode = $treeBuilder->root('mdiyakov_doctrine_solr');
17
18
        $rootNode
19
            ->children()
20
                ->arrayNode('indexed_entities')
21
                    ->useAttributeAsKey('name')
22
                    ->prototype('array')
23
                        ->children()
24
                                ->scalarNode('class')->cannotBeEmpty()->end()
25
                                ->scalarNode('schema')->cannotBeEmpty()->end()
26
                                ->arrayNode('filters')
27
                                    ->prototype('scalar')->end()
28
                                ->end()
29
                                ->scalarNode('finder_class')->end()
30
                                ->arrayNode('config')
31
                                    ->prototype('array')
32
                                        ->children()
33
                                            ->scalarNode('name')->end()
34
                                            ->scalarNode('value')->end()
35
                                        ->end()
36
                                    ->end()
37
                                ->end()
38
                        ->end()
39
                    ->end()
40
                ->end()
41
                ->arrayNode('schemes')
42
                    ->useAttributeAsKey('name')
43
                    ->prototype('array')
44
                        ->children()
45
                            ->scalarNode('client')->defaultValue(null)->end()
46
                            ->arrayNode('document_unique_field')
47
                                ->children()
48
                                    ->scalarNode('name')->cannotBeEmpty()->end()
49
                                ->end()
50
                            ->end()
51
                            ->arrayNode('config_entity_fields')
52
                                ->prototype('array')
53
                                    ->children()
54
                                        ->scalarNode('config_field_name')->cannotBeEmpty()->end()
55
                                        ->scalarNode('document_field_name')->cannotBeEmpty()->end()
56
                                        ->scalarNode('priority')->defaultValue(0)->end()
57
                                        ->booleanNode('discriminator')->defaultValue(false)->end()
58
                                    ->end()
59
                                ->end()
60
                            ->end()
61
                            ->arrayNode('fields')
62
                                ->prototype('array')
63
                                    ->children()
64
                                        ->scalarNode('entity_field_name')->cannotBeEmpty()->end()
65
                                        ->scalarNode('document_field_name')->cannotBeEmpty()->end()
66
                                        ->enumNode('field_type')
67
                                            ->defaultValue('string')
68
                                            ->values(['string', 'array', 'boolean', 'int', 'double', 'date'])
69
                                        ->end()
70
                                        ->booleanNode('entity_primary_key')->defaultValue(false)->end()
71
                                        ->scalarNode('priority')->defaultValue(0)->end()
72
                                        ->scalarNode('suggester')->defaultValue(null)->end()
73
                                    ->end()
74
                                ->end()
75
                            ->end()
76
                        ->end()
77
                    ->end()
78
                ->end()
79
            ->arrayNode('filters')
80
                ->addDefaultsIfNotSet()
81
                ->children()
82
                    ->arrayNode('fields')
83
                        ->defaultValue([])
84
                        ->useAttributeAsKey('name')
85
                        ->prototype('array')
86
                            ->children()
87
                                ->scalarNode('entity_field_name')->cannotBeEmpty()->end()
88
                                ->scalarNode('entity_field_value')->cannotBeEmpty()->end()
89
                                ->scalarNode('operator')->cannotBeEmpty()->end()
90
                            ->end()
91
                        ->end()
92
                    ->end()
93
                    ->arrayNode('services')
94
                        ->defaultValue([])
95
                        ->useAttributeAsKey('name')
96
                        ->prototype('array')
97
                            ->children()
98
                                ->scalarNode('service')->cannotBeEmpty()->end()
99
                            ->end()
100
                        ->end()
101
                    ->end()
102
                ->end()
103
            ->end()
104
            ->arrayNode('solarium_clients')
105
                ->defaultValue([])
106
                ->useAttributeAsKey('name')
107
                ->prototype('scalar')->end()
108
            ->end()
109
        ->end();
110
111
        return $treeBuilder;
112
    }
113
}
114