Completed
Push — dev-master ( 710732...009af4 )
by Karol
03:53 queued 10s
created

EventSubscriberCompilerPass   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 26
c 1
b 0
f 0
dl 0
loc 45
rs 10
ccs 5
cts 5
cp 1
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A defineDecodeControllerParametersSubscriber() 0 27 2
A process() 0 12 2
1
<?php
2
3
namespace Pgs\HashIdBundle\DependencyInjection\Compiler;
4
5
use Pgs\HashIdBundle\EventSubscriber\DecodeControllerParametersSubscriber;
6
use Pgs\HashIdBundle\EventSubscriber\Sf34\DecodeControllerParametersSubscriber
7
    as Sf34DecodeControllerParametersSubscriber;
8
use Pgs\HashIdBundle\Service\DecodeControllerParameters;
9
use Pgs\HashIdBundle\Service\Sf34\DecodeControllerParameters as Sf34DecodeControllerParameters;
10
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
11 2
use Symfony\Component\DependencyInjection\ContainerBuilder;
12
use Symfony\Component\DependencyInjection\Definition;
13 2
use Symfony\Component\DependencyInjection\Reference;
14 1
use Symfony\Component\HttpKernel\Event\ControllerEvent;
15 1
16
class EventSubscriberCompilerPass implements CompilerPassInterface
17 1
{
18 1
    public function process(ContainerBuilder $container): void
19 1
    {
20 1
        $this->defineDecodeControllerParametersSubscriber($container);
21
22
        if ($container->hasDefinition('sensio_framework_extra.converter.listener')) {
23 2
            $paramConverterListener = $container->getDefinition('sensio_framework_extra.converter.listener');
24
            $paramConverterListener->clearTag('kernel.event_subscriber');
25
26
            $decodeControllerParameters = $container->getDefinition('pgs_hash_id.service.decode_controller_parameters');
27
            $decodeControllerParameters->addMethodCall(
28
                'setParamConverterListener',
29
                [new Reference('sensio_framework_extra.converter.listener')]
30
            );
31
        }
32
    }
33
34
    private function defineDecodeControllerParametersSubscriber(ContainerBuilder $container)
35
    {
36
        if (!class_exists(ControllerEvent::class)) {
37
            $eventSubscriberClass = Sf34DecodeControllerParametersSubscriber::class;
38
            $decodeControllerParametersClass = Sf34DecodeControllerParameters::class;
39
        } else {
40
            $eventSubscriberClass = DecodeControllerParametersSubscriber::class;
41
            $decodeControllerParametersClass = DecodeControllerParameters::class;
42
        }
43
        $decodeControllerParametersServiceDefinition = new Definition(
44
            $decodeControllerParametersClass,
45
            [
46
                new Reference('pgs_hash_id.parameters_processor.factory.decode'),
47
            ]
48
        );
49
        $decodeControllerParametersServiceDefinition->setPublic(false);
50
51
        $eventSubscriberDefinition = new Definition(
52
            $eventSubscriberClass,
53
            [
54
                new Reference('pgs_hash_id.service.decode_controller_parameters'),
55
            ]
56
        );
57
        $eventSubscriberDefinition->addTag('kernel.event_subscriber');
58
        $container->addDefinitions([
59
            'pgs_hash_id.service.decode_controller_parameters' => $decodeControllerParametersServiceDefinition,
60
            'pgs_hash_id.event_subscriber.decode_controller_parameters' => $eventSubscriberDefinition,
61
        ]);
62
    }
63
}
64