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

defineDecodeControllerParametersSubscriber()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 27
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 17
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 27
rs 9.7
ccs 0
cts 0
cp 0
crap 6
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