Completed
Push — master ( e727de...c49bae )
by
unknown
08:12 queued 02:25
created

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