Completed
Push — master ( bed5f6...b4ee89 )
by
unknown
07:18
created

Configuration::addClasses()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 1

Importance

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