AttributeDefinitionsProvider   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 0
dl 0
loc 56
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
C getAttributeDefinitions() 0 25 7
1
<?php
2
3
namespace Kuleuven\AuthenticationBundle\Service;
4
5
class AttributeDefinitionsProvider implements AttributeDefinitionsProviderInterface
6
{
7
    /**
8
     * @var array
9
     */
10
    protected $attributeDefinitions;
11
12
    /**
13
     * @var array
14
     */
15
    protected $kuleuvenAttributeDefinitions;
16
17
    /**
18
     * @var array
19
     */
20
    protected $attributeDefinitionsCache;
21
22
    /**
23
     * @param array $attributeDefinitions
24
     * @param array $kuleuvenAttributeDefinitions
25
     */
26
    public function __construct($attributeDefinitions, array $kuleuvenAttributeDefinitions = [])
27
    {
28
        $this->attributeDefinitions = $attributeDefinitions;
29
        $this->kuleuvenAttributeDefinitions = $kuleuvenAttributeDefinitions;
30
    }
31
32
    /**
33
     * @return array
34
     */
35
    public function getAttributeDefinitions()
36
    {
37
        if (empty($this->attributeDefinitionsCache)) {
38
            $attributeDefinitions = $this->kuleuvenAttributeDefinitions;
39
40
            foreach ($this->attributeDefinitions as $attributeDefinition) {
41
                $id = $attributeDefinition['id'];
42
                $aliases = isset($attributeDefinition['aliases']) ? $attributeDefinition['aliases'] : [];
43
                if (isset($attributeDefinitions[$id])) {
44
                    // Remove already present aliases
45
                    foreach ($attributeDefinitions['aliases'] as $alias) {
46
                        unset($attributeDefinitions[$alias]);
47
                    }
48
                }
49
                $attributeDefinitions[$id] = $attributeDefinition;
50
                foreach ($aliases as $alias) {
51
                    $attributeDefinitions[$alias] =& $attributeDefinitions[$id];
52
                }
53
            }
54
55
            $this->attributeDefinitionsCache = $attributeDefinitions;
56
        }
57
58
        return $this->attributeDefinitionsCache;
59
    }
60
}
61