Skip to content

Commit d891fba

Browse files
committed
MailExtension: added getConfigSchema()
1 parent c9c2935 commit d891fba

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

composer.json

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
"nette/tester": "^2.0",
2525
"tracy/tracy": "^2.4"
2626
},
27+
"conflict": {
28+
"nette/di": "<3.0"
29+
},
2730
"suggest": {
2831
"ext-fileinfo": "to detect type of attached files"
2932
},

src/Bridges/MailDI/MailExtension.php

+19-16
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,42 @@
1010
namespace Nette\Bridges\MailDI;
1111

1212
use Nette;
13+
use Nette\DI\Config\Expect;
1314

1415

1516
/**
1617
* Mail extension for Nette DI.
1718
*/
1819
class MailExtension extends Nette\DI\CompilerExtension
1920
{
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\DI\Config\Schema
22+
{
23+
return Expect::struct([
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+
]);
35+
}
3236

3337

3438
public function loadConfiguration()
3539
{
3640
$builder = $this->getContainerBuilder();
37-
$config = $this->validateConfig($this->defaults);
3841

3942
$mailer = $builder->addDefinition($this->prefix('mailer'))
4043
->setType(Nette\Mail\IMailer::class);
4144

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]);
4447
} else {
45-
$mailer->setFactory(Nette\Mail\SmtpMailer::class, [$config]);
48+
$mailer->setFactory(Nette\Mail\SendmailMailer::class);
4649
}
4750

4851
if ($this->name === 'mail') {

0 commit comments

Comments
 (0)