summaryrefslogtreecommitdiff
path: root/resources/views/fact-add-new.phtml
blob: 709ccc342114837112a8b273e892fae7e504cd02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php

declare(strict_types=1);

use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Family;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Registry;
use Fisharebest\Webtrees\Services\GedcomEditService;

/**
 * @var GedcomRecord $record
 */

?>

<?php
$add_facts = (new GedcomEditService())->factsToAdd($record, false);

// Add from pick list
switch ($record->tag()) {
    case Individual::RECORD_TYPE:
        $quick_facts  = array_filter(explode(',', $record->tree()->getPreference('INDI_FACTS_QUICK')));
        $unique_facts = [
            'ADOP',
            'AFN',
            'BAPL',
            'BAPM',
            'BARM',
            'BASM',
            'BIRT',
            'BURI',
            'CAST',
            'CHAN',
            'CHR',
            'CHRA',
            'CONF',
            'CONL',
            'CREM',
            'DEAT',
            'ENDL',
            'FCOM',
            'GRAD',
            'NCHI',
            'NMR',
            'ORDN',
            'PROB',
            'REFN',
            'RELI',
            'RESN',
            'RETI',
            'RFN',
            'RIN',
            'SEX',
            'SLGC',
            'SSN',
            'WILL',
        ];
        break;

    case Family::RECORD_TYPE:
        $quick_facts  = array_filter(explode(',', $record->tree()->getPreference('FAM_FACTS_QUICK')));
        $unique_facts = [
            'DIV',
            'DIVF',
            'ENGA',
            'MARR',
        ];
        break;

    default:
        $quick_facts  = [];
        $unique_facts = [];
        break;
}

// Filter existing tags
$filter_fn = static fn (string $tag): bool => !in_array($tag, $unique_facts, true) || $record->facts([$tag])->isEmpty();

$quick_facts = array_filter($quick_facts, $filter_fn);


// Create a label for a subtag
$label_fn = static fn (string $subtag): string => Registry::elementFactory()->make($record->tag() . ':' . $subtag)->label();

$quick_facts = array_combine($quick_facts, array_map($label_fn, $quick_facts));
$add_facts   = array_combine($add_facts, array_map($label_fn, $add_facts));

uasort($add_facts, I18N::comparator());

if (!Auth::canUploadMedia($record->tree(), Auth::user())) {
    unset($add_facts['OBJE'], $quick_facts['OBJE']);
}

echo view('edit/add-fact-row', [
    'add_facts'   => $add_facts,
    'quick_facts' => $quick_facts,
    'record'      => $record,
]);