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

RecordNameTextExtenderCollector   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 49
rs 10
c 0
b 0
f 0
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A description() 0 3 1
A title() 0 3 1
A recordNameAppend() 0 5 1
A hookInterface() 0 3 1
A recordNamePrepend() 0 5 1
1
<?php
2
3
/**
4
 * webtrees-lib: MyArtJaub library for webtrees
5
 *
6
 * @package MyArtJaub\Webtrees
7
 * @subpackage Hooks
8
 * @author Jonathan Jaubart <[email protected]>
9
 * @copyright Copyright (c) 2011-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\Hooks\Hooks;
16
17
use Fisharebest\Webtrees\GedcomRecord;
18
use Fisharebest\Webtrees\I18N;
19
use MyArtJaub\Webtrees\Common\Hooks\AbstractHookCollector;
20
use MyArtJaub\Webtrees\Contracts\Hooks\RecordNameTextExtenderInterface;
21
22
/**
23
 * Hook collector for hooks implementing RecordNameTextExtenderInterface.
24
 * Used to extend the display name of gedcom records.
25
 *
26
 * @extends AbstractHookCollector<RecordNameTextExtenderInterface>
27
 */
28
class RecordNameTextExtenderCollector extends AbstractHookCollector implements RecordNameTextExtenderInterface
29
{
30
    /**
31
     * {@inheritDoc}
32
     * @see \MyArtJaub\Webtrees\Common\Hooks\AbstractHookCollector::title()
33
     */
34
    public function title(): string
35
    {
36
        return I18N::translate('Text extender for records’ name');
37
    }
38
39
    /**
40
     * {@inheritDoc}
41
     * @see \MyArtJaub\Webtrees\Common\Hooks\AbstractHookCollector::description()
42
     */
43
    public function description(): string
44
    {
45
        return I18N::translate('Extends the full name of GEDCOM records with additional text or icons.');
46
    }
47
48
    /**
49
     * {@inheritDoc}
50
     * @see \MyArtJaub\Webtrees\Common\Hooks\AbstractHookCollector::hookInterface()
51
     */
52
    public function hookInterface(): string
53
    {
54
        return RecordNameTextExtenderInterface::class;
55
    }
56
57
    /**
58
     * {@inheritDoc}
59
     * @see \MyArtJaub\Webtrees\Contracts\Hooks\RecordNameTextExtenderInterface::recordNamePrepend()
60
     */
61
    public function recordNamePrepend(GedcomRecord $record, bool $use_long = false, string $size = ''): string
62
    {
63
        return $this->hooks()
64
            ->map(fn(RecordNameTextExtenderInterface $hook) => $hook->recordNamePrepend($record, $use_long, $size))
65
            ->implode('');
66
    }
67
68
    /**
69
     * {@inheritDoc}
70
     * @see \MyArtJaub\Webtrees\Contracts\Hooks\RecordNameTextExtenderInterface::recordNameAppend()
71
     */
72
    public function recordNameAppend(GedcomRecord $record, bool $use_long = false, string $size = ''): string
73
    {
74
        return $this->hooks()
75
            ->map(fn(RecordNameTextExtenderInterface $hook) => $hook->recordNameAppend($record, $use_long, $size))
76
            ->implode('');
77
    }
78
}
79