ConfirmationPass::process()   B
last analyzed

Complexity

Conditions 6
Paths 9

Size

Total Lines 32
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 1
Metric Value
c 3
b 0
f 1
dl 0
loc 32
rs 8.439
cc 6
eloc 19
nc 9
nop 1
1
<?php
2
3
namespace DoS\UserBundle\DependencyInjection\Compiler;
4
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Reference;
8
9
class ConfirmationPass implements CompilerPassInterface
10
{
11
    public function process(ContainerBuilder $container)
12
    {
13
        if (!$container->has('dos.user.confirmation.factory')) {
14
            return;
15
        }
16
17
        $definition = $container->findDefinition('dos.user.confirmation.factory');
18
        $taggedServices = $container->findTaggedServiceIds('dos.user.confirmation');
19
        $defaultOptions = $container->getParameter('dos.user.confirmation');
20
21
        foreach ($taggedServices as $id => $tags) {
22
            foreach ($tags as $attributes) {
23
                $def = new Reference($id);
24
                $alias = $attributes['alias'];
25
                $definition->addMethodCall('add', array($def));
26
27
                if (array_key_exists($alias, $defaultOptions['types'])) {
28
                    $container
29
                        ->findDefinition($id)
30
                        ->addMethodCall('resetOptions', array($defaultOptions['types'][$alias]))
31
                    ;
32
                }
33
            }
34
        }
35
36
        if ($container->hasParameter('dos.user.confirmation.actived')) {
37
            $definition->addMethodCall(
38
                'setActivedService',
39
                array($container->getParameter('dos.user.confirmation.actived'))
40
            );
41
        }
42
    }
43
}
44