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

PatronymicLineageModule   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 24
c 2
b 0
f 0
dl 0
loc 83
rs 10
wmc 9

6 Methods

Rating   Name   Duplication   Size   Complexity  
A listUrl() 0 18 4
A listMenuClass() 0 3 1
A loadRoutes() 0 10 1
A headContent() 0 3 1
A title() 0 3 1
A description() 0 4 1
1
<?php
2
3
/**
4
 * webtrees-lib: MyArtJaub library for webtrees
5
 *
6
 * @package MyArtJaub\Webtrees
7
 * @subpackage PatronymicLineage
8
 * @author Jonathan Jaubart <[email protected]>
9
 * @copyright Copyright (c) 2009-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\PatronymicLineage;
16
17
use Aura\Router\Map;
18
use Fisharebest\Webtrees\Factory;
19
use Fisharebest\Webtrees\I18N;
20
use Fisharebest\Webtrees\Tree;
21
use Fisharebest\Webtrees\Module\ModuleGlobalInterface;
22
use Fisharebest\Webtrees\Module\ModuleGlobalTrait;
23
use Fisharebest\Webtrees\Module\ModuleListInterface;
24
use Fisharebest\Webtrees\Module\ModuleListTrait;
25
use MyArtJaub\Webtrees\Module\AbstractModuleMaj;
26
use MyArtJaub\Webtrees\Module\PatronymicLineage\Http\RequestHandlers\LineagesPage;
27
use MyArtJaub\Webtrees\Module\PatronymicLineage\Http\RequestHandlers\SurnamesList;
28
use Psr\Http\Message\ServerRequestInterface;
29
30
/**
31
 * Patronymic Lineage Module.
32
 * Display lineages of people with the same surname.
33
 */
34
class PatronymicLineageModule extends AbstractModuleMaj implements ModuleListInterface, ModuleGlobalInterface
35
{
36
    use ModuleListTrait;
37
    use ModuleGlobalTrait;
38
39
     /**
40
     * {@inheritDoc}
41
     * @see \Fisharebest\Webtrees\Module\AbstractModule::title()
42
     */
43
    public function title(): string
44
    {
45
        return /* I18N: Name of the “Patronymic lineage” module */ I18N::translate('Patronymic Lineages');
46
    }
47
    
48
    /**
49
     * {@inheritDoc}
50
     * @see \Fisharebest\Webtrees\Module\AbstractModule::description()
51
     */
52
    public function description(): string
53
    {
54
        //phpcs:ignore Generic.Files.LineLength.TooLong
55
        return /* I18N: Description of the “Patronymic lineage” module */ I18N::translate('Display lineages of people holding the same surname.');
56
    }
57
    
58
    /**
59
     * {@inheritDoc}
60
     * @see \MyArtJaub\Webtrees\Module\AbstractModuleMaj::loadRoutes()
61
     */
62
    public function loadRoutes(Map $router): void
63
    {
64
        $router->attach('', '', static function (Map $router) {
65
66
            $router->attach('', '/module-maj/lineages', static function (Map $router) {
67
68
                $router->attach('', '/Page', static function (Map $router) {
69
70
                    $router->get(SurnamesList::class, '/{tree}/list{/alpha}', SurnamesList::class);
71
                    $router->get(LineagesPage::class, '/{tree}/lineage/{surname}', LineagesPage::class);
72
                });
73
            });
74
        });
75
    }
76
    
77
    /**
78
     * {@inheritDoc}
79
     * @see \Fisharebest\Webtrees\Module\ModuleListInterface::listUrl()
80
     */
81
    public function listUrl(Tree $tree, array $parameters = []): string
82
    {
83
        $surname = $parameters['surname'] ?? '';
84
        
85
        $xref = app(ServerRequestInterface::class)->getAttribute('xref', '');
86
        if ($xref !== '' && $individual = Factory::individual()->make($xref, $tree)) {
87
            $surname = $individual->getAllNames()[$individual->getPrimaryName()]['surname'];
88
        }
89
        
90
        if ($surname !== '') {
91
            return route(LineagesPage::class, [
92
                'tree'      =>  $tree->name(),
93
                'surname'   =>  $surname
94
            ] + $parameters);
95
        }
96
        return route(SurnamesList::class, [
97
            'tree'  =>  $tree->name()
98
        ] + $parameters);
99
    }
100
    
101
    /**
102
     * {@inheritDoc}
103
     * @see \Fisharebest\Webtrees\Module\ModuleListInterface::listMenuClass()
104
     */
105
    public function listMenuClass(): string
106
    {
107
        return 'menu-maj-patrolineage';
108
    }
109
    
110
    /**
111
     * {@inheritDoc}
112
     * @see \Fisharebest\Webtrees\Module\ModuleGlobalInterface::headContent()
113
     */
114
    public function headContent(): string
115
    {
116
        return '<link rel="stylesheet" href="' . e($this->moduleCssUrl()) . '">';
117
    }
118
}
119