|
10 | 10 | namespace Nette\Bridges\MailDI;
|
11 | 11 |
|
12 | 12 | use Nette;
|
| 13 | +use Nette\Schema\Expect; |
13 | 14 |
|
14 | 15 |
|
15 | 16 | /**
|
16 | 17 | * Mail extension for Nette DI.
|
17 | 18 | */
|
18 | 19 | class MailExtension extends Nette\DI\CompilerExtension
|
19 | 20 | {
|
20 |
| -public $defaults = [ |
21 |
| -'smtp' => false, |
22 |
| -'host' => null, |
23 |
| -'port' => null, |
24 |
| -'username' => null, |
25 |
| -'password' => null, |
26 |
| -'secure' => null, |
27 |
| -'timeout' => null, |
28 |
| -'context' => null, |
29 |
| -'clientHost' => null, |
30 |
| -'persistent' => false, |
31 |
| -]; |
| 21 | +public function getConfigSchema(): Nette\Schema\Schema |
| 22 | +{ |
| 23 | +return Expect::structure([ |
| 24 | +'smtp' => Expect::bool(false), |
| 25 | +'host' => Expect::string()->dynamic(), |
| 26 | +'port' => Expect::int()->dynamic(), |
| 27 | +'username' => Expect::string()->dynamic(), |
| 28 | +'password' => Expect::string()->dynamic(), |
| 29 | +'secure' => Expect::enum(null, 'ssl', 'tls')->dynamic(), |
| 30 | +'timeout' => Expect::int()->dynamic(), |
| 31 | +'context' => Expect::arrayOf('array')->dynamic(), |
| 32 | +'clientHost' => Expect::string()->dynamic(), |
| 33 | +'persistent' => Expect::bool(false)->dynamic(), |
| 34 | +])->castTo('array'); |
| 35 | +} |
32 | 36 |
|
33 | 37 |
|
34 | 38 | public function loadConfiguration()
|
35 | 39 | {
|
36 | 40 | $builder = $this->getContainerBuilder();
|
37 |
| -$config = $this->validateConfig($this->defaults); |
38 | 41 |
|
39 | 42 | $mailer = $builder->addDefinition($this->prefix('mailer'))
|
40 | 43 | ->setType(Nette\Mail\IMailer::class);
|
41 | 44 |
|
42 |
| -if (empty($config['smtp'])) { |
43 |
| -$mailer->setFactory(Nette\Mail\SendmailMailer::class); |
| 45 | +if ($this->config['smtp']) { |
| 46 | +$mailer->setFactory(Nette\Mail\SmtpMailer::class, [$this->config]); |
44 | 47 | } else {
|
45 |
| -$mailer->setFactory(Nette\Mail\SmtpMailer::class, [$config]); |
| 48 | +$mailer->setFactory(Nette\Mail\SendmailMailer::class); |
46 | 49 | }
|
47 | 50 |
|
48 | 51 | if ($this->name === 'mail') {
|
|
0 commit comments