Completed
Push — master ( 162ac8...74252e )
by
unknown
19:44
created

Configuration::addRedirectUrl()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 0
cts 7
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
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->addModelClass($rootNode);
23
        $this->addFilesystem($rootNode);
24
        $this->addRedirectUrl($rootNode);
25
        $this->addRedirectCacheTtl($rootNode);
26
        $this->addProviders($rootNode);
27
        $this->addGlideConfig($rootNode);
28
        $this->addDefaultImageParameters($rootNode);
29
        $this->addImageConstraints($rootNode);
30
        $this->addFileConstraints($rootNode);
31
        $this->addFallbackImage($rootNode);
32
        $this->addTmp($rootNode);
33
        $this->addTemplates($rootNode);
34
35
        return $treeBuilder;
36
    }
37
38
    /**
39
     * @param ArrayNodeDefinition $node
40
     */
41
    private function addModelClass(ArrayNodeDefinition $node)
42
    {
43
        $node->children()
44
            ->scalarNode('model_class')
45
            ->end();
46
    }
47
48
    /**
49
     * @param ArrayNodeDefinition $node
50
     */
51
    private function addFilesystem(ArrayNodeDefinition $node)
52
    {
53
        $node->children()
54
            ->scalarNode('filesystem_private')
55
            ->end();
56
57
        $node->children()
58
            ->scalarNode('filesystem_public')
59
            ->defaultNull()
60
            ->end();
61
    }
62
63
    /**
64
     * @param ArrayNodeDefinition $node
65
     */
66
    private function addRedirectUrl(ArrayNodeDefinition $node)
67
    {
68
        $node->children()
69
            ->scalarNode('redirect_url')
70
            ->defaultNull()
71
            ->end();
72
    }
73
74
    /**
75
     * @param ArrayNodeDefinition $node
76
     */
77
    private function addRedirectCacheTtl(ArrayNodeDefinition $node)
78
    {
79
        $node->children()
80
            ->scalarNode('redirect_cache_ttl')
81
            ->defaultValue(60 * 60 * 24 * 90)// 90 days
82
            ->end();
83
    }
84
85
    /**
86
     * @param ArrayNodeDefinition $node
87
     */
88
    private function addProviders(ArrayNodeDefinition $node)
89
    {
90
        $node->children()
91
            ->arrayNode('providers')
92
            ->defaultValue(
93
                [
94
                    'mediamonks.sonata_media.provider.file',
95
                    'mediamonks.sonata_media.provider.image',
96
                    'mediamonks.sonata_media.provider.youtube',
97
                    'mediamonks.sonata_media.provider.vimeo',
98
                    'mediamonks.sonata_media.provider.soundcloud'
99
                ]
100
            )
101
            ->prototype('scalar')->end()
102
            ->end();
103
    }
104
105
    /**
106
     * @param ArrayNodeDefinition $node
107
     */
108
    private function addGlideConfig(ArrayNodeDefinition $node)
109
    {
110
        $node->children()
111
            ->arrayNode('glide')
112
            ->prototype('scalar')->end()
113
            ->end();
114
    }
115
116
    /**
117
     * @param ArrayNodeDefinition $node
118
     */
119
    private function addDefaultImageParameters(ArrayNodeDefinition $node)
120
    {
121
        $node->children()
122
            ->arrayNode('default_image_parameters')
123
            ->prototype('scalar')->end()
124
            ->end();
125
    }
126
127
    /**
128
     * @param ArrayNodeDefinition $node
129
     */
130
    private function addImageConstraints(ArrayNodeDefinition $node)
131
    {
132
        $node->children()
133
            ->variableNode('image_constraints')
134
            ->defaultValue([
135
                'minWidth' => 100,
136
                'minHeight' => 100,
137
                'maxWidth' => 3000,
138
                'maxHeight' => 3000
139
            ])
140
            ->end();
141
    }
142
143
    /**
144
     * @param ArrayNodeDefinition $node
145
     */
146
    private function addFileConstraints(ArrayNodeDefinition $node)
147
    {
148
        $node->children()
149
            ->variableNode('file_constraints')
150
            ->defaultValue([
151
                'maxSize' => '5M',
152
                'extensions' => ['pdf', 'csv', 'txt', 'docx']
153
            ])
154
            ->end();
155
    }
156
157
    /**
158
     * @param ArrayNodeDefinition $node
159
     */
160
    private function addFallbackImage(ArrayNodeDefinition $node)
161
    {
162
        $node->children()
163
            ->scalarNode('fallback_image')
164
            ->defaultNull()
165
            ->end();
166
    }
167
168
    /**
169
     * @param ArrayNodeDefinition $node
170
     */
171
    private function addTmp(ArrayNodeDefinition $node)
172
    {
173
        $node->children()
174
            ->scalarNode('tmp_path')
175
            ->defaultNull()
176
            ->end();
177
178
        $node->children()
179
            ->scalarNode('tmp_prefix')
180
            ->defaultNull()
181
            ->end();
182
    }
183
184
    private function addTemplates(ArrayNodeDefinition $node)
185
    {
186
        $node->children()
187
            ->variableNode('templates')
188
            ->defaultValue([
189
                'form' => 'MediaMonksSonataMediaBundle:Form:form.html.twig'
190
            ])
191
            ->end();
192
    }
193
}
194