Completed
Push — master ( 3b23f0...80edcc )
by
unknown
13:12
created

FileProvider::getEmbedTemplate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 2
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\Provider;
4
5
use MediaMonks\SonataMediaBundle\Entity\Media;
6
use Sonata\AdminBundle\Form\FormMapper;
7
use Symfony\Component\HttpFoundation\File\UploadedFile;
8
9
class FileProvider extends AbstractProvider
10
{
11
    /**
12
     * @param FormMapper $formMapper
13
     */
14
    public function buildProviderCreateForm(FormMapper $formMapper)
15
    {
16
        $this->addRequiredFileUploadField($formMapper, 'binaryContent', 'File');
17
    }
18
19
    /**
20
     * @param FormMapper $formMapper
21
     */
22
    public function buildProviderEditForm(FormMapper $formMapper)
23
    {
24
        $this->addFileUploadField($formMapper, 'binaryContent', 'File');
25
    }
26
27
    /**
28
     * @param Media $media
29
     */
30
    public function update(Media $media)
31
    {
32
        if (!is_null($media->getBinaryContent())) {
33
            if (empty($media->getImage())) {
34
                $this->setFileImage($media);
35
            }
36
            $filename = $this->handleFileUpload($media);
37
            if (!empty($filename)) {
38
                $media->setProviderReference($filename);
39
            }
40
        }
41
42
        parent::update($media);
43
    }
44
45
    /**
46
     * @return string
47
     */
48
    public function getIcon()
49
    {
50
        return 'file';
51
    }
52
53
    /**
54
     * @return string
55
     */
56
    public function getTitle()
57
    {
58
        return 'File';
59
    }
60
61
    public function getType()
62
    {
63
        return 'file';
64
    }
65
66
    /**
67
     * @return string
68
     */
69
    public function getEmbedTemplate()
70
    {
71
        return 'MediaMonksSonataMediaBundle:Provider:file_embed.html.twig';
72
    }
73
74
    /**
75
     * @param Media $media
76
     */
77
    protected function setFileImage(Media $media)
78
    {
79
        /**
80
         * @var UploadedFile $file
81
         */
82
        $file = $media->getBinaryContent();
83
        if (empty($file)) {
84
            return;
85
        }
86
87
        $imageFilename = $this->getImageByExtension($file->getClientOriginalExtension());
88
        $media->setImageContent(
89
            new UploadedFile(
90
                $this->getImageLocation().$imageFilename,
91
                $imageFilename
92
            )
93
        );
94
    }
95
96
    /**
97
     * @param $extension
98
     * @return string
99
     */
100
    protected function getImageByExtension($extension)
101
    {
102
        switch ($extension) {
103
            case 'zip':
104
            case 'rar':
105
            case 'tar':
106
                return 'archive.png';
107
            case 'wav':
108
            case 'mp3':
109
            case 'flac':
110
            case 'aac':
111
            case 'aiff':
112
            case 'm4a':
113
            case 'ogg':
114
            case 'oga':
115
            case 'wma':
116
                return 'audio.png';
117
            case 'php':
118
            case 'html':
119
            case 'css':
120
            case 'js':
121
            case 'vb':
122
            case 'phar':
123
            case 'py':
124
            case 'jar':
125
            case 'json':
126
            case 'yml':
127
                return 'code.png';
128
            case 'xls':
129
            case 'xlt':
130
            case 'xlm':
131
            case 'xlsx':
132
            case 'xlsm':
133
            case 'xltx':
134
            case 'xltm':
135
                return 'excel.png';
136
            case 'jpg':
137
            case 'jpeg':
138
            case 'gif':
139
            case 'bmp':
140
            case 'tiff':
141
            case 'ai':
142
            case 'psd':
143
            case 'png':
144
                return 'image.png';
145
            case 'mp4':
146
            case 'avi':
147
            case 'mkv':
148
            case 'mpg':
149
            case 'mpeg':
150
                return 'movie.png';
151
            case 'pdf':
152
                return 'pdf.png';
153
            case 'ppt':
154
            case 'pot':
155
            case 'pps':
156
            case 'pptx':
157
            case 'pptm':
158
            case 'potx':
159
            case 'potm':
160
            case 'ppam':
161
            case 'ppsx':
162
            case 'ppsm':
163
            case 'sldx':
164
            case 'sldm':
165
                return 'powerpoint.png';
166
            case 'txt':
167
                return 'text.png';
168
            case 'doc':
169
            case 'dot':
170
            case 'wbk':
171
            case 'docx':
172
            case 'docm':
173
            case 'dotx':
174
            case 'dotm':
175
            case 'docb':
176
                return 'word.png';
177
            default:
178
                return 'default.png';
179
        }
180
    }
181
182
    /**
183
     * @return string
184
     */
185
    protected function getImageLocation()
186
    {
187
        return __DIR__.'/../Resources/image/file/';
188
    }
189
190
    /**
191
     * @return bool
192
     */
193
    public function supportsDownload()
194
    {
195
        return true;
196
    }
197
198
    /**
199
     * @return bool
200
     */
201
    public function supportsEmbed()
202
    {
203
        return false;
204
    }
205
206
    /**
207
     * @return bool
208
     */
209
    public function supportsImage()
210
    {
211
        return true;
212
    }
213
}
214