Completed
Pull Request — master (#406)
by
unknown
03:31
created

SonataMediaExtension::configureAdmin()   B

Complexity

Conditions 4
Paths 8

Size

Total Lines 24
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 24
rs 8.6845
cc 4
eloc 16
nc 8
nop 2
1
<?php
2
3
/*
4
 * This file is part of the Sonata Project package.
5
 *
6
 * (c) Thomas Rabaix <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sonata\MediaBundle\DependencyInjection;
13
14
use Sonata\EasyExtendsBundle\Mapper\DoctrineCollector;
15
use Symfony\Component\Config\Definition\Processor;
16
use Symfony\Component\Config\FileLocator;
17
use Symfony\Component\DependencyInjection\ContainerBuilder;
18
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
19
use Symfony\Component\DependencyInjection\Reference;
20
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
21
22
/**
23
 * MediaExtension.
24
 *
25
 * @author     Thomas Rabaix <[email protected]>
26
 */
27
class SonataMediaExtension extends Extension
28
{
29
    /**
30
     * {@inheritdoc}
31
     */
32
    public function load(array $configs, ContainerBuilder $container)
33
    {
34
        $processor     = new Processor();
35
        $configuration = new Configuration();
36
        $config        = $processor->processConfiguration($configuration, $configs);
37
38
        $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
39
        $loader->load('provider.xml');
40
        $loader->load('media.xml');
41
        $loader->load('twig.xml');
42
        $loader->load('block.xml');
43
        $loader->load('security.xml');
44
        $loader->load('extra.xml');
45
        $loader->load('form.xml');
46
        $loader->load('gaufrette.xml');
47
        $loader->load('validators.xml');
48
        $loader->load('serializer.xml');
49
50
        if (!in_array(strtolower($config['db_driver']), array('doctrine_orm', 'doctrine_mongodb', 'doctrine_phpcr'))) {
51
            throw new \InvalidArgumentException(sprintf('SonataMediaBundle - Invalid db driver "%s".', $config['db_driver']));
52
        }
53
54
        $bundles = $container->getParameter('kernel.bundles');
55
56
        if (isset($bundles['FOSRestBundle']) && isset($bundles['NelmioApiDocBundle'])) {
57
            $loader->load(sprintf('api_form_%s.xml', $config['db_driver']));
58
59
            if ('doctrine_orm' == $config['db_driver']) {
60
                $loader->load('api_controllers.xml');
61
            }
62
        }
63
64
        if (isset($bundles['SonataNotificationBundle'])) {
65
            $loader->load('consumer.xml');
66
        }
67
68
        if (isset($bundles['SonataFormatterBundle'])) {
69
            $loader->load('formatter.xml');
70
        }
71
72
        if (isset($bundles['SonataSeoBundle'])) {
73
            $loader->load('seo_block.xml');
74
        }
75
76
        if (!isset($bundles['LiipImagineBundle'])) {
77
            $container->removeDefinition('sonata.media.thumbnail.liip_imagine');
78
        }
79
80
        if (!array_key_exists($config['default_context'], $config['contexts'])) {
81
            throw new \InvalidArgumentException(sprintf('SonataMediaBundle - Invalid default context : %s, available : %s', $config['default_context'], json_encode(array_keys($config['contexts']))));
82
        }
83
84
        $loader->load(sprintf('%s.xml', $config['db_driver']));
85
86
        if (isset($bundles['SonataAdminBundle'])) {
87
            $loader->load(sprintf('%s_admin.xml', $config['db_driver']));
88
        }
89
90
        $this->configureFilesystemAdapter($container, $config);
91
        $this->configureCdnAdapter($container, $config);
92
93
        $pool = $container->getDefinition('sonata.media.pool');
94
        $pool->replaceArgument(0, $config['default_context']);
95
96
        // this shameless hack is done in order to have one clean configuration
97
        // for adding formats ....
98
        $pool->addMethodCall('__hack__', $config);
99
100
        $strategies = array();
101
102
        foreach ($config['contexts'] as $name => $settings) {
103
            $formats = array();
104
105
            foreach ($settings['formats'] as $format => $value) {
106
                $formats[$name.'_'.$format] = $value;
107
            }
108
109
            $strategies[] = $settings['download']['strategy'];
110
            $pool->addMethodCall('addContext', array($name, $settings['providers'], $formats, $settings['download']));
111
        }
112
113
        $strategies = array_unique($strategies);
114
115
        foreach ($strategies as $strategyId) {
116
            $pool->addMethodCall('addDownloadSecurity', array($strategyId, new Reference($strategyId)));
117
        }
118
119
        if ('doctrine_orm' == $config['db_driver']) {
120
            $this->registerDoctrineMapping($config);
121
        }
122
123
        $container->setParameter('sonata.media.resizer.simple.adapter.mode', $config['resizer']['simple']['mode']);
124
        $container->setParameter('sonata.media.resizer.square.adapter.mode', $config['resizer']['square']['mode']);
125
126
        $this->configureParameterClass($container, $config);
127
        $this->configureExtra($container, $config);
128
        $this->configureBuzz($container, $config);
129
        $this->configureProviders($container, $config);
130
        $this->configureAdmin($container, $config);
131
        $this->configureClassesToCompile();
132
    }
133
134
    /**
135
     * @param ContainerBuilder $container
136
     * @param array            $config
137
     */
138
    public function configureProviders(ContainerBuilder $container, $config)
139
    {
140
        $container->getDefinition('sonata.media.provider.image')
141
            ->replaceArgument(5, array_map('strtolower', $config['providers']['image']['allowed_extensions']))
142
            ->replaceArgument(6, $config['providers']['image']['allowed_mime_types'])
143
            ->replaceArgument(7, new Reference($config['providers']['image']['adapter']))
144
        ;
145
146
        $container->getDefinition('sonata.media.provider.file')
147
            ->replaceArgument(5, $config['providers']['file']['allowed_extensions'])
148
            ->replaceArgument(6, $config['providers']['file']['allowed_mime_types'])
149
        ;
150
151
        $container->getDefinition('sonata.media.provider.youtube')->replaceArgument(7, $config['providers']['youtube']['html5']);
152
    }
153
154
    /**
155
     * @param ContainerBuilder $container
156
     * @param array            $config
157
     */
158
    public function configureBuzz(ContainerBuilder $container, array $config)
159
    {
160
        $container->getDefinition('sonata.media.buzz.browser')
161
            ->replaceArgument(0, new Reference($config['buzz']['connector']));
162
163
        foreach (array(
164
            'sonata.media.buzz.connector.curl',
165
            'sonata.media.buzz.connector.file_get_contents',
166
        ) as $connector) {
167
            $container->getDefinition($connector)
168
                ->addMethodCall('setIgnoreErrors', array($config['buzz']['client']['ignore_errors']))
169
                ->addMethodCall('setMaxRedirects', array($config['buzz']['client']['max_redirects']))
170
                ->addMethodCall('setTimeout',      array($config['buzz']['client']['timeout']))
171
                ->addMethodCall('setVerifyPeer',   array($config['buzz']['client']['verify_peer']))
172
                ->addMethodCall('setProxy',        array($config['buzz']['client']['proxy']));
173
        }
174
    }
175
176
    /**
177
     * @param ContainerBuilder $container
178
     * @param array            $config
179
     */
180
    public function configureParameterClass(ContainerBuilder $container, array $config)
181
    {
182
        $container->setParameter('sonata.media.admin.media.entity', $config['class']['media']);
183
        $container->setParameter('sonata.media.admin.gallery.entity', $config['class']['gallery']);
184
        $container->setParameter('sonata.media.admin.gallery_has_media.entity', $config['class']['gallery_has_media']);
185
186
        $container->setParameter('sonata.media.media.class', $config['class']['media']);
187
        $container->setParameter('sonata.media.gallery.class', $config['class']['gallery']);
188
189
        $container->getDefinition('sonata.media.form.type.media')->replaceArgument(1, $config['class']['media']);
190
    }
191
192
    /**
193
     * @param array $config
194
     */
195
    public function registerDoctrineMapping(array $config)
196
    {
197
        $collector = DoctrineCollector::getInstance();
198
199
        $collector->addAssociation($config['class']['media'], 'mapOneToMany', array(
200
            'fieldName'     => 'galleryHasMedias',
201
            'targetEntity'  => $config['class']['gallery_has_media'],
202
            'cascade'       => array(
203
                'persist',
204
            ),
205
            'mappedBy'      => 'media',
206
            'orphanRemoval' => false,
207
        ));
208
209
        $collector->addAssociation($config['class']['gallery_has_media'], 'mapManyToOne', array(
210
            'fieldName'     => 'gallery',
211
            'targetEntity'  => $config['class']['gallery'],
212
            'cascade'       => array(
213
                'persist',
214
            ),
215
            'mappedBy'      => null,
216
            'inversedBy'    => 'galleryHasMedias',
217
            'joinColumns'   => array(
218
                array(
219
                    'name'                 => 'gallery_id',
220
                    'referencedColumnName' => 'id',
221
                ),
222
            ),
223
            'orphanRemoval' => false,
224
        ));
225
226
        $collector->addAssociation($config['class']['gallery_has_media'], 'mapManyToOne', array(
227
            'fieldName'     => 'media',
228
            'targetEntity'  => $config['class']['media'],
229
            'cascade'       => array(
230
                 'persist',
231
            ),
232
            'mappedBy'      => null,
233
            'inversedBy'    => 'galleryHasMedias',
234
            'joinColumns'   => array(
235
                array(
236
                    'name'                 => 'media_id',
237
                    'referencedColumnName' => 'id',
238
                ),
239
            ),
240
            'orphanRemoval' => false,
241
        ));
242
243
        $collector->addAssociation($config['class']['gallery'], 'mapOneToMany', array(
244
            'fieldName'     => 'galleryHasMedias',
245
            'targetEntity'  => $config['class']['gallery_has_media'],
246
            'cascade'       => array(
247
                'persist',
248
            ),
249
            'mappedBy'      => 'gallery',
250
            'orphanRemoval' => true,
251
            'orderBy'       => array(
252
                'position'  => 'ASC',
253
            ),
254
        ));
255
256
        if (interface_exists('Sonata\ClassificationBundle\Model\CategoryInterface')) {
257
            $collector->addAssociation($config['class']['media'], 'mapManyToOne', array(
258
                'fieldName'     => 'category',
259
                'targetEntity'  => $config['class']['category'],
260
                'cascade'       => array(
261
                    'persist',
262
                ),
263
                'mappedBy'      => null,
264
                'inversedBy'    => null,
265
                'joinColumns'   => array(
266
                    array(
267
                     'name'                 => 'category_id',
268
                     'referencedColumnName' => 'id',
269
                     'onDelete'             => 'SET NULL',
270
                    ),
271
                ),
272
                'orphanRemoval' => false,
273
            ));
274
        }
275
    }
276
277
    /**
278
     * Inject CDN dependency to default provider.
279
     *
280
     * @param ContainerBuilder $container
281
     * @param array            $config
282
     */
283
    public function configureCdnAdapter(ContainerBuilder $container, array $config)
284
    {
285
        // add the default configuration for the server cdn
286
        if ($container->hasDefinition('sonata.media.cdn.server') && isset($config['cdn']['server'])) {
287
            $container->getDefinition('sonata.media.cdn.server')
288
                ->replaceArgument(0, $config['cdn']['server']['path'])
289
            ;
290
        } else {
291
            $container->removeDefinition('sonata.media.cdn.server');
292
        }
293
294
        if ($container->hasDefinition('sonata.media.cdn.panther') && isset($config['cdn']['panther'])) {
295
            $container->getDefinition('sonata.media.cdn.panther')
296
                ->replaceArgument(0, $config['cdn']['panther']['path'])
297
                ->replaceArgument(1, $config['cdn']['panther']['username'])
298
                ->replaceArgument(2, $config['cdn']['panther']['password'])
299
                ->replaceArgument(3, $config['cdn']['panther']['site_id'])
300
            ;
301
        } else {
302
            $container->removeDefinition('sonata.media.cdn.panther');
303
        }
304
305
        if ($container->hasDefinition('sonata.media.cdn.cloudfront') && isset($config['cdn']['cloudfront'])) {
306
            $container->getDefinition('sonata.media.cdn.cloudfront')
307
                ->replaceArgument(0, $config['cdn']['cloudfront']['path'])
308
                ->replaceArgument(1, $config['cdn']['cloudfront']['key'])
309
                ->replaceArgument(2, $config['cdn']['cloudfront']['secret'])
310
                ->replaceArgument(3, $config['cdn']['cloudfront']['distribution_id'])
311
            ;
312
        } else {
313
            $container->removeDefinition('sonata.media.cdn.cloudfront');
314
        }
315
316
        if ($container->hasDefinition('sonata.media.cdn.fallback') && isset($config['cdn']['fallback'])) {
317
            $container->getDefinition('sonata.media.cdn.fallback')
318
                ->replaceArgument(0, new Reference($config['cdn']['fallback']['master']))
319
                ->replaceArgument(1, new Reference($config['cdn']['fallback']['fallback']))
320
            ;
321
        } else {
322
            $container->removeDefinition('sonata.media.cdn.fallback');
323
        }
324
    }
325
326
    /**
327
     * Inject filesystem dependency to default provider.
328
     *
329
     * @param ContainerBuilder $container
330
     * @param array            $config
331
     */
332
    public function configureFilesystemAdapter(ContainerBuilder $container, array $config)
333
    {
334
        // add the default configuration for the local filesystem
335
        if ($container->hasDefinition('sonata.media.adapter.filesystem.local') && isset($config['filesystem']['local'])) {
336
            $container->getDefinition('sonata.media.adapter.filesystem.local')
337
                ->addArgument($config['filesystem']['local']['directory'])
338
                ->addArgument($config['filesystem']['local']['create'])
339
            ;
340
        } else {
341
            $container->removeDefinition('sonata.media.adapter.filesystem.local');
342
        }
343
344
        // add the default configuration for the FTP filesystem
345
        if ($container->hasDefinition('sonata.media.adapter.filesystem.ftp') && isset($config['filesystem']['ftp'])) {
346
            $container->getDefinition('sonata.media.adapter.filesystem.ftp')
347
                ->addArgument($config['filesystem']['ftp']['directory'])
348
                ->addArgument($config['filesystem']['ftp']['host'])
349
                ->addArgument(array(
350
                    'port'     => $config['filesystem']['ftp']['port'],
351
                    'username' => $config['filesystem']['ftp']['username'],
352
                    'password' => $config['filesystem']['ftp']['password'],
353
                    'passive'  => $config['filesystem']['ftp']['passive'],
354
                    'create'   => $config['filesystem']['ftp']['create'],
355
                    'mode'     => $config['filesystem']['ftp']['mode'],
356
                ))
357
            ;
358
        } else {
359
            $container->removeDefinition('sonata.media.adapter.filesystem.ftp');
360
            $container->removeDefinition('sonata.media.filesystem.ftp');
361
        }
362
363
        // add the default configuration for the S3 filesystem
364
        if ($container->hasDefinition('sonata.media.adapter.filesystem.s3') && isset($config['filesystem']['s3'])) {
365
            $container->getDefinition('sonata.media.adapter.filesystem.s3')
366
                ->replaceArgument(0, new Reference('sonata.media.adapter.service.s3'))
367
                ->replaceArgument(1, $config['filesystem']['s3']['bucket'])
368
                ->replaceArgument(2, array('create' => $config['filesystem']['s3']['create'], 'region' => $config['filesystem']['s3']['region'], 'directory' => $config['filesystem']['s3']['directory'], 'ACL' => $config['filesystem']['s3']['acl']))
369
            ;
370
371
            $container->getDefinition('sonata.media.metadata.amazon')
372
                ->addArgument(array(
373
                        'acl'           => $config['filesystem']['s3']['acl'],
374
                        'storage'       => $config['filesystem']['s3']['storage'],
375
                        'encryption'    => $config['filesystem']['s3']['encryption'],
376
                        'meta'          => $config['filesystem']['s3']['meta'],
377
                        'cache_control' => $config['filesystem']['s3']['cache_control'],
378
                ))
379
            ;
380
381
            $container->getDefinition('sonata.media.adapter.service.s3')
382
                ->replaceArgument(0, array(
383
                    'secret' => $config['filesystem']['s3']['secretKey'],
384
                    'key'    => $config['filesystem']['s3']['accessKey'],
385
                ))
386
            ;
387
        } else {
388
            $container->removeDefinition('sonata.media.adapter.filesystem.s3');
389
            $container->removeDefinition('sonata.media.filesystem.s3');
390
        }
391
392
        if ($container->hasDefinition('sonata.media.adapter.filesystem.replicate') && isset($config['filesystem']['replicate'])) {
393
            $container->getDefinition('sonata.media.adapter.filesystem.replicate')
394
                ->replaceArgument(0, new Reference($config['filesystem']['replicate']['master']))
395
                ->replaceArgument(1, new Reference($config['filesystem']['replicate']['slave']))
396
            ;
397
        } else {
398
            $container->removeDefinition('sonata.media.adapter.filesystem.replicate');
399
            $container->removeDefinition('sonata.media.filesystem.replicate');
400
        }
401
402
        if ($container->hasDefinition('sonata.media.adapter.filesystem.mogilefs') && isset($config['filesystem']['mogilefs'])) {
403
            $container->getDefinition('sonata.media.adapter.filesystem.mogilefs')
404
                ->replaceArgument(0, $config['filesystem']['mogilefs']['domain'])
405
                ->replaceArgument(1, $config['filesystem']['mogilefs']['hosts'])
406
            ;
407
        } else {
408
            $container->removeDefinition('sonata.media.adapter.filesystem.mogilefs');
409
            $container->removeDefinition('sonata.media.filesystem.mogilefs');
410
        }
411
412
        if ($container->hasDefinition('sonata.media.adapter.filesystem.opencloud') &&
413
            (isset($config['filesystem']['openstack']) || isset($config['filesystem']['rackspace']))) {
414
            if (isset($config['filesystem']['openstack'])) {
415
                $container->setParameter('sonata.media.adapter.filesystem.opencloud.class', 'OpenCloud\OpenStack');
416
                $settings = 'openstack';
417
            } else {
418
                $container->setParameter('sonata.media.adapter.filesystem.opencloud.class', 'OpenCloud\Rackspace');
419
                $settings = 'rackspace';
420
            }
421
            $container->getDefinition('sonata.media.adapter.filesystem.opencloud.connection')
422
                ->replaceArgument(0, $config['filesystem'][$settings]['url'])
423
                ->replaceArgument(1, $config['filesystem'][$settings]['secret'])
424
                ;
425
            $container->getDefinition('sonata.media.adapter.filesystem.opencloud')
426
                ->replaceArgument(1, $config['filesystem'][$settings]['containerName'])
427
                ->replaceArgument(2, $config['filesystem'][$settings]['create_container']);
428
            $container->getDefinition('sonata.media.adapter.filesystem.opencloud.objectstore')
429
                ->replaceArgument(1, $config['filesystem'][$settings]['region']);
430
        } else {
431
            $container->removeDefinition('sonata.media.adapter.filesystem.opencloud');
432
            $container->removeDefinition('sonata.media.adapter.filesystem.opencloud.connection');
433
            $container->removeDefinition('sonata.media.adapter.filesystem.opencloud.objectstore');
434
            $container->removeDefinition('sonata.media.filesystem.opencloud');
435
        }
436
    }
437
438
    /**
439
     * @param ContainerBuilder $container
440
     * @param array            $config
441
     */
442
    public function configureExtra(ContainerBuilder $container, array $config)
443
    {
444
        if ($config['pixlr']['enabled']) {
445
            $container->getDefinition('sonata.media.extra.pixlr')
446
                ->replaceArgument(0, $config['pixlr']['referrer'])
447
                ->replaceArgument(1, $config['pixlr']['secret'])
448
            ;
449
        } else {
450
            $container->removeDefinition('sonata.media.extra.pixlr');
451
        }
452
    }
453
454
    /**
455
     * @param ContainerBuilder $container
456
     * @param array            $config
457
     */
458
    public function configureAdmin(ContainerBuilder $container, array $config)
459
    {
460
        if (array_key_exists('class', $config['admin']['media'])) {
461
            $container->setParameter('sonata.media.admin.media.class', $config['admin']['media']['class']);
462
        }
463
        if (array_key_exists('class', $config['admin']['gallery'])) {
464
            $container->setParameter('sonata.media.admin.gallery.class', $config['admin']['gallery']['class']);
465
        }
466
        if (array_key_exists('class', $config['admin']['gallery_has_media'])) {
467
            $container->setParameter('sonata.media.admin.gallery_has_media.class', $config['admin']['gallery_has_media']['class']);
468
        }
469
470
        $container->setParameter('sonata.media.admin.media.controller', $config['admin']['media']['controller']);
471
        $container->setParameter('sonata.media.admin.gallery.controller', $config['admin']['gallery']['controller']);
472
        $container->setParameter('sonata.media.admin.gallery_has_media.controller', $config['admin']['gallery_has_media']['controller']);
473
474
        $container->setParameter('sonata.media.admin.media.translation_domain', $config['admin']['media']['translation']);
475
        $container->setParameter('sonata.media.admin.gallery.translation_domain', $config['admin']['gallery']['translation']);
476
        $container->setParameter('sonata.media.admin.gallery_has_media.translation_domain', $config['admin']['gallery_has_media']['translation']);
477
478
        $container->setParameter('sonata.media.admin.media.show_in_dashboard', $config['admin']['media']['show_in_dashboard']);
479
        $container->setParameter('sonata.media.admin.gallery.show_in_dashboard', $config['admin']['gallery']['show_in_dashboard']);
480
        $container->setParameter('sonata.media.admin.gallery_has_media.show_in_dashboard', $config['admin']['gallery_has_media']['show_in_dashboard']);
481
    }
482
483
    /**
484
     * Add class to compile.
485
     */
486
    public function configureClassesToCompile()
487
    {
488
        $this->addClassesToCompile(array(
489
            'Sonata\\MediaBundle\\CDN\\CDNInterface',
490
            'Sonata\\MediaBundle\\CDN\\CloudFront',
491
            'Sonata\\MediaBundle\\CDN\\Fallback',
492
            'Sonata\\MediaBundle\\CDN\\PantherPortal',
493
            'Sonata\\MediaBundle\\CDN\\Server',
494
            'Sonata\\MediaBundle\\Extra\\Pixlr',
495
            'Sonata\\MediaBundle\\Filesystem\\Local',
496
            'Sonata\\MediaBundle\\Filesystem\\Replicate',
497
            'Sonata\\MediaBundle\\Generator\\DefaultGenerator',
498
            'Sonata\\MediaBundle\\Generator\\GeneratorInterface',
499
            'Sonata\\MediaBundle\\Generator\\ODMGenerator',
500
            'Sonata\\MediaBundle\\Generator\\PHPCRGenerator',
501
            'Sonata\\MediaBundle\\Metadata\\AmazonMetadataBuilder',
502
            'Sonata\\MediaBundle\\Metadata\\MetadataBuilderInterface',
503
            'Sonata\\MediaBundle\\Metadata\\NoopMetadataBuilder',
504
            'Sonata\\MediaBundle\\Metadata\\ProxyMetadataBuilder',
505
            'Sonata\\MediaBundle\\Model\\Gallery',
506
            'Sonata\\MediaBundle\\Model\\GalleryHasMedia',
507
            'Sonata\\MediaBundle\\Model\\GalleryHasMediaInterface',
508
            'Sonata\\MediaBundle\\Model\\GalleryInterface',
509
            'Sonata\\MediaBundle\\Model\\GalleryManager',
510
            'Sonata\\MediaBundle\\Model\\GalleryManagerInterface',
511
            'Sonata\\MediaBundle\\Model\\Media',
512
            'Sonata\\MediaBundle\\Model\\MediaInterface',
513
            'Sonata\\MediaBundle\\Model\\MediaManagerInterface',
514
            'Sonata\\MediaBundle\\Provider\\BaseProvider',
515
            'Sonata\\MediaBundle\\Provider\\BaseVideoProvider',
516
            'Sonata\\MediaBundle\\Provider\\DailyMotionProvider',
517
            'Sonata\\MediaBundle\\Provider\\FileProvider',
518
            'Sonata\\MediaBundle\\Provider\\ImageProvider',
519
            'Sonata\\MediaBundle\\Provider\\MediaProviderInterface',
520
            'Sonata\\MediaBundle\\Provider\\Pool',
521
            'Sonata\\MediaBundle\\Provider\\VimeoProvider',
522
            'Sonata\\MediaBundle\\Provider\\YouTubeProvider',
523
            'Sonata\\MediaBundle\\Resizer\\ResizerInterface',
524
            'Sonata\\MediaBundle\\Resizer\\SimpleResizer',
525
            'Sonata\\MediaBundle\\Resizer\\SquareResizer',
526
            'Sonata\\MediaBundle\\Security\\DownloadStrategyInterface',
527
            'Sonata\\MediaBundle\\Security\\ForbiddenDownloadStrategy',
528
            'Sonata\\MediaBundle\\Security\\PublicDownloadStrategy',
529
            'Sonata\\MediaBundle\\Security\\RolesDownloadStrategy',
530
            'Sonata\\MediaBundle\\Security\\SessionDownloadStrategy',
531
            'Sonata\\MediaBundle\\Templating\\Helper\\MediaHelper',
532
            'Sonata\\MediaBundle\\Thumbnail\\ConsumerThumbnail',
533
            'Sonata\\MediaBundle\\Thumbnail\\FormatThumbnail',
534
            'Sonata\\MediaBundle\\Thumbnail\\ThumbnailInterface',
535
            'Sonata\\MediaBundle\\Twig\\Extension\\MediaExtension',
536
            'Sonata\\MediaBundle\\Twig\\Node\\MediaNode',
537
            'Sonata\\MediaBundle\\Twig\\Node\\PathNode',
538
            'Sonata\\MediaBundle\\Twig\\Node\\ThumbnailNode',
539
        ));
540
    }
541
}
542