Completed
Push — master ( 0db64f...4dc64d )
by
unknown
04:14
created

Configuration::addTmp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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