Passed
Push — master ( dbc196...489072 )
by Greg
05:38
created

EmailPreferencesAction::handle()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 40
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 26
nc 6
nop 1
dl 0
loc 40
rs 9.504
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2019 webtrees development team
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\Http\RequestHandlers;
21
22
use Fisharebest\Webtrees\FlashMessages;
23
use Fisharebest\Webtrees\I18N;
24
use Fisharebest\Webtrees\Services\EmailService;
25
use Fisharebest\Webtrees\Site;
26
use Fisharebest\Webtrees\SiteUser;
27
use Fisharebest\Webtrees\User;
28
use Psr\Http\Message\ResponseInterface;
29
use Psr\Http\Message\ServerRequestInterface;
30
use Psr\Http\Server\RequestHandlerInterface;
31
32
use function e;
33
use function redirect;
34
use function route;
35
36
/**
37
 * Edit the email preferences.
38
 */
39
class EmailPreferencesAction implements RequestHandlerInterface
40
{
41
    /** @var EmailService */
42
    private $email_service;
43
44
    /**
45
     * AdminSiteController constructor.
46
     *
47
     * @param EmailService $email_service
48
     */
49
    public function __construct(EmailService $email_service)
50
    {
51
        $this->email_service = $email_service;
52
    }
53
54
    /**
55
     * @param ServerRequestInterface $request
56
     *
57
     * @return ResponseInterface
58
     */
59
    public function handle(ServerRequestInterface $request): ResponseInterface
60
    {
61
        $user = $request->getAttribute('user');
62
        assert($user instanceof User);
63
64
        $params = $request->getParsedBody();
65
66
        Site::setPreference('SMTP_ACTIVE', $params['SMTP_ACTIVE']);
67
        Site::setPreference('SMTP_FROM_NAME', $params['SMTP_FROM_NAME']);
68
        Site::setPreference('SMTP_HOST', $params['SMTP_HOST']);
69
        Site::setPreference('SMTP_PORT', $params['SMTP_PORT']);
70
        Site::setPreference('SMTP_AUTH', $params['SMTP_AUTH']);
71
        Site::setPreference('SMTP_AUTH_USER', $params['SMTP_AUTH_USER']);
72
        Site::setPreference('SMTP_SSL', $params['SMTP_SSL']);
73
        Site::setPreference('SMTP_HELO', $params['SMTP_HELO']);
74
        Site::setPreference('DKIM_DOMAIN', $params['DKIM_DOMAIN']);
75
        Site::setPreference('DKIM_SELECTOR', $params['DKIM_SELECTOR']);
76
        Site::setPreference('DKIM_KEY', $params['DKIM_KEY']);
77
78
        if ($params['SMTP_AUTH_PASS'] !== '') {
79
            Site::setPreference('SMTP_AUTH_PASS', $params['SMTP_AUTH_PASS']);
80
        }
81
82
        FlashMessages::addMessage(I18N::translate('The website preferences have been updated.'), 'success');
83
84
        $test = $params['test'] ?? '';
85
86
        if ($test === 'on') {
87
            $success = $this->email_service->send(new SiteUser(), $user, $user, 'test', 'test', 'test');
88
89
            if ($success) {
90
                FlashMessages::addMessage(I18N::translate('The message was successfully sent to %s.', e($user->email())), 'success');
91
            } else {
92
                FlashMessages::addMessage(I18N::translate('The message was not sent.'), 'danger');
93
            }
94
95
            return redirect(route(EmailPreferencesPage::class));
96
        }
97
98
        return redirect(route(ControlPanel::class));
99
    }
100
}
101