Completed
Push — master ( f6195b...50e7ab )
by Ross
28:37 queued 22:20
created

DoctrineMiddlewarePass   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 94.12%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
c 1
b 0
f 0
lcom 0
cbo 3
dl 0
loc 33
ccs 16
cts 17
cp 0.9412
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B process() 0 27 5
1
<?php
2
namespace League\Tactician\Bundle\DependencyInjection\Compiler;
3
4
use League\Tactician\Doctrine\ORM\TransactionMiddleware;
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Definition;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
/**
11
 * This compiler pass registers doctrine entity manager middleware
12
 */
13
class DoctrineMiddlewarePass implements CompilerPassInterface
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18 68
    public function process(ContainerBuilder $container)
19
    {
20 68
        if (!class_exists(TransactionMiddleware::class) || !$container->hasParameter('doctrine.entity_managers')) {
21 66
            return;
22
        }
23
24 2
        $entityManagers = $container->getParameter('doctrine.entity_managers');
25 2
        if (empty($entityManagers)) {
26
            return;
27
        }
28
29 2
        foreach ($entityManagers as $name => $serviceId) {
30 2
            $container->setDefinition(
31 2
                sprintf('tactician.middleware.doctrine.%s', $name),
32 2
                new Definition(TransactionMiddleware::class, [ new Reference($serviceId) ])
33
            );
34
35 2
            $container->setDefinition(
36 2
                sprintf('tactician.middleware.doctrine_rollback_only.%s', $name),
37 2
                new Definition(RollbackOnlyTransactionMiddleware::class, [ new Reference($serviceId) ])
38
            );
39
        }
40
41 2
        $defaultEntityManager = $container->getParameter('doctrine.default_entity_manager');
42 2
        $container->setAlias('tactician.middleware.doctrine', sprintf('tactician.middleware.doctrine.%s', $defaultEntityManager));
43 2
        $container->setAlias('tactician.middleware.doctrine_rollback_only', sprintf('tactician.middleware.doctrine.%s', $defaultEntityManager));
44 2
    }
45
}
46
47