13d2c98d1SGreg Roach<?php 23d2c98d1SGreg Roach 33d2c98d1SGreg Roach/** 43d2c98d1SGreg Roach * webtrees: online genealogy 5*d11be702SGreg Roach * Copyright (C) 2023 webtrees development team 63d2c98d1SGreg Roach * This program is free software: you can redistribute it and/or modify 73d2c98d1SGreg Roach * it under the terms of the GNU General Public License as published by 83d2c98d1SGreg Roach * the Free Software Foundation, either version 3 of the License, or 93d2c98d1SGreg Roach * (at your option) any later version. 103d2c98d1SGreg Roach * This program is distributed in the hope that it will be useful, 113d2c98d1SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 123d2c98d1SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 133d2c98d1SGreg Roach * GNU General Public License for more details. 143d2c98d1SGreg Roach * You should have received a copy of the GNU General Public License 153d2c98d1SGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>. 163d2c98d1SGreg Roach */ 173d2c98d1SGreg Roach 183d2c98d1SGreg Roachdeclare(strict_types=1); 193d2c98d1SGreg Roach 203d2c98d1SGreg Roachnamespace Fisharebest\Webtrees\Elements; 213d2c98d1SGreg Roach 223d2c98d1SGreg Roachuse Fisharebest\Webtrees\I18N; 233d2c98d1SGreg Roach 243d2c98d1SGreg Roachuse function array_key_exists; 253d2c98d1SGreg Roachuse function strtoupper; 263d2c98d1SGreg Roach 273d2c98d1SGreg Roach/** 283d2c98d1SGreg Roach * For Gedcom-L 293d2c98d1SGreg Roach * Programs with internal data fields "not married" or "never married" or a data field 303d2c98d1SGreg Roach * "Status", should introduce a user-defined tag _STAT directly below of FAM: 313d2c98d1SGreg Roach * _STAT can have the following values: 323d2c98d1SGreg Roach * <STATUS_TEXT>:= [NOT MARRIED | NEVER MARRIED | UNKNOWN |<plain text of the user>] 333d2c98d1SGreg Roach */ 343d2c98d1SGreg Roachclass FamilyStatusText extends AbstractElement 353d2c98d1SGreg Roach{ 364da96842SGreg Roach protected const SUBTAGS = [ 374da96842SGreg Roach 'DATE' => '0:1', 384da96842SGreg Roach 'PLAC' => '0:1', 394da96842SGreg Roach 'NOTE' => '0:M', 404da96842SGreg Roach 'SOUR' => '0:M', 414da96842SGreg Roach ]; 424da96842SGreg Roach 433d2c98d1SGreg Roach /** 443d2c98d1SGreg Roach * Convert a value to a canonical form. 453d2c98d1SGreg Roach * 463d2c98d1SGreg Roach * @param string $value 473d2c98d1SGreg Roach * 483d2c98d1SGreg Roach * @return string 493d2c98d1SGreg Roach */ 503d2c98d1SGreg Roach public function canonical(string $value): string 513d2c98d1SGreg Roach { 523d2c98d1SGreg Roach $value = parent::canonical($value); 533d2c98d1SGreg Roach $upper = strtoupper($value); 543d2c98d1SGreg Roach 553d2c98d1SGreg Roach if (array_key_exists($upper, $this->values())) { 563d2c98d1SGreg Roach return $upper; 573d2c98d1SGreg Roach } 583d2c98d1SGreg Roach 593d2c98d1SGreg Roach return $value; 603d2c98d1SGreg Roach } 613d2c98d1SGreg Roach 623d2c98d1SGreg Roach /** 633d2c98d1SGreg Roach * A list of controlled values for this element 643d2c98d1SGreg Roach * 653d2c98d1SGreg Roach * @return array<int|string,string> 663d2c98d1SGreg Roach */ 673d2c98d1SGreg Roach public function values(): array 683d2c98d1SGreg Roach { 693d2c98d1SGreg Roach return [ 703d2c98d1SGreg Roach '' => '', 713d2c98d1SGreg Roach 'NOT MARRIED' => I18N::translate('Not married'), 723d2c98d1SGreg Roach 'NEVER MARRIED' => I18N::translate('Never married'), 733d2c98d1SGreg Roach 'UNKNOWN' => I18N::translate('Unknown'), 743d2c98d1SGreg Roach ]; 753d2c98d1SGreg Roach } 763d2c98d1SGreg Roach} 77