Passed
Push — master ( 1feeb7...0bc89a )
by Mateusz
01:11
created

DefaultHeaders::addHeaders()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 6
nc 3
nop 2
crap 3
1
<?php
2
/**
3
 * MtMail - e-mail module for Zend Framework 2
4
 *
5
 * @link      http://github.com/mtymek/MtMail
6
 * @copyright Copyright (c) 2013-2014 Mateusz Tymek
7
 * @license   BSD 2-Clause
8
 */
9
10
namespace MtMail\ComposerPlugin;
11
12
use MtMail\Event\ComposerEvent;
13
use MtMail\Template\HeadersProviderInterface;
14
use Zend\EventManager\EventManagerInterface;
15
use Zend\EventManager\AbstractListenerAggregate;
16
use Zend\Mail\Header\HeaderInterface;
17
use Zend\Mail\Message;
18
19
class DefaultHeaders extends AbstractListenerAggregate implements PluginInterface
20
{
21
22
    /**
23
     * @var array
24
     */
25
    protected $headers = [];
26
27
    /**
28
     * @param ComposerEvent $event
29
     */
30 4
    public function injectDefaultHeaders(ComposerEvent $event)
31
    {
32 4
        $message = $event->getMessage();
33 4
        $this->addHeaders($message, $this->headers);
34
35 4
        if ($event->getTemplate() instanceof HeadersProviderInterface) {
36 2
            $this->addHeaders($message, $event->getTemplate()->getHeaders());
37
        }
38 4
    }
39
40
    /**
41
     * @param Message $message
42
     * @param HeaderInterface[]|string[] $headers
43
     */
44 4
    private function addHeaders(Message $message, $headers)
45
    {
46 4
        foreach ($headers as $header => $value) {
47 4
            if ($value instanceof HeaderInterface) {
48 2
                $message->getHeaders()->addHeader($value);
49
            } else {
50 4
                $message->getHeaders()->addHeaderLine($header, $value);
51
            }
52
        }
53 4
    }
54
55
    /**
56
     * Attach one or more listeners
57
     *
58
     * Implementors may add an optional $priority argument; the EventManager
59
     * implementation will pass this to the aggregate.
60
     *
61
     * @param EventManagerInterface $events
62
     *
63
     * @return void
64
     */
65 1
    public function attach(EventManagerInterface $events, $priority = 1)
66
    {
67 1
        $this->listeners[] = $events->attach(ComposerEvent::EVENT_HEADERS_PRE, [$this, 'injectDefaultHeaders']);
68 1
    }
69
70
    /**
71
     * @param  array $headers
72
     * @return self
73
     */
74 7
    public function setHeaders(array $headers)
75
    {
76 7
        $this->headers = $headers;
77
78 7
        return $this;
79
    }
80
81
    /**
82
     * @return string
83
     */
84 1
    public function getHeaders()
85
    {
86 1
        return $this->headers;
87
    }
88
}
89