xref: /webtrees/app/Elements/PedigreeLinkageType.php (revision e5766395c1a71e715ebaadcf2d63d036d60fb649)
1c2ed51d1SGreg Roach<?php
2c2ed51d1SGreg Roach
3c2ed51d1SGreg Roach/**
4c2ed51d1SGreg Roach * webtrees: online genealogy
5d11be702SGreg Roach * Copyright (C) 2023 webtrees development team
6c2ed51d1SGreg Roach * This program is free software: you can redistribute it and/or modify
7c2ed51d1SGreg Roach * it under the terms of the GNU General Public License as published by
8c2ed51d1SGreg Roach * the Free Software Foundation, either version 3 of the License, or
9c2ed51d1SGreg Roach * (at your option) any later version.
10c2ed51d1SGreg Roach * This program is distributed in the hope that it will be useful,
11c2ed51d1SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
12c2ed51d1SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13c2ed51d1SGreg Roach * GNU General Public License for more details.
14c2ed51d1SGreg Roach * You should have received a copy of the GNU General Public License
15c2ed51d1SGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>.
16c2ed51d1SGreg Roach */
17c2ed51d1SGreg Roach
18c2ed51d1SGreg Roachdeclare(strict_types=1);
19c2ed51d1SGreg Roach
20c2ed51d1SGreg Roachnamespace Fisharebest\Webtrees\Elements;
21c2ed51d1SGreg Roach
22c2ed51d1SGreg Roachuse Fisharebest\Webtrees\I18N;
23c2ed51d1SGreg Roach
247573bc3dSGreg Roachuse function strtoupper;
257573bc3dSGreg Roach
26c2ed51d1SGreg Roach/**
27c2ed51d1SGreg Roach * PEDIGREE_LINKAGE_TYPE := {Size=5:7}
28c2ed51d1SGreg Roach * [ adopted | birth | foster | sealing ]
29c2ed51d1SGreg Roach * A code used to indicate the child to family relationship for pedigree navigation purposes.
30c2ed51d1SGreg Roach * Where:
31c2ed51d1SGreg Roach * adopted = indicates adoptive parents.
32c2ed51d1SGreg Roach * birth   = indicates birth parents.
33c2ed51d1SGreg Roach * foster  = indicates child was included in a foster or guardian family.
34c2ed51d1SGreg Roach * sealing = indicates child was sealed to parents other than birth parents.
35c2ed51d1SGreg Roach */
36c2ed51d1SGreg Roachclass PedigreeLinkageType extends AbstractElement
37c2ed51d1SGreg Roach{
38ae0043b7SGreg Roach    protected const MAXIMUM_LENGTH = 7;
39c2ed51d1SGreg Roach
4088a03560SGreg Roach    public const VALUE_ADOPTED = 'ADOPTED';
4188a03560SGreg Roach    public const VALUE_BIRTH   = 'BIRTH';
4288a03560SGreg Roach    public const VALUE_FOSTER  = 'FOSTER';
4388a03560SGreg Roach    public const VALUE_SEALING = 'SEALING';
4488a03560SGreg Roach    public const VALUE_RADA    = 'RADA';
457573bc3dSGreg Roach
467573bc3dSGreg Roach    /**
477573bc3dSGreg Roach     * Convert a value to a canonical form.
487573bc3dSGreg Roach     *
497573bc3dSGreg Roach     * @param string $value
507573bc3dSGreg Roach     *
517573bc3dSGreg Roach     * @return string
527573bc3dSGreg Roach     */
537573bc3dSGreg Roach    public function canonical(string $value): string
547573bc3dSGreg Roach    {
557573bc3dSGreg Roach        return strtoupper(parent::canonical($value));
567573bc3dSGreg Roach    }
57665e281aSGreg Roach
58c2ed51d1SGreg Roach    /**
59c2ed51d1SGreg Roach     * A list of controlled values for this element
60c2ed51d1SGreg Roach     *
61*e5766395SGreg Roach     * @param string $sex the text depends on the sex of the individual
62c2ed51d1SGreg Roach     *
63c2ed51d1SGreg Roach     * @return array<int|string,string>
64c2ed51d1SGreg Roach     */
65c2ed51d1SGreg Roach    public function values(string $sex = 'U'): array
66c2ed51d1SGreg Roach    {
67c2ed51d1SGreg Roach        $values = [
68c2ed51d1SGreg Roach            'M' => [
69c2ed51d1SGreg Roach                ''                  => '',
7088a03560SGreg Roach                self::VALUE_BIRTH   => I18N::translateContext('Male pedigree', 'Birth'),
7188a03560SGreg Roach                self::VALUE_ADOPTED => I18N::translateContext('Male pedigree', 'Adopted'),
7288a03560SGreg Roach                self::VALUE_FOSTER  => I18N::translateContext('Male pedigree', 'Foster'),
73665e281aSGreg Roach                /* I18N: “sealing” is a Mormon ceremony. */
7488a03560SGreg Roach                self::VALUE_SEALING => I18N::translateContext('Male pedigree', 'Sealing'),
75665e281aSGreg Roach                /* I18N: “rada” is an Arabic word, pronounced “ra DAH”. It is child-to-parent pedigree, established by wet-nursing. */
7688a03560SGreg Roach                self::VALUE_RADA    => I18N::translateContext('Male pedigree', 'Rada'),
77c2ed51d1SGreg Roach            ],
78c2ed51d1SGreg Roach            'F' => [
79c2ed51d1SGreg Roach                ''                  => '',
8088a03560SGreg Roach                self::VALUE_BIRTH   => I18N::translateContext('Female pedigree', 'Birth'),
8188a03560SGreg Roach                self::VALUE_ADOPTED => I18N::translateContext('Female pedigree', 'Adopted'),
8288a03560SGreg Roach                self::VALUE_FOSTER  => I18N::translateContext('Female pedigree', 'Foster'),
83665e281aSGreg Roach                /* I18N: “sealing” is a Mormon ceremony. */
8488a03560SGreg Roach                self::VALUE_SEALING => I18N::translateContext('Female pedigree', 'Sealing'),
85665e281aSGreg Roach                /* I18N: “rada” is an Arabic word, pronounced “ra DAH”. It is child-to-parent pedigree, established by wet-nursing. */
8688a03560SGreg Roach                self::VALUE_RADA    => I18N::translateContext('Female pedigree', 'Rada'),
87c2ed51d1SGreg Roach            ],
88c2ed51d1SGreg Roach            'U' => [
89c2ed51d1SGreg Roach                ''                  => '',
9088a03560SGreg Roach                self::VALUE_BIRTH   => I18N::translateContext('Pedigree', 'Birth'),
9188a03560SGreg Roach                self::VALUE_ADOPTED => I18N::translateContext('Pedigree', 'Adopted'),
9288a03560SGreg Roach                self::VALUE_FOSTER  => I18N::translateContext('Pedigree', 'Foster'),
93665e281aSGreg Roach                /* I18N: “sealing” is a Mormon ceremony. */
9488a03560SGreg Roach                self::VALUE_SEALING => I18N::translateContext('Pedigree', 'Sealing'),
95665e281aSGreg Roach                /* I18N: “rada” is an Arabic word, pronounced “ra DAH”. It is child-to-parent pedigree, established by wet-nursing. */
9688a03560SGreg Roach                self::VALUE_RADA    => I18N::translateContext('Pedigree', 'Rada'),
97c2ed51d1SGreg Roach            ],
98c2ed51d1SGreg Roach        ];
99c2ed51d1SGreg Roach
100c2ed51d1SGreg Roach        return $values[$sex] ?? $values['U'];
101c2ed51d1SGreg Roach    }
102c2ed51d1SGreg Roach}
103