Completed
Push — master ( c5041c...dff1db )
by
unknown
27:23
created

MediaMonksSonataMediaExtension   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 88.68%

Importance

Changes 0
Metric Value
wmc 9
lcom 0
cbo 7
dl 0
loc 83
ccs 47
cts 53
cp 0.8868
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getAlias() 0 4 1
C load() 0 67 8
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\DependencyInjection;
4
5
use MediaMonks\SonataMediaBundle\MediaMonksSonataMediaBundle;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\Config\FileLocator;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
10
use Symfony\Component\DependencyInjection\Loader;
11
12
class MediaMonksSonataMediaExtension extends Extension
13
{
14
    /**
15
     * @param array $configs
16
     * @param ContainerBuilder $container
17
     * @throws \Exception
18
     */
19 3
    public function load(array $configs, ContainerBuilder $container)
20
    {
21 3
        $config = $this->processConfiguration(new Configuration(), $configs);
22 3
        $container->setParameter('mediamonks.sonata_media.config', $config);
23
24 3
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
25 3
        $loader->load('services.yml');
26
27 3
        if (empty($config['filesystem_private']) || empty($config['filesystem_public'])) {
28 1
            throw new \Exception('Both a private and a public filesystem must be set');
29
        }
30
31 2
        $container->setAlias('mediamonks.sonata_media.filesystem.private', $config['filesystem_private']);
32 2
        $container->setAlias('mediamonks.sonata_media.filesystem.public', $config['filesystem_public']);
33
34 2
        if (!empty($config['model_class'])) {
35 1
            $container->getDefinition('mediamonks.sonata_media.admin.media')->replaceArgument(
36 1
                1,
37 1
                $config['model_class']
38 1
            );
39 1
            $container->setParameter('mediamonks.sonata_media.entity.class', $config['model_class']);
40 1
        }
41
42 2
        $container->getDefinition('mediamonks.sonata_media.glide.server')
43 2
            ->replaceArgument(
44 2
                0,
45 2
                array_merge(
46 2
                    $config['glide'],
47
                    [
48 2
                        'source' => new Reference($config['filesystem_private']),
49 2
                        'cache' => new Reference($config['filesystem_public']),
50
                    ]
51 2
                )
52 2
            );
53
54 2
        $container->getDefinition('mediamonks.sonata_media.provider.file')
55 2
            ->replaceArgument(0, $config['file_constraints']);
56
57 2
        $providerPool = $container->getDefinition('mediamonks.sonata_media.provider.pool');
58 2
        foreach ($config['providers'] as $provider) {
59 2
            $providerPool->addMethodCall('addProvider', [new Reference($provider)]);
60 2
        }
61
62 2
        $container->getDefinition('mediamonks.sonata_media.utility.image')
63 2
            ->replaceArgument(2, $config['redirect_url'])
64 2
            ->replaceArgument(3, $config['redirect_cache_ttl']);
65
66 2
        $container->getDefinition('mediamonks.sonata_media.utility.download')
67 2
            ->replaceArgument(1, new Reference($config['filesystem_private']));
68
69 2
        $container->getDefinition('mediamonks.sonata_media.generator.image')
70 2
            ->replaceArgument(2, $config['default_image_parameters'])
71 2
            ->replaceArgument(3, $config['fallback_image'])
72 2
            ->replaceArgument(4, $config['tmp_path'])
73 2
            ->replaceArgument(5, $config['tmp_prefix']);
74
75 2
        $formResource = $config['templates']['form'];
76 2
        $twigFormResourceParameterId = 'twig.form.resources';
77 2
        if ($container->hasParameter($twigFormResourceParameterId)) {
78
            $twigFormResources = $container->getParameter($twigFormResourceParameterId);
79
            if (!empty($formResource) && !in_array($formResource, $twigFormResources)) {
80
                $twigFormResources[] = $formResource;
81
            }
82
83
            $container->setParameter($twigFormResourceParameterId, $twigFormResources);
84
        }
85 2
    }
86
87
    /**
88
     * @return string
89
     */
90 3
    public function getAlias()
91
    {
92 3
        return MediaMonksSonataMediaBundle::BUNDLE_CONFIG_NAME;
93
    }
94
}
95