Completed
Push — master ( 285b1b...2fc430 )
by
unknown
26:57
created

MediaMonksSonataMediaExtension::load()   C

Complexity

Conditions 8
Paths 13

Size

Total Lines 67
Code Lines 43

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 44
CRAP Score 8

Importance

Changes 0
Metric Value
dl 0
loc 67
ccs 44
cts 44
cp 1
rs 6.6523
c 0
b 0
f 0
cc 8
eloc 43
nc 13
nop 2
crap 8

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 4
    public function load(array $configs, ContainerBuilder $container)
20
    {
21 4
        $config = $this->processConfiguration(new Configuration(), $configs);
22 4
        $container->setParameter('mediamonks.sonata_media.config', $config);
23
24 4
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
25 4
        $loader->load('services.yml');
26
27 4
        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 3
        $container->setAlias('mediamonks.sonata_media.filesystem.private', $config['filesystem_private']);
32 3
        $container->setAlias('mediamonks.sonata_media.filesystem.public', $config['filesystem_public']);
33
34 3
        if (!empty($config['model_class'])) {
35 1
            $container->getDefinition('mediamonks.sonata_media.admin.media')->replaceArgument(
36 1
                1,
37 1
                $config['model_class']
38
            );
39 1
            $container->setParameter('mediamonks.sonata_media.entity.class', $config['model_class']);
40
        }
41
42 3
        $container->getDefinition('mediamonks.sonata_media.glide.server')
43 3
            ->replaceArgument(
44 3
                0,
45 3
                array_merge(
46 3
                    $config['glide'],
47
                    [
48 3
                        'source' => new Reference($config['filesystem_private']),
49 3
                        'cache' => new Reference($config['filesystem_public']),
50
                    ]
51
                )
52
            );
53
54 3
        $container->getDefinition('mediamonks.sonata_media.provider.file')
55 3
            ->replaceArgument(0, $config['file_constraints']);
56
57 3
        $providerPool = $container->getDefinition('mediamonks.sonata_media.provider.pool');
58 3
        foreach ($config['providers'] as $provider) {
59 3
            $providerPool->addMethodCall('addProvider', [new Reference($provider)]);
60
        }
61
62 3
        $container->getDefinition('mediamonks.sonata_media.utility.image')
63 3
            ->replaceArgument(2, $config['redirect_url'])
64 3
            ->replaceArgument(3, $config['redirect_cache_ttl']);
65
66 3
        $container->getDefinition('mediamonks.sonata_media.utility.download')
67 3
            ->replaceArgument(1, new Reference($config['filesystem_private']));
68
69 3
        $container->getDefinition('mediamonks.sonata_media.generator.image')
70 3
            ->replaceArgument(2, $config['default_image_parameters'])
71 3
            ->replaceArgument(3, $config['fallback_image'])
72 3
            ->replaceArgument(4, $config['tmp_path'])
73 3
            ->replaceArgument(5, $config['tmp_prefix']);
74
75 3
        $formResource = $config['templates']['form'];
76 3
        $twigFormResourceParameterId = 'twig.form.resources';
77 3
        if ($container->hasParameter($twigFormResourceParameterId)) {
78 1
            $twigFormResources = $container->getParameter($twigFormResourceParameterId);
79 1
            if (!empty($formResource) && !in_array($formResource, $twigFormResources)) {
80 1
                $twigFormResources[] = $formResource;
81
            }
82
83 1
            $container->setParameter($twigFormResourceParameterId, $twigFormResources);
84
        }
85 3
    }
86
87
    /**
88
     * @return string
89
     */
90 4
    public function getAlias()
91
    {
92 4
        return MediaMonksSonataMediaBundle::BUNDLE_CONFIG_NAME;
93
    }
94
}
95