xref: /webtrees/app/CustomTags/FamilyTreeBuilder.php (revision d11be7027e34e3121be11cc025421873364403f9)
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\CustomElement;
25use Fisharebest\Webtrees\Elements\DateValue;
26use Fisharebest\Webtrees\Elements\NamePersonal;
27use Fisharebest\Webtrees\Elements\PlaceName;
28use Fisharebest\Webtrees\I18N;
29
30/**
31 * GEDCOM files created by FamilySearch
32 *
33 * @see https://www.familysearch.org/en/
34 */
35class FamilyTreeBuilder implements CustomTagInterface
36{
37    /**
38     * The name of the application.
39     *
40     * @return string
41     */
42    public function name(): string
43    {
44        return 'FamilyTreeBuilder';
45    }
46
47    /**
48     * Tags created by this application.
49     *
50     * @return array<string,ElementInterface>
51     */
52    public function tags(): array
53    {
54        return [
55            '*:_UPD'              => /* I18N: GEDCOM tag _UPD */ new CustomElement(I18N::translate('Updated at')), // e.g. "1 _UPD 14 APR 2012 00:14:10 GMT-5"
56            'INDI:NAME:_AKA'      => new NamePersonal(I18N::translate('Also known as'), []),
57            'OBJE:_ALBUM'         => new CustomElement(I18N::translate('Album')), // XREF to an album
58            'OBJE:_DATE'          => new DateValue(I18N::translate('Date')),
59            'OBJE:_FILESIZE'      => new CustomElement(I18N::translate('File size')),
60            'OBJE:_PHOTO_RIN'     => new CustomElement(I18N::translate('Record ID number')),
61            'OBJE:_PLACE'         => new PlaceName(I18N::translate('Place')),
62            '_ALBUM:_PHOTO'       => new CustomElement(I18N::translate('Photo')),
63            '_ALBUM:_PHOTO:_PRIN' => new CustomElement(I18N::translate('Highlighted image')),
64        ];
65    }
66}
67