Completed
Push — master ( 73ebab...d9bece )
by Andrea
63:43 queued 61:37
created

TablePrefixSubscriber::loadClassMetadata()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 5.025

Importance

Changes 0
Metric Value
dl 0
loc 17
ccs 9
cts 10
cp 0.9
rs 8.8571
c 0
b 0
f 0
cc 5
eloc 9
nc 4
nop 1
crap 5.025
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 30
    public function __construct($prefix)
12
    {
13 30
        $this->prefix = (string) $prefix;
14 30
    }
15
16 30
    public function getSubscribedEvents()
17
    {
18 30
        return array('loadClassMetadata');
19
    }
20
21 25
    public function loadClassMetadata(LoadClassMetadataEventArgs $args)
22
    {
23 25
        $classMetadata = $args->getClassMetadata();
24
25 25
        if (false !== strpos($classMetadata->namespace, 'Fi\CoreBundle')) {
26 25
            $classMetadata->setPrimaryTable(array('name' => $this->prefix.$classMetadata->getTableName()));
27
28 25
            foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
29 23
                if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::MANY_TO_MANY
30 23
                    && isset($classMetadata->associationMappings[$fieldName]['joinTable']['name'])
31
                ) {
32
                    $mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
33 23
                    $classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix.$mappedTableName;
34
                }
35
            }
36
        }
37 25
    }
38
}
39