Passed
Branch — main (f9aaf7)
by Jonathan
14:43
created

AdminConfigAction   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 40
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A handle() 0 22 2
1
<?php
2
3
/**
4
 * webtrees-lib: MyArtJaub library for webtrees
5
 *
6
 * @package MyArtJaub\Webtrees
7
 * @subpackage MiscExtensions
8
 * @author Jonathan Jaubart <[email protected]>
9
 * @copyright Copyright (c) 2009-2021, Jonathan Jaubart
10
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3
11
 */
12
13
declare(strict_types=1);
14
15
namespace MyArtJaub\Webtrees\Module\MiscExtensions\Http\RequestHandlers;
16
17
use Fisharebest\Webtrees\FlashMessages;
18
use Fisharebest\Webtrees\I18N;
19
use Fisharebest\Webtrees\Services\ModuleService;
20
use MyArtJaub\Webtrees\Module\MiscExtensions\MiscExtensionsModule;
21
use Psr\Http\Message\ResponseInterface;
22
use Psr\Http\Message\ServerRequestInterface;
23
use Psr\Http\Server\RequestHandlerInterface;
24
25
/**
26
 * Request handler for saving the configuration of the module
27
 */
28
class AdminConfigAction implements RequestHandlerInterface
29
{
30
    private ?MiscExtensionsModule $module;
31
32
    /**
33
     * Constructor for AdminConfigPage Request Handler
34
     *
35
     * @param ModuleService $module_service
36
     */
37
    public function __construct(ModuleService $module_service)
38
    {
39
        $this->module = $module_service->findByInterface(MiscExtensionsModule::class)->first();
40
    }
41
42
    /**
43
     * {@inheritDoc}
44
     * @see \Psr\Http\Server\RequestHandlerInterface::handle()
45
     */
46
    public function handle(ServerRequestInterface $request): ResponseInterface
47
    {
48
        if ($this->module === null) {
49
            FlashMessages::addMessage(
50
                I18N::translate('The attached module could not be found.'),
51
                'danger'
52
            );
53
            return redirect(route(AdminConfigPage::class));
54
        }
55
56
        $params = (array) $request->getParsedBody();
57
58
        $this->module->setPreference('MAJ_TITLE_PREFIX', $params['MAJ_TITLE_PREFIX'] ?? '');
59
        $this->module->setPreference('MAJ_DISPLAY_CNIL', $params['MAJ_DISPLAY_CNIL'] ?? '');
60
        $this->module->setPreference('MAJ_CNIL_REFERENCE', $params['MAJ_CNIL_REFERENCE' ?? '']);
61
62
        FlashMessages::addMessage(
63
            I18N::translate('The preferences for the module ā€œ%sā€ have been updated.', $this->module->title()),
64
            'success'
65
        );
66
67
        return redirect(route(AdminConfigPage::class));
68
    }
69
}
70