Completed
Push — master ( 2ff726...1b8ace )
by Andrea
09:31
created

TablePrefixSubscriber   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 84.21%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 32
ccs 16
cts 19
cp 0.8421
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getSubscribedEvents() 0 4 1
B loadClassMetadata() 0 17 5
1
<?php
2
3
namespace Fi\CoreBundle\Subscriber;
4
5
use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
6
7
class TablePrefixSubscriber implements \Doctrine\Common\EventSubscriber
8
{
9
    protected $prefix = '';
10
11 41
    public function __construct($prefix)
12
    {
13 41
        $this->prefix = (string) $prefix;
14 41
    }
15
16 41
    public function getSubscribedEvents()
17
    {
18 41
        return array('loadClassMetadata');
19
    }
20
21 35
    public function loadClassMetadata(LoadClassMetadataEventArgs $args)
22
    {
23 35
        $classMetadata = $args->getClassMetadata();
24
25 35
        if (false !== strpos($classMetadata->namespace, 'Fi\CoreBundle')) {
26 35
            $classMetadata->setPrimaryTable(array('name' => $this->prefix.$classMetadata->getTableName()));
27
28 35
            foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
29 33
                if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::MANY_TO_MANY
30 33
                    && isset($classMetadata->associationMappings[$fieldName]['joinTable']['name'])
31 33
                ) {
32
                    $mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
33
                    $classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix.$mappedTableName;
34
                }
35 35
            }
36 35
        }
37 35
    }
38
}
39