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\AddressWebPage; 25use Fisharebest\Webtrees\Elements\CustomElement; 26use Fisharebest\Webtrees\Elements\DateValue; 27use Fisharebest\Webtrees\Elements\PafUid; 28use Fisharebest\Webtrees\I18N; 29 30/** 31 * GEDCOM files created by Legacy 32 * 33 * @see https://legacyfamilytree.com 34 * @see http://support.legacyfamilytree.com/article/AA-00520/0/GEDCOM-Files-custom-tags-in-Legacy.html 35 */ 36class Legacy implements CustomTagInterface 37{ 38 /** 39 * The name of the application. 40 * 41 * @return string 42 */ 43 public function name(): string 44 { 45 return 'Legacy'; 46 } 47 48 /** 49 * Tags created by this application. 50 * 51 * @return array<string,ElementInterface> 52 */ 53 public function tags(): array 54 { 55 return [ 56 'FAM:*:ADDR:_PRIV' => new CustomElement(I18N::translate('Private')), 57 'FAM:*:PLAC:_VERI' => new CustomElement(I18N::translate('Verified')), 58 'FAM:*:SOUR:DATE' => new DateValue(I18N::translate('Date')), 59 'FAM:*:SOUR:_VERI' => new CustomElement(I18N::translate('Verified')), 60 'FAM:*:_PRIV' => new CustomElement(I18N::translate('Private')), 61 'FAM:CHIL:_FREL' => new CustomElement(I18N::translate('Relationship to father')), 62 'FAM:CHIL:_MREL' => new CustomElement(I18N::translate('Relationship to mother')), 63 'FAM:CHIL:_STAT' => new CustomElement(I18N::translate('Status')), 64 'FAM:EVEN:_OVER' => new CustomElement('Event sentence override'), 65 'FAM:MARR:_HTITL' => new CustomElement(I18N::translate('Label for husband')), 66 'FAM:MARR:_RPT_PHRS' => /* I18N: ''GEDCOM tag _RPT_PHRS */ new CustomElement(I18N::translate('Report phrase')), 67 'FAM:MARR:_RPT_PHRS2' => /* I18N: ''GEDCOM tag _RPT_PHRS */ new CustomElement(I18N::translate('Report phrase')), 68 'FAM:MARR:_STAT' => new CustomElement(I18N::translate('Status')), 69 'FAM:MARR:_WTITL' => new CustomElement(I18N::translate('Label for wife')), 70 'FAM:_NONE' => new CustomElement(I18N::translate('No children')), 71 'FAM:_TAG' => new CustomElement('Tag'), 72 'FAM:_TAG2' => new CustomElement('Tag #2'), 73 'FAM:_TAG3' => new CustomElement('Tag #3'), 74 'FAM:_TAG4' => new CustomElement('Tag #4'), 75 'FAM:_TAG5' => new CustomElement('Tag #5'), 76 'FAM:_TAG6' => new CustomElement('Tag #6'), 77 'FAM:_TAG7' => new CustomElement('Tag #7'), 78 'FAM:_TAG8' => new CustomElement('Tag #8'), 79 'FAM:_TAG9' => new CustomElement('Tag #9'), 80 'FAM:_UID' => new PafUid(I18N::translate('Unique identifier')), 81 'HEAD:_EVENT_DEFN' => new CustomElement('Event definition'), 82 'HEAD:_EVENT_DEFN:_CONF_FLAG' => new CustomElement(I18N::translate('Private')), 83 'HEAD:_EVENT_DEFN:_DATE_TYPE' => new CustomElement(I18N::translate('Date')), 84 'HEAD:_EVENT_DEFN:_DESC_FLAG' => new CustomElement(I18N::translate('Description')), 85 'HEAD:_EVENT_DEFN:_PLACE_TYPE' => new CustomElement(I18N::translate('Place')), 86 'HEAD:_EVENT_DEFN:_PP_EXCLUDE' => new CustomElement('Exclude event from potential problems report'), 87 'HEAD:_EVENT_DEFN:_SEN1' => new CustomElement('Event sentence definition'), 88 'HEAD:_EVENT_DEFN:_SEN2' => new CustomElement('Event sentence definition'), 89 'HEAD:_EVENT_DEFN:_SEN3' => new CustomElement('Event sentence definition'), 90 'HEAD:_EVENT_DEFN:_SEN4' => new CustomElement('Event sentence definition'), 91 'HEAD:_EVENT_DEFN:_SEN5' => new CustomElement('Event sentence definition'), 92 'HEAD:_EVENT_DEFN:_SEN6' => new CustomElement('Event sentence definition'), 93 'HEAD:_EVENT_DEFN:_SEN7' => new CustomElement('Event sentence definition'), 94 'HEAD:_EVENT_DEFN:_SEN8' => new CustomElement('Event sentence definition'), 95 'HEAD:_EVENT_DEFN:_SENDOF' => new CustomElement('Event sentence, female, date only'), 96 'HEAD:_EVENT_DEFN:_SENDOM' => new CustomElement('Event sentence, male, date only'), 97 'HEAD:_EVENT_DEFN:_SENDOU' => new CustomElement('Event sentence, unknown sex, date only'), 98 'HEAD:_EVENT_DEFN:_SENDPF' => new CustomElement('Event sentence, female, date and place'), 99 'HEAD:_EVENT_DEFN:_SENDPM' => new CustomElement('Event sentence, male, date and place'), 100 'HEAD:_EVENT_DEFN:_SENDPU' => new CustomElement('Event sentence, unknown sex, date and place'), 101 'HEAD:_EVENT_DEFN:_SENF' => new CustomElement('Event sentence, female'), 102 'HEAD:_EVENT_DEFN:_SENM' => new CustomElement('Event sentence, male'), 103 'HEAD:_EVENT_DEFN:_SENPOF' => new CustomElement('Event sentence, unknown sex'), 104 'HEAD:_EVENT_DEFN:_SENPOM' => new CustomElement('Event sentence, female, place only'), 105 'HEAD:_EVENT_DEFN:_SENPOU' => new CustomElement('Event sentence, male, place only'), 106 'HEAD:_EVENT_DEFN:_SENU' => new CustomElement('Event sentence, unknown sex, place only'), 107 'HEAD:_PLAC_DEFN' => new CustomElement('Place definition'), 108 'HEAD:_PLAC_DEFN:_PREP' => new CustomElement('Place preposition'), 109 'INDI:*:ADDR:_EMAIL' => new CustomElement(I18N::translate('Email')), 110 'INDI:*:ADDR:_LIST1' => new CustomElement('Include in the “newsletter” group'), 111 'INDI:*:ADDR:_LIST2' => new CustomElement('Include in the “family association” group'), 112 'INDI:*:ADDR:_LIST3' => new CustomElement('Include in the “birthday” group'), 113 'INDI:*:ADDR:_LIST4' => new CustomElement('Include in the “research” group'), 114 'INDI:*:ADDR:_LIST5' => new CustomElement('Include in the “christmas” group'), 115 'INDI:*:ADDR:_LIST6' => new CustomElement('Include in the “holiday” group'), 116 'INDI:*:ADDR:_NAME' => new CustomElement(I18N::translate('Name of addressee')), 117 'INDI:*:ADDR:_PRIV' => new CustomElement(I18N::translate('Private')), 118 'INDI:*:ADDR:_SORT' => new CustomElement('The spelling of a name to be used when sorting addresses for a report'), 119 'INDI:*:ADDR:_TAG' => new CustomElement('Tag'), 120 'INDI:*:PLAC:_TAG' => new CustomElement('Tag'), 121 'INDI:*:PLAC:_VERI' => new CustomElement(I18N::translate('Verified')), 122 'INDI:*:SOUR:DATE' => new DateValue(I18N::translate('Date')), 123 'INDI:*:SOUR:_VERI' => new CustomElement(I18N::translate('Verified')), 124 'INDI:*:_PRIV' => new CustomElement(I18N::translate('Private')), 125 'INDI:EVEN:_OVER' => new CustomElement('Event sentence override'), 126 'INDI:SOUR:_VERI' => new CustomElement(I18N::translate('Verified')), 127 'INDI:_TAG' => new CustomElement('Tag'), 128 'INDI:_TAG2' => new CustomElement('Tag #2'), 129 'INDI:_TAG3' => new CustomElement('Tag #3'), 130 'INDI:_TAG4' => new CustomElement('Tag #4'), 131 'INDI:_TAG5' => new CustomElement('Tag #5'), 132 'INDI:_TAG6' => new CustomElement('Tag #6'), 133 'INDI:_TAG7' => new CustomElement('Tag #7'), 134 'INDI:_TAG8' => new CustomElement('Tag #8'), 135 'INDI:_TAG9' => new CustomElement('Tag #9'), 136 'INDI:_TODO' => new CustomElement(I18N::translate('Research task')), 137 'INDI:_TODO:PRTY' => new CustomElement(I18N::translate('Priority')), 138 'INDI:_TODO:_CAT' => new CustomElement(I18N::translate('Category')), 139 'INDI:_TODO:_CDATE' => new CustomElement(I18N::translate('Completion date')), 140 'INDI:_TODO:_LOCL' => new CustomElement(I18N::translate('Location')), 141 'INDI:_TODO:_RDATE' => new CustomElement(I18N::translate('Reminder date')), 142 'INDI:_UID' => new PafUid(I18N::translate('Unique identifier')), 143 'INDI:_URL' => new AddressWebPage(I18N::translate('URL')), 144 'OBJE:_DATE' => new CustomElement(I18N::translate('Date')), 145 'OBJE:_PRIM' => new CustomElement(I18N::translate('Highlighted image')), 146 'OBJE:_SCBK' => new CustomElement(I18N::translate('Scrapbook')), 147 'OBJE:_SOUND' => new CustomElement(I18N::translate('Audio')), 148 'OBJE:_TYPE' => new CustomElement(I18N::translate('Type')), 149 'OBJE:_UID' => new PafUid(I18N::translate('Unique identifier')), 150 'REPO:_UID' => new PafUid(I18N::translate('Unique identifier')), 151 'SOUR:_ITALIC' => new CustomElement('The source title should be printed in italic on reports'), 152 'SOUR:_PAREN' => new CustomElement('The source title should be printed within parentheses on reports'), 153 'SOUR:_QUOTED' => new CustomElement('The source title should be printed within quotes on reports'), 154 'SOUR:_TAG' => new CustomElement('Exclude the source citation detail on reports'), 155 'SOUR:_TAG2' => new CustomElement('Exclude the source citation on reports'), 156 'SOUR:_TAG3' => new CustomElement('Include the source citation detail text on reports'), 157 'SOUR:_TAG4' => new CustomElement('Include the source citation detail notes on reports'), 158 'SOUR:_UID' => new PafUid(I18N::translate('Unique identifier')), 159 ]; 160 } 161} 162