Completed
Push — master ( 8cca00...50a95d )
by
unknown
06:53
created

Configuration::addImageConstraints()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 6
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
crap 2
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\DependencyInjection;
4
5
use MediaMonks\SonataMediaBundle\MediaMonksSonataMediaBundle;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
8
use Symfony\Component\Config\Definition\ConfigurationInterface;
9
10
final class Configuration implements ConfigurationInterface
11
{
12
    /**
13
     * Generates the configuration tree.
14
     *
15
     * @return TreeBuilder
16
     */
17
    public function getConfigTreeBuilder()
18
    {
19
        $treeBuilder = new TreeBuilder();
20
        $rootNode = $treeBuilder->root(MediaMonksSonataMediaBundle::BUNDLE_CONFIG_NAME);
21
22
        $this->addFilesystem($rootNode);
23
        $this->addRedirectUrl($rootNode);
24
        $this->addRedirectCacheTtl($rootNode);
25
        $this->addProviders($rootNode);
26
        $this->addGlideConfig($rootNode);
27
        $this->addDefaultImageParameters($rootNode);
28
        $this->addImageConstraints($rootNode);
29
        $this->addFileConstraints($rootNode);
30
31
        return $treeBuilder;
32
    }
33
34
    /**
35
     * @param ArrayNodeDefinition $node
36
     */
37
    private function addFilesystem(ArrayNodeDefinition $node)
38
    {
39
        $node->children()
40
            ->scalarNode('filesystem_private')
41
            ->end();
42
43
        $node->children()
44
            ->scalarNode('filesystem_public')
45
            ->defaultNull()
46
            ->end();
47
    }
48
49
    /**
50
     * @param ArrayNodeDefinition $node
51
     */
52
    private function addRedirectUrl(ArrayNodeDefinition $node)
53
    {
54
        $node->children()
55
            ->scalarNode('redirect_url')
56
            ->defaultNull()
57
            ->end();
58
    }
59
60
    /**
61
     * @param ArrayNodeDefinition $node
62
     */
63
    private function addRedirectCacheTtl(ArrayNodeDefinition $node)
64
    {
65
        $node->children()
66
            ->scalarNode('redirect_cache_ttl')
67
            ->defaultValue(60 * 60 * 24 * 90)// 90 days
68
            ->end();
69
    }
70
71
    /**
72
     * @param ArrayNodeDefinition $node
73
     */
74
    private function addProviders(ArrayNodeDefinition $node)
75
    {
76
        $node->children()
77
            ->arrayNode('providers')
78
            ->defaultValue(
79
                [
80
                    'mediamonks.sonata_media.provider.file',
81
                    'mediamonks.sonata_media.provider.image',
82
                    'mediamonks.sonata_media.provider.youtube',
83
                    'mediamonks.sonata_media.provider.soundcloud'
84
                ]
85
            )
86
            ->prototype('scalar')->end()
87
            ->end();
88
    }
89
90
    /**
91
     * @param ArrayNodeDefinition $node
92
     */
93
    private function addGlideConfig(ArrayNodeDefinition $node)
94
    {
95
        $node->children()
96
            ->arrayNode('glide')
97
            ->prototype('scalar')->end()
98
            ->end();
99
    }
100
101
    /**
102
     * @param ArrayNodeDefinition $node
103
     */
104
    private function addDefaultImageParameters(ArrayNodeDefinition $node)
105
    {
106
        $node->children()
107
            ->arrayNode('default_image_parameters')
108
            ->prototype('scalar')->end()
109
            ->end();
110
    }
111
112
    /**
113
     * @param ArrayNodeDefinition $node
114
     */
115
    private function addImageConstraints(ArrayNodeDefinition $node)
116
    {
117
        $node->children()
118
            ->variableNode('image_constraints')
119
            ->end();
120
    }
121
122
    /**
123
     * @param ArrayNodeDefinition $node
124
     */
125
    private function addFileConstraints(ArrayNodeDefinition $node)
126
    {
127
        $node->children()
128
            ->variableNode('file_constraints')
129
            ->end();
130
    }
131
}
132