Issues (2500)

app/Elements/RelationIsDescriptor.php (1 issue)

Labels
Severity
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2025 webtrees development team
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\Elements;
21
22
use Fisharebest\Webtrees\I18N;
23
24
use function uasort;
25
26
/**
27
 * RELATION_IS_DESCRIPTOR := {Size=1:25}
28
 * A word or phrase that states object 1's relation is object 2. For example
29
 * you would read the following as "Joe Jacob's great grandson is the submitter
30
 * pointed to by the @XREF:SUBM@":
31
 * 0 INDI
32
 * 1 NAME Joe /Jacob/
33
 * 1 ASSO @<XREF:SUBM>@
34
 * 2 RELA great grandson
35
 */
36
class RelationIsDescriptor extends AbstractElement
37
{
38
    protected const int MAXIMUM_LENGTH = 25;
0 ignored issues
show
A parse error occurred: Syntax error, unexpected T_STRING, expecting '=' on line 38 at column 24
Loading history...
39
40
    /**
41
     * A list of controlled values for this element
42
     *
43
     * @param string $sex the text depends on the sex of the *linked* individual
44
     *
45
     * @return array<int|string,string>
46
     */
47
    public function values(string $sex = 'U'): array
48
    {
49
        $values = [
50
            'M' => [
51
                ''                 => '',
52
                'attendant'        => I18N::translateContext('MALE', 'Attendant'),
53
                'attending'        => I18N::translateContext('MALE', 'Attending'),
54
                'buyer'            => I18N::translateContext('MALE', 'Buyer'),
55
                'civil_registrar'  => I18N::translateContext('MALE', 'Civil registrar'),
56
                'employee'         => I18N::translateContext('MALE', 'Employee'),
57
                'employer'         => I18N::translateContext('MALE', 'Employer'),
58
                'friend'           => I18N::translateContext('MALE', 'Friend'),
59
                'godparent'        => I18N::translate('Godfather'),
60
                'godchild'         => I18N::translate('Godson'),
61
                'guardian'         => I18N::translateContext('MALE', 'Guardian'),
62
                'informant'        => I18N::translateContext('MALE', 'Informant'),
63
                'lodger'           => I18N::translateContext('MALE', 'Lodger'),
64
                'nurse'            => I18N::translateContext('MALE', 'Nurse'),
65
                'owner'            => I18N::translateContext('MALE', 'Owner'),
66
                'registry_officer' => I18N::translateContext('MALE', 'Registry officer'),
67
                'seller'           => I18N::translateContext('MALE', 'Seller'),
68
                'servant'          => I18N::translateContext('MALE', 'Servant'),
69
                'slave'            => I18N::translateContext('MALE', 'Slave'),
70
                'ward'             => I18N::translateContext('MALE', 'Ward'),
71
            ],
72
            'F' => [
73
                'attendant'        => I18N::translateContext('FEMALE', 'Attendant'),
74
                'attending'        => I18N::translateContext('FEMALE', 'Attending'),
75
                'buyer'            => I18N::translateContext('FEMALE', 'Buyer'),
76
                'civil_registrar'  => I18N::translateContext('FEMALE', 'Civil registrar'),
77
                'employee'         => I18N::translateContext('FEMALE', 'Employee'),
78
                'employer'         => I18N::translateContext('FEMALE', 'Employer'),
79
                'friend'           => I18N::translateContext('FEMALE', 'Friend'),
80
                'godparent'        => I18N::translate('Godmother'),
81
                'godchild'         => I18N::translate('Goddaughter'),
82
                'guardian'         => I18N::translateContext('FEMALE', 'Guardian'),
83
                'informant'        => I18N::translateContext('FEMALE', 'Informant'),
84
                'lodger'           => I18N::translateContext('FEMALE', 'Lodger'),
85
                'nurse'            => I18N::translateContext('FEMALE', 'Nurse'),
86
                'owner'            => I18N::translateContext('FEMALE', 'Owner'),
87
                'registry_officer' => I18N::translateContext('FEMALE', 'Registry officer'),
88
                'seller'           => I18N::translateContext('FEMALE', 'Seller'),
89
                'servant'          => I18N::translateContext('FEMALE', 'Servant'),
90
                'slave'            => I18N::translateContext('FEMALE', 'Slave'),
91
                'ward'             => I18N::translateContext('FEMALE', 'Ward'),
92
            ],
93
            'U' => [
94
                'attendant'        => I18N::translate('Attendant'),
95
                'attending'        => I18N::translate('Attending'),
96
                'best_man'         => I18N::translate('Best man'),
97
                'bridesmaid'       => I18N::translate('Bridesmaid'),
98
                'buyer'            => I18N::translate('Buyer'),
99
                'circumciser'      => I18N::translate('Circumciser'),
100
                'civil_registrar'  => I18N::translate('Civil registrar'),
101
                'employee'         => I18N::translate('Employee'),
102
                'employer'         => I18N::translate('Employer'),
103
                'foster_child'     => I18N::translate('Foster child'),
104
                'foster_father'    => I18N::translate('Foster father'),
105
                'foster_mother'    => I18N::translate('Foster mother'),
106
                'friend'           => I18N::translate('Friend'),
107
                'godfather'        => I18N::translate('Godfather'),
108
                'godmother'        => I18N::translate('Godmother'),
109
                'godparent'        => I18N::translate('Godparent'),
110
                'godson'           => I18N::translate('Godson'),
111
                'goddaughter'      => I18N::translate('Goddaughter'),
112
                'godchild'         => I18N::translate('Godchild'),
113
                'guardian'         => I18N::translate('Guardian'),
114
                'informant'        => I18N::translate('Informant'),
115
                'lodger'           => I18N::translate('Lodger'),
116
                'multiple'         => /* I18N: twin, triplet, etc. */ I18N::translate('Multiple birth'),
117
                'nanny'            => I18N::translate('Nanny'),
118
                'nurse'            => I18N::translate('Nurse'),
119
                'owner'            => I18N::translate('Owner'),
120
                'proxy'            => /* I18N: An individual that represents another */ I18N::translate('Proxy'),
121
                'priest'           => I18N::translate('Priest'),
122
                'rabbi'            => I18N::translate('Rabbi'),
123
                'registry_officer' => I18N::translate('Registry officer'),
124
                'seller'           => I18N::translate('Seller'),
125
                'servant'          => I18N::translate('Servant'),
126
                'slave'            => I18N::translate('Slave'),
127
                'ward'             => I18N::translate('Ward'),
128
                'witness'          => I18N::translate('Witness'),
129
            ],
130
        ];
131
132
        $tmp = $values[$sex] ?? $values['U'];
133
134
        uasort($tmp, I18N::comparator());
135
136
        return $tmp;
137
    }
138
}
139