Mail::compose()   B
last analyzed

Complexity

Conditions 5
Paths 9

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 5

Importance

Changes 0
Metric Value
dl 0
loc 18
ccs 10
cts 10
cp 1
rs 8.8571
c 0
b 0
f 0
cc 5
eloc 11
nc 9
nop 3
crap 5
1
<?php
2
/**
3
 * MtMail - e-mail module for Zend Framework
4
 *
5
 * @link      http://github.com/mtymek/MtMail
6
 * @copyright Copyright (c) 2013-2017 Mateusz Tymek
7
 * @license   BSD 2-Clause
8
 */
9
10
namespace MtMail\Service;
11
12
use MtMail\Exception\InvalidArgumentException;
13
use MtMail\Template\SimpleHtml;
14
use Zend\Mail\Message;
15
use Zend\View\Model\ModelInterface;
16
use Zend\View\Model\ViewModel;
17
18
class Mail
19
{
20
21
    /**
22
     * @var Composer
23
     */
24
    protected $composer;
25
26
    /**
27
     * @var Sender
28
     */
29
    protected $sender;
30
31
    /**
32
     * @var TemplateManager
33
     */
34
    protected $templateManager;
35
36
    /**
37
     * Class constructor
38
     *
39
     * @param Composer        $composer
40
     * @param Sender          $sender
41
     * @param TemplateManager $templateManager
42
     */
43 5
    public function __construct(Composer $composer, Sender $sender, TemplateManager $templateManager)
44
    {
45 5
        $this->composer = $composer;
46 5
        $this->sender = $sender;
47 5
        $this->templateManager = $templateManager;
48 5
    }
49
50
    /**
51
     * Send e-mail - wrapper for Sender class
52
     *
53
     * @param Message $message
54
     */
55 1
    public function send(Message $message)
56
    {
57 1
        $this->sender->send($message);
58 1
    }
59
60
    /**
61
     * @param $template
62
     * @param  ModelInterface|array     $viewModel
63
     * @param  array                    $headers
64
     * @throws InvalidArgumentException
65
     * @return Message
66
     */
67 3
    public function compose(array $headers, $template, $viewModel = null)
68
    {
69 3
        if (is_array($viewModel)) {
70 1
            $viewModel = new ViewModel($viewModel);
71 2
        } elseif (null == $viewModel) {
72 2
            $viewModel = new ViewModel();
73
        }
74
75 3
        if (is_string($template)) {
76 2
            if ($this->templateManager->has($template)) {
77 1
                $template = $this->templateManager->get($template);
78
            } else {
79 1
                $template = new SimpleHtml($template);
80
            }
81
        }
82
83 3
        return $this->composer->compose($headers, $template, $viewModel);
84
    }
85
}
86