Completed
Push — master ( 319d57...6698bf )
by
unknown
26:50
created

Configuration::addDefaultImageParameters()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
crap 1
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\DependencyInjection;
4
5
use MediaMonks\SonataMediaBundle\MediaMonksSonataMediaBundle;
6
use MediaMonks\SonataMediaBundle\Provider\FileProvider;
7
use MediaMonks\SonataMediaBundle\Provider\ImageProvider;
8
use MediaMonks\SonataMediaBundle\Provider\SoundCloudProvider;
9
use MediaMonks\SonataMediaBundle\Provider\VimeoProvider;
10
use MediaMonks\SonataMediaBundle\Provider\YouTubeProvider;
11
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
12
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
13
use Symfony\Component\Config\Definition\ConfigurationInterface;
14
15
final class Configuration implements ConfigurationInterface
16
{
17
    /**
18
     * Generates the configuration tree.
19
     *
20
     * @return TreeBuilder
21
     */
22 2
    public function getConfigTreeBuilder()
23
    {
24 2
        $treeBuilder = new TreeBuilder();
25 2
        $rootNode = $treeBuilder->root(MediaMonksSonataMediaBundle::BUNDLE_CONFIG_NAME);
26
27 2
        $this->addModelClass($rootNode);
28 2
        $this->addFilesystem($rootNode);
29 2
        $this->addRedirectUrl($rootNode);
30 2
        $this->addRedirectCacheTtl($rootNode);
31 2
        $this->addProviders($rootNode);
32 2
        $this->addGlideConfig($rootNode);
33 2
        $this->addDefaultImageParameters($rootNode);
34 2
        $this->addImageConstraints($rootNode);
35 2
        $this->addFileConstraints($rootNode);
36 2
        $this->addFallbackImage($rootNode);
37 2
        $this->addTmp($rootNode);
38 2
        $this->addTemplates($rootNode);
39 2
        $this->addRoutes($rootNode);
40 2
        $this->addController($rootNode);
41
42 2
        return $treeBuilder;
43
    }
44
45
    /**
46
     * @param ArrayNodeDefinition $node
47
     */
48 2
    private function addModelClass(ArrayNodeDefinition $node)
49
    {
50 2
        $node->children()
51 2
            ->scalarNode('model_class')
52 2
            ->end();
53 2
    }
54
55
    /**
56
     * @param ArrayNodeDefinition $node
57
     */
58 2
    private function addFilesystem(ArrayNodeDefinition $node)
59
    {
60 2
        $node->children()
61 2
            ->scalarNode('filesystem_private')
62 2
            ->end();
63
64 2
        $node->children()
65 2
            ->scalarNode('filesystem_public')
66 2
            ->defaultNull()
67 2
            ->end();
68 2
    }
69
70
    /**
71
     * @param ArrayNodeDefinition $node
72
     */
73 2
    private function addRedirectUrl(ArrayNodeDefinition $node)
74
    {
75 2
        $node->children()
76 2
            ->scalarNode('redirect_url')
77 2
            ->defaultNull()
78 2
            ->end();
79 2
    }
80
81
    /**
82
     * @param ArrayNodeDefinition $node
83
     */
84 2
    private function addRedirectCacheTtl(ArrayNodeDefinition $node)
85
    {
86 2
        $node->children()
87 2
            ->scalarNode('redirect_cache_ttl')
88 2
            ->defaultValue(60 * 60 * 24 * 90)// 90 days
89 2
            ->end();
90 2
    }
91
92
    /**
93
     * @param ArrayNodeDefinition $node
94
     */
95 2
    private function addProviders(ArrayNodeDefinition $node)
96
    {
97 2
        $node->children()
98 2
            ->arrayNode('providers')
99 2
            ->defaultValue(
100
                [
101 2
                    FileProvider::class,
102
                    ImageProvider::class,
103
                    YouTubeProvider::class,
104
                    VimeoProvider::class,
105
                    SoundCloudProvider::class
106
                ]
107
            )
108 2
            ->prototype('scalar')->end()
109 2
            ->end();
110 2
    }
111
112
    /**
113
     * @param ArrayNodeDefinition $node
114
     */
115 2
    private function addGlideConfig(ArrayNodeDefinition $node)
116
    {
117 2
        $node->children()
118 2
            ->arrayNode('glide')
119 2
            ->prototype('scalar')->end()
120 2
            ->end();
121 2
    }
122
123
    /**
124
     * @param ArrayNodeDefinition $node
125
     */
126 2
    private function addDefaultImageParameters(ArrayNodeDefinition $node)
127
    {
128 2
        $node->children()
129 2
            ->arrayNode('default_image_parameters')
130 2
            ->prototype('scalar')->end()
131 2
            ->end();
132 2
    }
133
134
    /**
135
     * @param ArrayNodeDefinition $node
136
     */
137 2
    private function addImageConstraints(ArrayNodeDefinition $node)
138
    {
139 2
        $node->children()
140 2
            ->variableNode('image_constraints')
141 2
            ->defaultValue([
142 2
                'minWidth' => 100,
143
                'minHeight' => 100,
144
                'maxWidth' => 3000,
145
                'maxHeight' => 3000
146
            ])
147 2
            ->end();
148 2
    }
149
150
    /**
151
     * @param ArrayNodeDefinition $node
152
     */
153 2
    private function addFileConstraints(ArrayNodeDefinition $node)
154
    {
155 2
        $node->children()
156 2
            ->variableNode('file_constraints')
157 2
            ->defaultValue([
158 2
                'maxSize' => '5M',
159
                'extensions' => ['pdf', 'csv', 'txt', 'docx']
160
            ])
161 2
            ->end();
162 2
    }
163
164
    /**
165
     * @param ArrayNodeDefinition $node
166
     */
167 2
    private function addFallbackImage(ArrayNodeDefinition $node)
168
    {
169 2
        $node->children()
170 2
            ->scalarNode('fallback_image')
171 2
            ->defaultNull()
172 2
            ->end();
173 2
    }
174
175
    /**
176
     * @param ArrayNodeDefinition $node
177
     */
178 2
    private function addTmp(ArrayNodeDefinition $node)
179
    {
180 2
        $node->children()
181 2
            ->scalarNode('tmp_path')
182 2
            ->defaultNull()
183 2
            ->end();
184
185 2
        $node->children()
186 2
            ->scalarNode('tmp_prefix')
187 2
            ->defaultNull()
188 2
            ->end();
189 2
    }
190
191
    /**
192
     * @param ArrayNodeDefinition $node
193
     */
194 2
    private function addTemplates(ArrayNodeDefinition $node)
195
    {
196 2
        $node->children()
197 2
            ->variableNode('templates')
198 2
            ->defaultValue([
199 2
                'form' => 'MediaMonksSonataMediaBundle:Form:form.html.twig'
200
            ])
201 2
            ->end();
202 2
    }
203
204
    /**
205
     * @param ArrayNodeDefinition $node
206
     */
207 2
    private function addRoutes(ArrayNodeDefinition $node)
208
    {
209 2
        $node->children()
210 2
            ->scalarNode('route_image')
211 2
            ->defaultValue('mediamonks_media_image')
212 2
            ->end();
213
214 2
        $node->children()
215 2
            ->scalarNode('route_download')
216 2
            ->defaultValue('mediamonks_media_download')
217 2
            ->end();
218 2
    }
219
220
    /**
221
     * @param ArrayNodeDefinition $node
222
     */
223 2
    private function addController(ArrayNodeDefinition $node)
224
    {
225 2
        $node->children()
226 2
            ->scalarNode('controller')
227 2
            ->defaultValue('MediaMonksSonataMediaBundle:CRUD')
228 2
            ->end();
229 2
    }
230
}
231