Completed
Push — master ( cce6f7...7cd9c2 )
by dan
20:28
created

MessageCRUDSubscriber::log()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 2
1
<?php
2
3
namespace IrishDan\NotificationBundle\EventListener;
4
5
use IrishDan\NotificationBundle\Channel\EventChannel;
6
use IrishDan\NotificationBundle\Event\MessageCreatedEvent;
7
use IrishDan\NotificationBundle\Event\MessageDispatchedEvent;
8
use Psr\Log\LoggerInterface;
9
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
10
11
/**
12
 * Class MessageCRUDSubscriber
13
 *
14
 * @package IrishDan\NotificationBundle\EventListener
15
 */
16
class MessageCRUDSubscriber implements EventSubscriberInterface
17
{
18
    /**
19
     * @var EventChannel
20
     */
21
    protected $eventChannel;
22
    /**
23
     * @var LoggerInterface
24
     */
25
    protected $logger;
26
27
    /**
28
     * MessageCRUDSubscriber constructor.
29
     *
30
     * @param EventChannel $eventChannel
31
     */
32
    public function __construct(EventChannel $eventChannel, LoggerInterface $logger = null)
33
    {
34
        $this->eventChannel = $eventChannel;
35
        $this->logger = $logger;
36
    }
37
38
    /**
39
     * @param MessageCreatedEvent $event
40
     */
41
    public function onMessageCreated(MessageCreatedEvent $event)
42
    {
43
        $message = $event->getMessage();
44
        $this->eventChannel->dispatch($message);
45
46
        $this->log('Notification message "%s" created for "%s" via "%s" channel', $message);
47
    }
48
49
    public function onMessageDispatched(MessageDispatchedEvent $event)
50
    {
51
        $message = $event->getMessage();
52
53
        $this->log('Notification message "%s" dispatched to "%s" via "%s" channel', $message);
54
    }
55
56
    /**
57
     * @return array
58
     */
59
    public static function getSubscribedEvents()
60
    {
61
        return [
62
            MessageCreatedEvent::NAME => 'onMessageCreated',
63
            MessageDispatchedEvent::NAME => 'onMessageDispatched',
64
        ];
65
    }
66
67
    protected function log($string, $message)
68
    {
69
        if ($this->logger) {
70
            $log = sprintf($string, $message->getTitle(), $message->getRecipient(), $message->getChannel());
71
            $this->logger->info($log);
72
        }
73
    }
74
}
75