1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2023 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 18declare(strict_types=1); 19 20namespace Fisharebest\Webtrees\CustomTags; 21 22use Fisharebest\Webtrees\Contracts\CustomTagInterface; 23use Fisharebest\Webtrees\Contracts\ElementInterface; 24use Fisharebest\Webtrees\Elements\AddressEmail; 25use Fisharebest\Webtrees\Elements\CustomElement; 26use Fisharebest\Webtrees\Elements\CustomEvent; 27use Fisharebest\Webtrees\Elements\CustomFact; 28use Fisharebest\Webtrees\Elements\CustomFamilyEvent; 29use Fisharebest\Webtrees\Elements\CustomIndividualEvent; 30use Fisharebest\Webtrees\Elements\DateValue; 31use Fisharebest\Webtrees\Elements\NamePersonal; 32use Fisharebest\Webtrees\Elements\PlaceName; 33use Fisharebest\Webtrees\I18N; 34 35/** 36 * GEDCOM files created by Brothers Keeper 37 * 38 * @see https://wiki-de.genealogy.net/GEDCOM/_Nutzerdef-Tag 39 */ 40class BrothersKeeper implements CustomTagInterface 41{ 42 /** 43 * The name of the application. 44 * 45 * @return string 46 */ 47 public function name(): string 48 { 49 return 'Brothers Keeper'; 50 } 51 52 /** 53 * Tags created by this application. 54 * 55 * @return array<string,ElementInterface> 56 */ 57 public function tags(): array 58 { 59 return [ 60 'FAM:*:_EVN' => new CustomElement('Event number'), 61 'FAM:CHIL:_FREL' => new CustomElement(I18N::translate('Relationship to father')), 62 'FAM:CHIL:_MREL' => new CustomElement(I18N::translate('Relationship to mother')), 63 'FAM:_COML' => new CustomFamilyEvent(I18N::translate('Common law marriage')), 64 'FAM:_MARI' => new CustomFamilyEvent(I18N::translate('Marriage intention')), 65 'FAM:_MBON' => new CustomFamilyEvent(I18N::translate('Marriage bond')), 66 'FAM:_NMR' => new CustomFamilyEvent(I18N::translate('Not married'), ['NOTE' => '0:M', 'SOUR' => '0:M']), 67 'FAM:_PRMN' => new CustomElement(I18N::translate('Permanent number')), 68 'FAM:_SEPR' => new CustomFamilyEvent(I18N::translate('Separated')), 69 'FAM:_TODO' => new CustomElement(I18N::translate('Research task')), 70 'INDI:*:_EVN' => new CustomElement('Event number'), 71 'INDI:NAME:_ADPN' => new NamePersonal(I18N::translate('Adopted name'), []), 72 'INDI:NAME:_AKAN' => new NamePersonal(I18N::translate('Also known as'), []), 73 'INDI:NAME:_BIRN' => new NamePersonal(I18N::translate('Birth name'), []), 74 'INDI:NAME:_CALL' => new NamePersonal('Called name', []), 75 'INDI:NAME:_CENN' => new NamePersonal('Census name', []), 76 'INDI:NAME:_CURN' => new NamePersonal('Current name', []), 77 'INDI:NAME:_FARN' => new NamePersonal(I18N::translate('Estate name'), []), 78 'INDI:NAME:_FKAN' => new NamePersonal('Formal name', []), 79 'INDI:NAME:_FRKA' => new NamePersonal('Formerly known as', []), 80 'INDI:NAME:_GERN' => new NamePersonal('German name', []), 81 'INDI:NAME:_HEBN' => new NamePersonal(I18N::translate('Hebrew name'), []), 82 'INDI:NAME:_HNM' => new NamePersonal(I18N::translate('Hebrew name'), []), 83 'INDI:NAME:_INDG' => new NamePersonal('Indigenous name', []), 84 'INDI:NAME:_INDN' => new NamePersonal('Indian name', []), 85 'INDI:NAME:_LNCH' => new NamePersonal('Legal name change', []), 86 'INDI:NAME:_MARN' => new NamePersonal('Married name', []), 87 'INDI:NAME:_MARNM' => new NamePersonal('Married name', []), 88 'INDI:NAME:_OTHN' => new NamePersonal('Other name', []), 89 'INDI:NAME:_RELN' => new NamePersonal('Religious name', []), 90 'INDI:NAME:_SHON' => new NamePersonal('Short name', []), 91 'INDI:NAME:_SLDN' => new NamePersonal('Soldier name', []), 92 'INDI:_ADPF' => new CustomElement(I18N::translate('Adopted by father')), 93 'INDI:_ADPM' => new CustomElement(I18N::translate('Adopted by mother')), 94 'INDI:_BRTM' => new CustomIndividualEvent(I18N::translate('Brit milah')), 95 'INDI:_BRTM:DATE' => new DateValue(I18N::translate('Date of brit milah')), 96 'INDI:_BRTM:PLAC' => new PlaceName(I18N::translate('Place of brit milah')), 97 'INDI:_EMAIL' => new AddressEmail(I18N::translate('Email address')), 98 'INDI:_EYEC' => new CustomFact(I18N::translate('Eye color')), 99 'INDI:_FNRL' => new CustomElement(I18N::translate('Funeral')), 100 'INDI:_HAIR' => new CustomFact(I18N::translate('Hair color')), 101 'INDI:_HEIG' => new CustomFact(I18N::translate('Height')), 102 'INDI:_INTE' => new CustomElement(I18N::translate('Interment')), 103 'INDI:_MEDC' => new CustomFact(I18N::translate('Medical')), 104 'INDI:_MILI' => new CustomFact(I18N::translate('Military')), 105 'INDI:_MILT' => new CustomFact(I18N::translate('Military service')), 106 'INDI:_NLIV' => new CustomFact(I18N::translate('Not living')), 107 'INDI:_NMAR' => new CustomEvent(I18N::translate('Never married'), ['NOTE' => '0:M', 'SOUR' => '0:M']), 108 'INDI:_PRMN' => new CustomElement(I18N::translate('Permanent number')), 109 'INDI:_TODO' => new CustomElement(I18N::translate('Research task')), 110 'INDI:_WEIG' => new CustomFact(I18N::translate('Weight')), 111 'INDI:_YART' => new CustomIndividualEvent(I18N::translate('Yahrzeit')), 112 // 1 XXXX 113 // 2 _EVN ## 114 // 1 ASSO @Xnnn@ 115 // 2 RELA Witness at event _EVN ## 116 ]; 117 } 118} 119