Completed
Push — master ( db8ff8...4137d9 )
by dan
01:59
created

BaseMessageAdapter::setConfiguration()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace IrishDan\NotificationBundle\Adapter;
4
5
use IrishDan\NotificationBundle\Exception\MessageFormatException;
6
use IrishDan\NotificationBundle\Message\Message;
7
use IrishDan\NotificationBundle\Notification\NotificationInterface;
8
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
9
10
/**
11
 * Class BaseMessageAdapter
12
 *
13
 * @package IrishDan\NotificationBundle\Adapter
14
 */
15
abstract class BaseMessageAdapter
16
{
17
    protected $twig;
18
    protected $eventDispatcher;
19
    protected $configuration = [];
20
    protected $channelName;
21
22
    /**
23
     * @param \Twig_Environment $twig
24
     */
25
    public function setTemplating(\Twig_Environment $twig)
26
    {
27
        $this->twig = $twig;
28
    }
29
30
    /**
31
     * @param EventDispatcherInterface $eventDispatcher
32
     */
33
    public function setDispatcher(EventDispatcherInterface $eventDispatcher)
34
    {
35
        $this->eventDispatcher = $eventDispatcher;
36
    }
37
38
    /**
39
     * @param $data
40
     * @param $user
41
     * @param $template
42
     * @return mixed
43
     */
44
    protected function renderTwigTemplate($data, $user, $template)
45
    {
46
        return $this->twig->render(
47
            $template,
48
            [
49
                'data' => $data,
50
                'user' => $user,
51
            ]
52
        );
53
    }
54
55
    /**
56
     * @param NotificationInterface $notification
57
     */
58
    public function format(NotificationInterface $notification)
59
    {
60
        $notification->setChannel($this->channelName);
61
62
        $templateArray = $notification->getTemplateArray();
63
        if (!empty($this->twig) && !empty($templateArray)) {
64
            $data = $notification->getDataArray();
65
66
            if ($notification->getUuid()) {
67
                $data['uuid'] = $notification->getUuid();
68
            }
69
70
            foreach ($templateArray as $key => $template) {
71
                // Find out if the template exists before trying to render it.
72
                $exists = $this->twig->getLoader()->exists($template);
73
                if (!empty($data[$key]) && $exists) {
74
75
                    $data[$key] = $this->renderTwigTemplate(
76
                        $data,
77
                        $notification->getNotifiable(),
78
                        $template
79
                    );
80
                }
81
            }
82
83
            $notification->setDataArray($data);
84
        }
85
    }
86
87
    /**
88
     * @param        $dispatchData
89
     * @param        $messageData
90
     * @param string $channel
91
     * @return Message
92
     */
93
    protected static function createMessage($dispatchData, $messageData, $channel = 'default')
94
    {
95
        $message = new Message();
96
97
        $message->setChannel($channel);
98
        $message->setDispatchData($dispatchData);
99
        $message->setMessageData($messageData);
100
101
        return $message;
102
    }
103
104
    /**
105
     * @param array $notificationData
106
     * @return array
107
     */
108
    protected static function createMessagaData(array $notificationData)
109
    {
110
        // Build the message data array.
111
        $messageData = [];
112
        $messageData['body'] = empty($notificationData['body']) ? '' : $notificationData['body'];
113
        $messageData['title'] = empty($notificationData['title']) ? '' : $notificationData['title'];
114
        $messageData['uuid'] = empty($notificationData['uuid']) ? '' : $notificationData['uuid'];
115
116
        return $messageData;
117
    }
118
119
    /**
120
     * @param $shouldImplement
121
     * @param $type
122
     * @throws MessageFormatException
123
     */
124
    protected static function createFormatterException($shouldImplement, $type)
125
    {
126
        $message = sprintf('Notifiable must implement %s interface in order to format as a %s message', $shouldImplement, $type);
127
        throw new MessageFormatException(
128
            $message
129
        );
130
    }
131
132
    /**
133
     * @param array $configuration
134
     */
135
    public function setConfiguration(array $configuration)
136
    {
137
        $this->configuration = $configuration;
138
    }
139
140
    /**
141
     * @param mixed $channeName
0 ignored issues
show
Documentation introduced by
There is no parameter named $channeName. Did you maybe mean $channelName?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. It has, however, found a similar but not annotated parameter which might be a good fit.

Consider the following example. The parameter $ireland is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $ireland
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was changed, but the annotation was not.

Loading history...
142
     */
143
    public function setChannelName($channelName)
144
    {
145
        $this->channelName = $channelName;
146
    }
147
}