ListBadgesEvent::registerBadges()   A
last analyzed

Complexity

Conditions 4
Paths 3

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
cc 4
eloc 9
nc 3
nop 1
dl 0
loc 15
ccs 0
cts 9
cp 0
crap 20
rs 9.9666
c 0
b 0
f 0
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