ListBadgesEvent   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 35
ccs 0
cts 14
cp 0
rs 10
c 0
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getBadges() 0 3 1
A __construct() 0 3 1
A registerBadges() 0 15 4
1
<?php
2
3
namespace LoginCidadao\BadgesControlBundle\Event;
4
5
use Symfony\Component\EventDispatcher\Event;
6
use LoginCidadao\BadgesControlBundle\Model\BadgeEvaluatorInterface;
7
use LoginCidadao\BadgesControlBundle\Exception\BadgesNameCollisionException;
8
9
class ListBadgesEvent extends Event
10
{
11
    protected $badges;
12
13
    public function __construct()
14
    {
15
        $this->badges = array();
16
    }
17
18
    /**
19
     *
20
     * @param BadgeEvaluatorInterface $evaluator
21
     * @return ListBadgesEvent
22
     * @throws BadgesNameCollisionException
23
     */
24
    public function registerBadges(BadgeEvaluatorInterface $evaluator)
25
    {
26
        $namespace = $evaluator->getName();
27
        if (!array_key_exists($namespace, $this->badges)) {
28
            $this->badges[$namespace] = $evaluator->getAvailableBadges();
29
        } else {
30
            foreach ($evaluator->getAvailableBadges() as $name => $badge) {
31
                if (array_key_exists($name, $this->badges[$namespace])) {
32
                    throw new BadgesNameCollisionException("There is another badge named '{$namespace}.{$name}'.");
33
                }
34
                $this->badges[$namespace][$name] = $badge;
35
            }
36
        }
37
38
        return $this;
39
    }
40
41
    public function getBadges()
42
    {
43
        return $this->badges;
44
    }
45
}
46