xref: /webtrees/app/Elements/Uid.php (revision 701f5d180b85b9d3e0747b6ddc9e9d64dd73d0d6)
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\Tree;
23use Ramsey\Uuid\Exception\RandomSourceException;
24use Ramsey\Uuid\Uuid;
25
26use function dechex;
27use function hexdec;
28use function strtolower;
29use function strtoupper;
30use function strtr;
31use function substr;
32
33/**
34 * UID fields
35 */
36class Uid extends AbstractElement
37{
38    protected const MAXIMUM_LENGTH = 36;
39
40    /**
41     * Create a default value for this element.
42     *
43     * @param Tree $tree
44     *
45     * @return string
46     */
47    public function default(Tree $tree): string
48    {
49        try {
50            if ($tree->getPreference('GENERATE_UIDS') === '1') {
51                return strtolower(Uuid::uuid4()->toString());
52            }
53        } catch (RandomSourceException $ex) {
54        }
55
56        return '';
57    }
58}
59