NewsSubscriber   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Test Coverage

Coverage 10%

Importance

Changes 0
Metric Value
dl 0
loc 45
ccs 2
cts 20
cp 0.1
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A onNewCommunity() 0 4 1
A onNewRelease() 0 4 1
A onNewRepository() 0 4 1
A getSubscribedEvents() 0 7 1
A __construct() 0 3 1
A onNewMember() 0 4 1
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
}