xref: /webtrees/app/Elements/XrefFamily.php (revision cfb84ff6ed17b5cbf0afb82e6dc7c9f1f86e4432)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2022 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\Elements;
21
22use Fisharebest\Webtrees\I18N;
23use Fisharebest\Webtrees\Registry;
24use Fisharebest\Webtrees\Tree;
25
26use function trim;
27use function view;
28
29/**
30 * XREF:FAM := {Size=1:22}
31 * A pointer to, or a cross-reference identifier of, a family record.
32 */
33class XrefFamily extends AbstractXrefElement
34{
35    /**
36     * An edit control for this data.
37     *
38     * @param string $id
39     * @param string $name
40     * @param string $value
41     * @param Tree   $tree
42     *
43     * @return string
44     */
45    public function edit(string $id, string $name, string $value, Tree $tree): string
46    {
47        return view('components/select-family', [
48            'id'     => $id,
49            'name'   => $name,
50            'family' => Registry::familyFactory()->make(trim($value, '@'), $tree),
51            'tree'   => $tree,
52            'at'     => '@',
53        ]);
54    }
55
56    /**
57     * Display the value of this type of element.
58     *
59     * @param string $value
60     * @param Tree   $tree
61     *
62     * @return string
63     */
64    public function value(string $value, Tree $tree): string
65    {
66        return $this->valueXrefLink($value, $tree, Registry::familyFactory());
67    }
68}
69