MeupTagcommanderExtension::loadDataLayer()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 17
ccs 12
cts 12
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 11
nc 1
nop 2
crap 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
     * 
71
     * @return Definition
72
     */
73 1
    private function buildTwigExtension(array $config)
74
    {
75 1
        $twig_extension = new Definition(
76 1
            'Meup\Bundle\TagcommanderBundle\Twig\TagcommanderExtension',
77
            array(
78 1
                new Reference('meup_tagcommander.datalayer'),
79 1
                new Reference('event_dispatcher'),
80 1
                $config['datalayer']['name']
81 1
            )
82 1
        );
83 1
        $twig_extension->addTag('twig.extension');
84 1
        $twig_extension->setPublic(false);
85
86 1
        return $twig_extension;
87
    }
88
89
    /**
90
     * @param Array $config
91
     * @param ContainerBuilder $container
92
     * 
93
     * @return self
94
     */
95 1
    protected function loadTwigExtension(array $config, ContainerBuilder $container)
96
    {
97 1
        $twig_extension = $this->buildTwigExtension($config);
98
99 1
        foreach ($config['containers'] as $tc_container) {
100 1
            $twig_extension->addMethodCall('addContainer', array($tc_container));
101 1
        }
102 1
        foreach ($config['events'] as $tc_event) {
103 1
            $twig_extension->addMethodCall('addEvent', array($tc_event, $tc_event['name']==$config['default_event']));
104 1
        }
105
106 1
        $container->setDefinition(
107 1
            'meup_tagcommander.twig_extension',
108
            $twig_extension
109 1
        );
110
111 1
        return $this;
112
    }
113
114
    /**
115
     * Setting up the datalayer collector for the toolbar
116
     *
117
     * @param ContainerBuilder $container
118
     * 
119
     * @return self
120
     */
121 1
    protected function loadCollector(ContainerBuilder $container)
122
    {
123 1
        $datacollector = new Definition(
124 1
            'Meup\Bundle\TagcommanderBundle\DataCollector\DataLayerCollector',
125 1
            array(new Reference('meup_tagcommander.datalayer'))
126 1
        );
127
        $datacollector
128 1
            ->addTag(
129 1
                'data_collector',
130
                array(
131 1
                    'template' => 'MeupTagcommanderBundle:Collector:datalayer.html.twig',
132 1
                    'id'       => 'datalayer',
133
                )
134 1
            )
135
        ;
136 1
        $datacollector->setPublic(false);
137 1
        $container->setDefinition(
138 1
            'meup_tagcommander.datacollector',
139
            $datacollector
140 1
        );
141
142 1
        return $this;
143
    }
144
145 1
    private function loadSubscriber(ContainerBuilder $container)
146
    {
147 1
        $subscriber = new Definition(
148 1
            'Meup\Bundle\TagcommanderBundle\EventDispatcher\Subscriber\CollectorSubscriber',
149 1
            array(new Reference('meup_tagcommander.datacollector'))
150 1
        );
151 1
        $subscriber->setPublic(false);
152 1
        $container->setDefinition('meup_tagcommander.datacollector_subscriber', $subscriber);
153
154 1
        return $this;
155
    }
156
}
157