MediaMonksSonataMediaExtension::load()   B
last analyzed

Complexity

Conditions 7
Paths 7

Size

Total Lines 71

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 47
CRAP Score 7

Importance

Changes 0
Metric Value
dl 0
loc 71
ccs 47
cts 47
cp 1
rs 7.6993
c 0
b 0
f 0
cc 7
nc 7
nop 2
crap 7

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 League\Glide\Server;
6
use MediaMonks\SonataMediaBundle\Admin\MediaAdmin;
7
use MediaMonks\SonataMediaBundle\Generator\ImageGenerator;
8
use MediaMonks\SonataMediaBundle\MediaMonksSonataMediaBundle;
9
use MediaMonks\SonataMediaBundle\Provider\FileProvider;
10
use MediaMonks\SonataMediaBundle\Provider\ProviderPool;
11
use MediaMonks\SonataMediaBundle\Utility\DownloadUtility;
12
use MediaMonks\SonataMediaBundle\Utility\ImageUtility;
13
use Symfony\Component\DependencyInjection\ContainerBuilder;
14
use Symfony\Component\Config\FileLocator;
15
use Symfony\Component\DependencyInjection\Reference;
16
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
17
use Symfony\Component\DependencyInjection\Loader;
18
19
class MediaMonksSonataMediaExtension extends Extension
20
{
21
    /**
22
     * @param array $configs
23
     * @param ContainerBuilder $container
24
     * @throws \Exception
25
     */
26 2
    public function load(array $configs, ContainerBuilder $container)
27
    {
28 2
        $config = $this->processConfiguration(new Configuration(), $configs);
29 2
        $container->setParameter('mediamonks.sonata_media.config', $config);
30
31 2
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
32 2
        $loader->load('services.yml');
33
34 2
        if (empty($config['filesystem_private']) || empty($config['filesystem_public'])) {
35 1
            throw new \Exception('Both a private and a public filesystem must be set');
36
        }
37
38 1
        $container->setAlias('mediamonks.sonata_media.filesystem.private', $config['filesystem_private']);
39 1
        $container->setAlias('mediamonks.sonata_media.filesystem.public', $config['filesystem_public']);
40
41 1
        $container->getDefinition(MediaAdmin::class)
42 1
            ->setClass($config['admin_class'])
43 1
            ->setArgument(0, null)
44 1
            ->setArgument(1, $config['model_class'])
45 1
            ->setArgument(2, $config['controller_class'])
46
        ;
47
48 1
        $container->setParameter('mediamonks.sonata_media.entity.class', $config['model_class']);
49
50 1
        $container->getDefinition(Server::class)
51 1
            ->setArgument(
52 1
                0,
53 1
                array_merge(
54 1
                    $config['glide'],
55
                    [
56 1
                        'source' => new Reference($config['filesystem_private']),
57 1
                        'cache' => new Reference($config['filesystem_public']),
58
                    ]
59
                )
60
            );
61
62 1
        $container->getDefinition(FileProvider::class)
63 1
            ->setArgument(0, $config['file_constraints']);
64
65 1
        $providerPool = $container->getDefinition(ProviderPool::class);
66 1
        foreach ($config['providers'] as $provider) {
67 1
            $providerPool->addMethodCall('addProvider', [new Reference($provider)]);
68
        }
69
70 1
        $container->getDefinition(ImageUtility::class)
71 1
            ->setArgument(2, $config['redirect_url'])
72 1
            ->setArgument(3, $config['redirect_cache_ttl']);
73
74 1
        $container->getDefinition(DownloadUtility::class)
75 1
            ->setArgument(1, new Reference($config['filesystem_private']));
76
77 1
        $container->getDefinition(ImageGenerator::class)
78 1
            ->setArgument(2, $config['default_image_parameters'])
79 1
            ->setArgument(3, $config['fallback_image'])
80 1
            ->setArgument(4, $config['tmp_path'])
81 1
            ->setArgument(5, $config['tmp_prefix']);
82
83 1
        $formResource = $config['templates']['form'];
84 1
        $twigFormResourceParameterId = 'twig.form.resources';
85 1
        if ($container->hasParameter($twigFormResourceParameterId)) {
86 1
            $twigFormResources = $container->getParameter($twigFormResourceParameterId);
87 1
            if (!empty($formResource) && !in_array($formResource, $twigFormResources)) {
88 1
                $twigFormResources[] = $formResource;
89
            }
90
91 1
            $container->setParameter($twigFormResourceParameterId, $twigFormResources);
92
        }
93
94 1
        $container->setParameter('mediamonks.sonata_media.default_route.image', $config['route_image']);
95 1
        $container->setParameter('mediamonks.sonata_media.default_route.download', $config['route_download']);
96 1
    }
97
98
    /**
99
     * @return string
100
     */
101 2
    public function getAlias()
102
    {
103 2
        return MediaMonksSonataMediaBundle::BUNDLE_CONFIG_NAME;
104
    }
105
}
106