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

AdminTasksModule::customModuleVersion()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 2
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
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;
16
17
use Aura\Router\Map;
18
use Fig\Http\Message\RequestMethodInterface;
19
use Fisharebest\Webtrees\I18N;
20
use Fisharebest\Webtrees\Http\Middleware\AuthAdministrator;
21
use Fisharebest\Webtrees\Module\ModuleConfigInterface;
22
use Fisharebest\Webtrees\Module\ModuleConfigTrait;
23
use Fisharebest\Webtrees\Module\ModuleCustomInterface;
24
use Fisharebest\Webtrees\Module\ModuleGlobalInterface;
25
use Fisharebest\Webtrees\Module\ModuleGlobalTrait;
26
use Fisharebest\Webtrees\Services\MigrationService;
27
use MyArtJaub\Webtrees\Module\AbstractModuleMaj;
28
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\AdminConfigPage;
29
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\TaskEditAction;
30
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\TaskEditPage;
31
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\TaskStatusAction;
32
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\TaskTrigger;
33
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\TasksList;
34
use MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers\TokenGenerate;
35
use MyArtJaub\Webtrees\Module\AdminTasks\Model\ModuleTasksProviderInterface;
36
use MyArtJaub\Webtrees\Module\AdminTasks\Tasks\HealthCheckEmailTask;
37
38
/**
39
 * MyArtJaub AdminTask Module
40
 * Allow for tasks to be run on a (nearly-)regular schedule
41
 */
42
class AdminTasksModule extends AbstractModuleMaj implements
43
    ModuleCustomInterface,
44
    ModuleConfigInterface,
45
    ModuleGlobalInterface,
46
    ModuleTasksProviderInterface
47
{
48
    use ModuleConfigTrait;
49
    use ModuleGlobalTrait;
50
51
    //How to update the database schema for this module
52
    private const SCHEMA_TARGET_VERSION   = 2;
53
    private const SCHEMA_SETTING_NAME     = 'MAJ_ADMTASKS_SCHEMA_VERSION';
54
    private const SCHEMA_MIGRATION_PREFIX = __NAMESPACE__ . '\Schema';
55
56
    /**
57
     * {@inheritDoc}
58
     * @see \Fisharebest\Webtrees\Module\AbstractModule::title()
59
     */
60
    public function title(): string
61
    {
62
        return I18N::translate('Administration Tasks');
63
    }
64
    
65
    /**
66
     * {@inheritDoc}
67
     * @see \Fisharebest\Webtrees\Module\AbstractModule::description()
68
     */
69
    public function description(): string
70
    {
71
        return I18N::translate('Manage and run nearly-scheduled administration tasks.');
72
    }
73
    
74
    /**
75
     * {@inheritDoc}
76
     * @see \Fisharebest\Webtrees\Module\AbstractModule::boot()
77
     */
78
    public function boot(): void
79
    {
80
        parent::boot();
81
        app(MigrationService::class)->updateSchema(
82
            self::SCHEMA_MIGRATION_PREFIX,
83
            self::SCHEMA_SETTING_NAME,
84
            self::SCHEMA_TARGET_VERSION
85
        );
86
    }
87
    
88
    /**
89
     * {@inheritDoc}
90
     * @see \MyArtJaub\Webtrees\Module\AbstractModuleMaj::loadRoutes()
91
     */
92
    public function loadRoutes(Map $router): void
93
    {
94
        $router->attach('', '', static function (Map $router) {
95
96
            $router->attach('', '/module-maj/admintasks', static function (Map $router) {
97
98
                $router->attach('', '/admin', static function (Map $router) {
99
100
                    $router->extras([
101
                        'middleware' => [
102
                            AuthAdministrator::class,
103
                        ],
104
                    ]);
105
                    $router->get(AdminConfigPage::class, '/config', AdminConfigPage::class);
106
                    
107
                    $router->attach('', '/tasks', static function (Map $router) {
108
109
                        $router->get(TasksList::class, '', TasksList::class);
110
                        $router->get(TaskEditPage::class, '/{task}', TaskEditPage::class);
111
                        $router->post(TaskEditAction::class, '/{task}', TaskEditAction::class);
112
                        $router->get(TaskStatusAction::class, '/{task}/status/{enable}', TaskStatusAction::class);
113
                    });
114
                });
115
                
116
                $router->get(TaskTrigger::class, '/trigger{/task}', TaskTrigger::class)
117
                    ->allows(RequestMethodInterface::METHOD_POST);
118
                
119
                $router->post(TokenGenerate::class, '/token', TokenGenerate::class)
120
                    ->extras(['middleware' => [AuthAdministrator::class]]);
121
            });
122
        });
123
    }
124
    
125
    /**
126
     * {@inheritDoc}
127
     * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleLatestVersion()
128
     */
129
    public function customModuleVersion(): string
130
    {
131
        return '2.0.5-v.1';
132
    }
133
    
134
    /**
135
     * {@inheritDoc}
136
     * @see \Fisharebest\Webtrees\Module\ModuleConfigInterface::getConfigLink()
137
     */
138
    public function getConfigLink(): string
139
    {
140
        return route(AdminConfigPage::class);
141
    }
142
    
143
    /**
144
     * {@inheritDoc}
145
     * @see \Fisharebest\Webtrees\Module\ModuleGlobalInterface::bodyContent()
146
     */
147
    public function bodyContent(): string
148
    {
149
        $parameters['url'] = route(TaskTrigger::class);
0 ignored issues
show
Comprehensibility Best Practice introduced by
$parameters was never initialized. Although not strictly required by PHP, it is generally a good practice to add $parameters = array(); before regardless.
Loading history...
150
        
151
        return view($this->name() . '::snippet', $parameters);
152
    }
153
    
154
    /**
155
     * {@inheritDoc}
156
     * @see \MyArtJaub\Webtrees\Module\AdminTasks\Model\ModuleTasksProviderInterface::listTasks()
157
     */
158
    public function listTasks(): array
159
    {
160
        return [
161
            'maj-healthcheck' => HealthCheckEmailTask::class
162
        ];
163
    }
164
}
165