ZichtUrlExtension::load()   F
last analyzed

Complexity

Conditions 15
Paths 2048

Size

Total Lines 56
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 29
CRAP Score 15.4005

Importance

Changes 6
Bugs 1 Features 0
Metric Value
cc 15
eloc 33
c 6
b 1
f 0
nc 2048
nop 2
dl 0
loc 56
ccs 29
cts 33
cp 0.8788
crap 15.4005
rs 1.7499

How to fix   Long Method    Complexity   

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
 * @author Gerard van Helden <[email protected]>
4
 * @copyright Zicht Online <http://zicht.nl>
5
 */
6
7
namespace Zicht\Bundle\UrlBundle\DependencyInjection;
8
9
use Symfony\Component\DependencyInjection\Alias;
10
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
11
use Symfony\Component\DependencyInjection\ContainerBuilder;
12
use Symfony\Component\Config\FileLocator;
13
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
14
use Symfony\Component\DependencyInjection\Reference;
15
16
/**
17
 * DI Extension for the URL services.
18
 */
19
class ZichtUrlExtension extends Extension
20
{
21
    /**
22
     * Responds to the twig configuration parameter.
23
     *
24
     * @param array            $configs
25
     * @param ContainerBuilder $container
26
     * @return void
27
     */
28 9
    public function load(array $configs, ContainerBuilder $container)
29
    {
30 9
        $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
31 9
        $loader->load('services.xml');
32
33 9
        $config = $this->processConfiguration(new Configuration(), $configs);
34
35 9
        if (!empty($config['unalias_subscriber'])) {
36
            // deprecation, remove in next major
37
            trigger_error("unalias_subscriber is no longer used. This has moved to form transformers.", E_USER_DEPRECATED);
38
        }
39
40
41 9
        if (isset($config['static_ref'])) {
42 9
            $container->getDefinition('zicht_url.static_refs')->addMethodCall('addAll', array($config['static_ref']));
43
        }
44 9
        if (!empty($config['aliasing']) && $config['aliasing']['enabled'] === true) {
45 1
            $this->loadAliasingConfig($container, $config['aliasing'], $loader);
46 1
            $container->setAlias('zicht_url.sitemap_provider', new Alias('zicht_url.alias_sitemap_provider'));
47
        } else {
48 8
            $container->setAlias('zicht_url.sitemap_provider', new Alias('zicht_url.provider'));
49
        }
50 9
        if (!empty($config['logging'])) {
51 1
            $loader->load('logging.xml');
52
        }
53 9
        if (!empty($config['admin'])) {
54 1
            $loader->load('admin.xml');
55
        }
56 9
        if (!empty($aliasingConfig) && $config['caching']['enabled'] === true) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $aliasingConfig seems to never exist and therefore empty should always be true.
Loading history...
57
            $loader->load('cache.xml');
58
            $subscriberDefinition = $container->getDefinition('zicht_url.cache_subscriber');
59
            $subscriberDefinition->replaceArgument(1, $config['caching']['entities']);
60
        }
61 9
        if (!empty($config['db_static_ref']) && $config['db_static_ref']['enabled'] === true) {
62 1
            $loader->load('db.xml');
63
        }
64
65 9
        if ($container->hasDefinition('zicht_url.aliasing')) {
66 1
            $container->getDefinition('zicht_url.twig_extension')->addArgument(new Reference('zicht_url.aliasing'));
67
        }
68
69 9
        if ($container->hasDefinition('zicht_url.mapper.html')) {
70 1
            $container->getDefinition('zicht_url.mapper.html')->addMethodCall('addAttributes', [$config['html_attributes']]);
71
        }
72
73 9
        if ($container->hasDefinition('zicht_url.listener.strict_public_url')) {
74 9
            $container->getDefinition('zicht_url.listener.strict_public_url')->replaceArgument(0, $config['strict_public_url']);
75
        }
76
77 9
        if ($container->hasDefinition('zicht_url.validator.contains_url_alias')) {
78 9
            $container->getDefinition('zicht_url.validator.contains_url_alias')->replaceArgument(1, $config['strict_public_url']);
79
        }
80
81 9
        $formResources = $container->getParameter('twig.form.resources');
82 9
        $formResources[]= 'ZichtUrlBundle::form_theme.html.twig';
83 9
        $container->setParameter('twig.form.resources', $formResources);
84 9
    }
85
86
    /**
87
     * Load the aliasing config.
88
     *
89
     * @param ContainerBuilder $container
90
     * @param array $aliasingConfig
91
     * @param XmlFileLoader $loader
92
     * @return void
93
     */
94 1
    protected function loadAliasingConfig(ContainerBuilder $container, $aliasingConfig, $loader)
95
    {
96 1
        $loader->load('aliasing.xml');
97
98 1
        $listenerDefinition = $container->getDefinition('zicht_url.aliasing_listener');
99 1
        if ($aliasingConfig['exclude_patterns']) {
100 1
            $listenerDefinition->addMethodCall('setExcludePatterns', array($aliasingConfig['exclude_patterns']));
101
        }
102
103 1
        $listenerDefinition->addMethodCall('setIsParamsEnabled', array($aliasingConfig['enable_params']));
104
105 1
        if ($aliasingConfig['automatic_entities']) {
106
            $automaticAliasDoctrineDefinition = $container->getDefinition('zicht_url.aliasing.doctrine.subscriber');
107
108
            foreach ($aliasingConfig['automatic_entities'] as $entityClass) {
109
                $automaticAliasDoctrineDefinition->addMethodCall('addEntityClass', array($entityClass));
110
            }
111
        }
112 1
    }
113
}
114