NewsSubscriber::onNewMember()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 0
cts 3
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Subscriber\Project;
4
5
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
6
7
use App\Event\Project\{
8
    NewCommunityEvent,
9
    NewMemberEvent,
10
    NewReleaseEvent,
11
    NewRepositoryEvent
12
};
13
14
use App\Manager\Project\NewsManager;
15
16
use App\Entity\Project\News;
17
18
class NewsSubscriber implements EventSubscriberInterface
19
{
20
    /** @var NewsManager **/
21
    protected $newsManager;
22
    
23
    public function __construct(NewsManager $newsManager)
24
    {
25
        $this->newsManager = $newsManager;
26
    }
27
    
28 1
    public static function getSubscribedEvents(): array
29
    {
30
        return [
31 1
            NewCommunityEvent::NAME => 'onNewCommunity',
32
            NewMemberEvent::NAME => 'onNewMember',
33
            NewReleaseEvent::NAME => 'onNewRelease',
34
            NewRepositoryEvent::NAME => 'onNewRepository',
35
        ];
36
    }
37
    
38
    public function onNewCommunity(NewCommunityEvent $event)
39
    {
40
        $this->newsManager->create($event->getProject(), News::CATEGORY_NEW_COMMUNITY, [
41
            '%name%' => $event->getCommunity()->getName()
42
        ]);
43
    }
44
    
45
    public function onNewMember(NewMemberEvent $event)
46
    {
47
        $this->newsManager->create($event->getProject(), News::CATEGORY_NEW_MEMBER, [
48
            '%username%' => $event->getUser()->getUsername()
49
        ]);
50
    }
51
    
52
    public function onNewRelease(NewReleaseEvent $event)
53
    {
54
        $this->newsManager->create($event->getProject(), News::CATEGORY_NEW_RELEASE, [
55
            '%version%' => $event->getVersion()
56
        ]);
57
    }
58
    
59
    public function onNewRepository(NewRepositoryEvent $event)
60
    {
61
        $this->newsManager->create($event->getProject(), News::CATEGORY_NEW_REPOSITORY, [
62
            '%name%' => $event->getRepository()->getName()
63
        ]);
64
    }
65
}