xref: /webtrees/app/Elements/AgeAtEvent.php (revision ae0043b720d44ad147874b2a3afe4e7a347c314a)
1c2ed51d1SGreg Roach<?php
2c2ed51d1SGreg Roach
3c2ed51d1SGreg Roach/**
4c2ed51d1SGreg Roach * webtrees: online genealogy
5c2ed51d1SGreg Roach * Copyright (C) 2021 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 function strtolower;
23c2ed51d1SGreg Roachuse function strtoupper;
24c2ed51d1SGreg Roach
25c2ed51d1SGreg Roach/**
26c2ed51d1SGreg Roach * AGE_AT_EVENT := {Size=1:12}
27c2ed51d1SGreg Roach * [ < | > | <NULL>]
28c2ed51d1SGreg Roach * [ YYy MMm DDDd | YYy | MMm | DDDd |
29c2ed51d1SGreg Roach * YYy MMm | YYy DDDd | MMm DDDd |
30c2ed51d1SGreg Roach * CHILD | INFANT | STILLBORN ]
31c2ed51d1SGreg Roach * ]
32c2ed51d1SGreg Roach * Where:
33c2ed51d1SGreg Roach * >         = greater than indicated age
34c2ed51d1SGreg Roach * <         = less than indicated age
35c2ed51d1SGreg Roach * y         = a label indicating years
36c2ed51d1SGreg Roach * m         = a label indicating months
37c2ed51d1SGreg Roach * d         = a label indicating days
38c2ed51d1SGreg Roach * YY        = number of full years
39c2ed51d1SGreg Roach * MM        = number of months
40c2ed51d1SGreg Roach * DDD       = number of days
41c2ed51d1SGreg Roach * CHILD     = age < 8 years
42c2ed51d1SGreg Roach * INFANT    = age<1year
43c2ed51d1SGreg Roach * STILLBORN = died just prior, at, or near birth, 0 years
44c2ed51d1SGreg Roach */
45c2ed51d1SGreg Roachclass AgeAtEvent extends AbstractElement
46c2ed51d1SGreg Roach{
47*ae0043b7SGreg Roach    protected const MAXIMUM_LENGTH = 12;
48c2ed51d1SGreg Roach
49c2ed51d1SGreg Roach    public function canonical(string $value): string
50c2ed51d1SGreg Roach    {
51c2ed51d1SGreg Roach        $value = parent::canonical($value);
52c2ed51d1SGreg Roach
53c2ed51d1SGreg Roach        $upper = strtoupper($value);
54c2ed51d1SGreg Roach
55c2ed51d1SGreg Roach        if ($upper === 'CHILD' || $upper === 'INFANT' || $upper === 'STILLBORN') {
56c2ed51d1SGreg Roach            $value = $upper;
57c2ed51d1SGreg Roach        } else {
58c2ed51d1SGreg Roach            $value = strtolower($value);
59c2ed51d1SGreg Roach        }
60c2ed51d1SGreg Roach
61c2ed51d1SGreg Roach        return $value;
62c2ed51d1SGreg Roach    }
63c2ed51d1SGreg Roach}
64