Configuration   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 4
Bugs 0 Features 2
Metric Value
wmc 4
c 4
b 0
f 2
lcom 1
cbo 7
dl 0
loc 88
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getConfigTreeBuilder() 0 11 1
A addSlugifyNode() 0 14 1
A addFormFactoryNode() 0 16 1
A addSettingsSection() 0 23 1
1
<?php
2
3
namespace DoS\ResourceBundle\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
8
class Configuration extends AbstractResourceConfiguration
9
{
10
    /**
11
     * {@inheritdoc}
12
     */
13
    public function getConfigTreeBuilder()
14
    {
15
        $treeBuilder = new TreeBuilder();
16
        $rootNode = $treeBuilder->root('dos_resource');
17
18
        $this->addSettingsSection($rootNode);
19
        $this->addFormFactoryNode($rootNode);
20
        $this->addSlugifyNode($rootNode);
21
22
        return $treeBuilder;
23
    }
24
25
    /**
26
     * Adds `settings` section.
27
     *
28
     * @param $node
29
     */
30
    private function addSlugifyNode(ArrayNodeDefinition $node)
31
    {
32
        $node
33
            ->children()
34
                ->arrayNode('slugify')
35
                    ->addDefaultsIfNotSet()
36
                    ->children()
37
                        ->booleanNode('lowercase')->defaultFalse()->end()
38
                        ->variableNode('reg_exp')->defaultValue('/([^A-Za-z0-9\p{Thai}]|-)+/u')->end()
39
                    ->end()
40
                ->end()
41
            ->end()
42
        ;
43
    }
44
45
    /**
46
     * Adds `settings` section.
47
     *
48
     * @param $node
49
     */
50
    private function addFormFactoryNode(ArrayNodeDefinition $node)
51
    {
52
        $node
53
            ->children()
54
                ->arrayNode('form_factory')
55
                    ->addDefaultsIfNotSet()
56
                    ->children()
57
                        ->booleanNode('enabled')->defaultTrue()->end()
58
                        ->variableNode('class')->defaultValue('DoS\ResourceBundle\Form\Factory')->end()
59
                        ->variableNode('pattern')->defaultValue('/(sylius|fos|core)_/')->end()
60
                        ->variableNode('replacement')->defaultValue('dos_')->end()
61
                    ->end()
62
                ->end()
63
            ->end()
64
        ;
65
    }
66
67
    /**
68
     * Adds `settings` section.
69
     *
70
     * @param $node
71
     */
72
    private function addSettingsSection(ArrayNodeDefinition $node)
73
    {
74
        $node
75
            ->children()
76
                ->arrayNode('settings')
77
                    ->addDefaultsIfNotSet()
78
                    ->children()
79
                        ->variableNode('paginate')->defaultNull()->end()
80
                        ->variableNode('limit')->defaultNull()->end()
81
                        ->arrayNode('allowed_paginate')
82
                            ->prototype('integer')->end()
83
                            ->defaultValue(array(10, 20, 30))
84
                        ->end()
85
                        ->integerNode('default_page_size')->defaultValue(20)->end()
86
                        ->booleanNode('sortable')->defaultFalse()->end()
87
                        ->variableNode('sorting')->defaultNull()->end()
88
                        ->booleanNode('filterable')->defaultFalse()->end()
89
                        ->variableNode('criteria')->defaultNull()->end()
90
                    ->end()
91
                ->end()
92
            ->end()
93
        ;
94
    }
95
}
96