Completed
Pull Request — master (#6)
by methylbro
02:55
created

MeupTagcommanderExtension   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 123
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 13
Bugs 2 Features 0
Metric Value
wmc 7
c 13
b 2
f 0
lcom 1
cbo 5
dl 0
loc 123
ccs 65
cts 65
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A load() 0 14 1
A loadDataLayer() 0 17 1
B loadTwigExtension() 0 27 3
A loadCollector() 0 23 1
A loadSubscriber() 0 11 1
1
<?php
2
3
/**
4
* This file is part of the Meup TagCommander Bundle.
5
*
6
* (c) 1001pharmacies <http://github.com/1001pharmacies/tagcommander-bundle>
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 Meup\Bundle\TagcommanderBundle\DependencyInjection;
13
14
use Symfony\Component\DependencyInjection\ContainerBuilder;
15
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
16
use Symfony\Component\DependencyInjection\Reference;
17
use Symfony\Component\DependencyInjection\Definition;
18
19
/**
20
 * 
21
 */
22
class MeupTagcommanderExtension extends Extension
23
{
24
    /**
25
     * {@inheritDoc}
26
     */
27 1
    public function load(array $configs, ContainerBuilder $container)
28
    {
29 1
        $config = $this->processConfiguration(
30 1
            new Configuration(),
31
            $configs
32 1
        );
33
34 1
        $this
35 1
            ->loadDataLayer($config, $container)
36 1
            ->loadTwigExtension($config, $container)
37 1
            ->loadCollector($container)
38 1
            ->loadSubscriber($container)
39
        ;
40 1
    }
41
42
    /**
43
     * Setting up datalayer
44
     *
45
     * @param Array $config
46
     * @param ContainerBuilder $container
47
     * 
48
     * @return self
49
     */
50 1
    protected function loadDataLayer(array $config, ContainerBuilder $container)
51
    {
52 1
        $datalayer = new Definition(
53 1
            'Symfony\Component\DependencyInjection\ParameterBag\ParameterBag',
54
            array(
55 1
                $config['datalayer']['default']
56 1
            )
57 1
        );
58 1
        $datalayer->setPublic(false);
59 1
        $container->setDefinition(
60 1
            'meup_tagcommander.datalayer',
61
            $datalayer
62 1
        );
63 1
        $container->setAlias('tc_datalayer', 'meup_tagcommander.datalayer');
64
65 1
        return $this;
66
    }
67
68
    /**
69
     * @param Array $config
70
     * @param ContainerBuilder $container
71
     * 
72
     * @return self
73
     */
74 1
    protected function loadTwigExtension(array $config, ContainerBuilder $container)
75
    {
76 1
        $twig_extension = new Definition(
77 1
            'Meup\Bundle\TagcommanderBundle\Twig\TagcommanderExtension',
78
            array(
79 1
                new Reference('meup_tagcommander.datalayer'),
80 1
                new Reference('event_dispatcher'),
81 1
                $config['datalayer']['name']
82 1
            )
83 1
        );
84 1
        $twig_extension->addTag('twig.extension');
85 1
        $twig_extension->setPublic(false);
86
87 1
        foreach ($config['containers'] as $tc_container) {
88 1
            $twig_extension->addMethodCall('addContainer', array($tc_container));
89 1
        }
90 1
        foreach ($config['events'] as $tc_event) {
91 1
            $twig_extension->addMethodCall('addEvent', array($tc_event, $tc_event['name']==$config['default_event']));
92 1
        }
93
94 1
        $container->setDefinition(
95 1
            'meup_tagcommander.twig_extension',
96
            $twig_extension
97 1
        );
98
99 1
        return $this;
100
    }
101
102
    /**
103
     * Setting up the datalayer collector for the toolbar
104
     *
105
     * @param ContainerBuilder $container
106
     * 
107
     * @return self
108
     */
109 1
    protected function loadCollector(ContainerBuilder $container)
110
    {
111 1
        $datacollector = new Definition(
112 1
            'Meup\Bundle\TagcommanderBundle\DataCollector\DataLayerCollector',
113 1
            array(new Reference('meup_tagcommander.datalayer'))
114 1
        );
115
        $datacollector
116 1
            ->addTag(
117 1
                'data_collector',
118
                array(
119 1
                    'template' => 'MeupTagcommanderBundle:Collector:datalayer.html.twig',
120 1
                    'id'       => 'datalayer',
121
                )
122 1
            )
123
        ;
124 1
        $datacollector->setPublic(false);
125 1
        $container->setDefinition(
126 1
            'meup_tagcommander.datacollector',
127
            $datacollector
128 1
        );
129
130 1
        return $this;
131
    }
132
133 1
    private function loadSubscriber(ContainerBuilder $container)
134
    {
135 1
        $subscriber = new Definition(
136 1
            'Meup\Bundle\TagcommanderBundle\EventDispatcher\Subscriber\CollectorSubscriber',
137 1
            array(new Reference('meup_tagcommander.datacollector'))
138 1
        );
139 1
        $subscriber->setPublic(false);
140 1
        $container->setDefinition('meup_tagcommander.datacollector_subscriber', $subscriber);
141
142 1
        return $this;
143
    }
144
}
145