Passed
Push — master ( 333fec...f0c9a8 )
by Milan
02:43
created

MailManagerExtension::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace h4kuna\MailManager\DI;
4
5
use h4kuna\MailManager,
6
	Nette\DI as NDI;
7
8
class MailManagerExtension extends NDI\CompilerExtension
9
{
10
11
	private $defaults = [
12
		// mail manager
13
		'assetsDir' => null,
14
		// layout
15
		'templateDir' => null,
16
		'plainMacro' => '{file}-plain', // plain/%file% or plain-%file%
17
		// template factory
18
		'globalVars' => [],
19
		// message
20
		'from' => null,
21
		'returnPath' => null,
22
		// file mailer
23
		'debugMode' => '%debugMode%',
24
		'tempDir' => '%tempDir%/mails',
25
		'live' => '1 minute',
26
	];
27
28
	public function loadConfiguration()
29
	{
30
		$builder = $this->getContainerBuilder();
31
		$config = $this->getConfig($this->defaults);
32
33
		// message factory
34
		$builder->addDefinition($this->prefix('messageFactory'))
35
			->setFactory(MailManager\Message\MessageFactory::class)
36
			->setArguments([$config['from'], $config['returnPath']])
37
			->setAutowired(false);
38
39
		// template factory
40
		$templateFactory = $builder->addDefinition($this->prefix('templateFactory'));
41
		$templateFactory->setFactory(MailManager\Template\TemplateFactory::class)
42
			->addSetup('setVariables', [$config['globalVars']])
43
			->setAutowired(false);
44
45
		// mailer
46
		$mailer = '@nette.mailer';
47
		if ($config['debugMode']) {
48
			$mailerBuilder = $builder->addDefinition($this->prefix('fileMailer'))
49
				->setFactory(MailManager\Mailer\FileMailer::class)
50
				->setArguments([$config['tempDir']])
51
				->setAutowired(false);
52
53
			if ($config['live'] !== null) {
54
				$mailerBuilder->addSetup('setLive', [$config['live']]);
55
			}
56
			$mailer = $this->prefix('@fileMailer');
57
		}
58
59
		// layout factory
60
		$builder->addDefinition($this->prefix('layoutFactory'))
61
			->setFactory(MailManager\Template\LayoutFactory::class)
62
			->setArguments([$this->prefix('@templateFactory')])
63
			->addSetup('setTemplateDir', [$config['templateDir']])
64
			->addSetup('setPlainMacro', [$config['plainMacro']])
65
			->setAutowired(false);
66
67
		// MailManager
68
		$builder->addDefinition($this->prefix('mailManager'))
69
			->setFactory(MailManager\MailManager::class)
70
			->setArguments([$mailer, $this->prefix('@messageFactory'), $this->prefix('@layoutFactory')])
71
			->addSetup('setAssetsDir', [$config['assetsDir']]);
72
73
		return $builder;
74
	}
75
76
}
77