Passed
Branch feature/2.0 (ef99fd)
by Jonathan
11:25
created

AdminConfigPage::handle()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
eloc 13
c 2
b 0
f 0
nc 3
nop 1
dl 0
loc 20
rs 9.8333
1
<?php
2
3
/**
4
 * webtrees-lib: MyArtJaub library for webtrees
5
 *
6
 * @package MyArtJaub\Webtrees
7
 * @subpackage AdminTasks
8
 * @author Jonathan Jaubart <[email protected]>
9
 * @copyright Copyright (c) 2012-2020, 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\AdminTasks\Http\RequestHandlers;
16
17
use Fisharebest\Webtrees\I18N;
18
use Fisharebest\Webtrees\Exceptions\HttpNotFoundException;
19
use Fisharebest\Webtrees\Http\ViewResponseTrait;
20
use Fisharebest\Webtrees\Services\ModuleService;
21
use Fisharebest\Webtrees\Services\UserService;
22
use MyArtJaub\Webtrees\Functions\Functions;
23
use MyArtJaub\Webtrees\Module\AdminTasks\AdminTasksModule;
24
use Psr\Http\Message\ResponseInterface;
25
use Psr\Http\Message\ServerRequestInterface;
26
use Psr\Http\Server\RequestHandlerInterface;
27
28
/**
29
 * Request handler for AdminConfigPage
30
 */
31
class AdminConfigPage implements RequestHandlerInterface
32
{
33
    use ViewResponseTrait;
34
35
    /**
36
     * @var AdminTasksModule $module
37
     */
38
    private $module;
39
    
40
    /**
41
     *
42
     * @var UserService $user_service
43
     */
44
    private $user_service;
45
    
46
    /**
47
     * Constructor for Admin Config request handler
48
     *
49
     * @param ModuleService $module_service
50
     * @param UserService $user_service
51
     */
52
    public function __construct(ModuleService $module_service, UserService $user_service)
53
    {
54
        $this->module = $module_service->findByInterface(AdminTasksModule::class)->first();
55
        $this->user_service = $user_service;
56
    }
57
58
    /**
59
     * {@inheritDoc}
60
     * @see \Psr\Http\Server\RequestHandlerInterface::handle()
61
     */
62
    public function handle(ServerRequestInterface $request): ResponseInterface
63
    {
64
        $this->layout = 'layouts/administration';
65
        
66
        if ($this->module === null) {
67
            throw new HttpNotFoundException(I18N::translate('The attached module could not be found.'));
68
        }
69
        
70
        $token = $this->module->getPreference('MAJ_AT_FORCE_EXEC_TOKEN');
71
        if ($token === '') {
72
            $token = Functions::generateRandomToken();
73
            $this->module->setPreference('PAT_FORCE_EXEC_TOKEN', $token);
74
        }
75
        
76
        return $this->viewResponse($this->module->name() . '::admin/config', [
77
            'title'             =>  $this->module->title(),
78
            'trigger_token'     =>  $token,
79
            'trigger_route'     =>  route(TaskTrigger::class, ['task' => '__TASKNAME__', 'force' => '__TOKEN__']),
80
            'new_token_route'   =>  route(TokenGenerate::class),
81
            'tasks_data_route'  =>  route(TasksList::class)
82
        ]);
83
    }
84
}
85