Configuration::addDefaultSender()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
rs 9.4285
cc 1
eloc 8
nc 1
nop 1
1
<?php
2
3
namespace DoS\SMSBundle\DependencyInjection;
4
5
use DoS\ResourceBundle\DependencyInjection\AbstractResourceConfiguration;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
8
9
class Configuration extends AbstractResourceConfiguration
10
{
11
    /**
12
     * {@inheritdoc}
13
     */
14
    public function getConfigTreeBuilder()
15
    {
16
        $treeBuilder = new TreeBuilder();
17
        $rootNode = $treeBuilder->root('dos_sms');
18
19
        $this->setDefaults($rootNode, array(
20
            'resources' => array(
21
                'sms_provider' => array(
22
                    'classes' => array(
23
                        'model' => 'DoS\SMSBundle\Model\Provider',
24
                        'controller' => 'DoS\SMSBundle\Controller\ProviderController',
25
                        'interface' => 'DoS\SMSBundle\Model\ProviderInterface',
26
                        'form' => array(
27
                            'default' => 'DoS\SMSBundle\Form\Type\ProviderType',
28
                        ),
29
                    ),
30
                ),
31
                'sms_record' => array(
32
                    'classes' => array(
33
                        'model' => 'DoS\SMSBundle\Model\Record',
34
                        'controller' => 'DoS\SMSBundle\Controller\RecordController',
35
                        'interface' => 'DoS\SMSBundle\Model\RecordInterface',
36
                        'form' => array(),
37
                    ),
38
                ),
39
            ),
40
        ));
41
42
        $this->addHttpAdapterNode($rootNode);
43
        $this->addPoolNode($rootNode);
44
        $this->addProvidersNode($rootNode);
45
        $this->addDefaultSender($rootNode);
46
47
        return $treeBuilder;
48
    }
49
50
    protected function addProvidersNode(ArrayNodeDefinition $rootNode)
51
    {
52
        $rootNode
53
            ->children()
54
                ->scalarNode('provider')
55
                    ->defaultValue('dummy')
56
                ->end()
57
                ->scalarNode('testing_number')
58
                    ->defaultNull()->cannotBeEmpty()
59
                ->end()
60
                ->arrayNode('providers')
61
                    ->isRequired()
62
                    ->requiresAtLeastOneElement()
63
                    ->useAttributeAsKey('name')
64
                    ->prototype('variable')
65
                ->end()
66
            ->end();
67
68
        return $rootNode;
69
    }
70
71
    protected function addHttpAdapterNode(ArrayNodeDefinition $rootNode)
72
    {
73
        $supportedHttpAdapters = array('curl', 'buzz');
74
75
        $rootNode
76
            ->children()
77
                ->scalarNode('http_adapter')
78
                ->defaultValue('curl')
79
                ->validate()
80
                    ->ifNotInArray($supportedHttpAdapters)
81
                    ->thenInvalid('The http_adapter %s is not supported. Please choose one of '.implode(', ', $supportedHttpAdapters))
82
                ->end()
83
            ->end();
84
85
        return $rootNode;
86
    }
87
88
    protected function addPoolNode(ArrayNodeDefinition $rootNode)
89
    {
90
        $rootNode
91
            ->children()
92
                ->scalarNode('pool')
93
                ->defaultValue('memory')
94
                ->cannotBeEmpty()
95
            ->end();
96
97
        return $rootNode;
98
    }
99
100
    protected function addDefaultSender(ArrayNodeDefinition $rootNode)
101
    {
102
        $rootNode
103
            ->children()
104
                ->scalarNode('sender')
105
                ->defaultValue('dos.sms.sender.delayed')
106
                ->cannotBeEmpty()
107
            ->end();
108
109
        return $rootNode;
110
    }
111
}
112