Completed
Push — master ( 735e98...9e3fb1 )
by Pavel
02:30
created

src/MailFactory.php (1 issue)

not multiple classes are defined in the same file.

Coding Style Compatibility Minor

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
/**
4
 * @copyright   Copyright (c) 2015 ublaboo <[email protected]>
5
 * @author      Pavel Janda <[email protected]>
6
 * @package     Ublaboo
7
 */
8
9
namespace Ublaboo\Mailing;
10
11
use Nette;
12
use Nette\Mail\Message;
13
use Ublaboo;
14
15
class MailFactory extends Nette\Object
16
{
17
18
	/**
19
	 * @var string
20
	 */
21
	private $config;
22
23
	/**
24
	 * @var Nette\Mail\IMailer
25
	 */
26
	private $mailer;
27
28
	/**
29
	 * @var Message
30
	 */
31
	private $message;
32
33
	/**
34
	 * @var array
35
	 */
36
	private $mails;
37
38
	/**
39
	 * @var Nette\Application\UI\ITemplateFactory
40
	 */
41
	private $templateFactory;
42
43
	/**
44
	 * @var Nette\Application\LinkGenerator
45
	 */
46
	private $linkGenerator;
47
48
	/**
49
	 * @var ILogger
50
	 */
51
	private $logger;
52
53
	/**
54
	 * @var string
55
	 */
56
	private $mail_images_base_path;
57
58
59
	public function __construct(
60
		$config,
61
		$mail_images_base_path,
62
		$mails,
63
		Nette\Mail\IMailer $mailer,
64
		Nette\Application\LinkGenerator $linkGenerator,
65
		Nette\Application\UI\ITemplateFactory $templateFactory,
66
		ILogger $logger
67
	) {
68
		$this->config = $config;
69
		$this->mailer = $mailer;
70
		$this->mails  = $mails;
71
		$this->linkGenerator = $linkGenerator;
72
		$this->templateFactory = $templateFactory;
73
		$this->logger = $logger;
74
	}
75
76
77
	/**
78
	 * Create email by given type
79
	 * @param  string $type
80
	 * @return Ublaboo\Mailing\Mail
81
	 * @throws MailCreationException
82
	 */
83
	public function createByType($type, $args)
84
	{
85
		$this->message = new Message;
86
87
		if (class_exists($type)) {
88
			$mail = new $type(
89
				$this->config,
90
				$this->mails,
91
				$this->mailer,
92
				$this->message,
93
				$this->linkGenerator,
94
				$this->templateFactory,
95
				$this->logger,
96
				$args
97
			);
98
99
			$mail->setBasePath($this->mail_images_base_path);
100
101
			return $mail;
102
		}
103
104
		throw new MailCreationException("Email [$type] does not exist");
105
	}
106
107
}
108
109
110
class MailCreationException extends \Exception
0 ignored issues
show
Coding Style Compatibility introduced by Pavel Janda
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
111
{
112
}
113