xref: /webtrees/app/TreeUser.php (revision 0b4092ed8e31e3588eb143d0ade6c4a411367da8)
1<?php
2/**
3 * webtrees: online genealogy
4 * Copyright (C) 2019 webtrees development team
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16declare(strict_types=1);
17
18namespace Fisharebest\Webtrees;
19
20use Fisharebest\Webtrees\Contracts\UserInterface;
21use Fisharebest\Webtrees\Services\UserService;
22
23/**
24 * A tree can act as a user, for example to send email.
25 */
26class TreeUser implements UserInterface
27{
28    /**
29     * @var Tree
30     */
31    private $tree;
32
33    /**
34     * TreeUser constructor.
35     *
36     * @param Tree $tree
37     */
38    public function __construct(Tree $tree)
39    {
40        $this->tree = $tree;
41    }
42
43    /**
44     * The user‘s internal identifier.
45     *
46     * @return int
47     */
48    public function id(): int
49    {
50        return 0;
51    }
52
53    /**
54     * The users email address.
55     *
56     * @return string
57     */
58    public function email(): string
59    {
60        $user_service = app(UserService::class);
61        $contact_id   = (int) $this->getPreference('CONTACT_USER_ID');
62
63        if ($contact_id === 0) {
64            return '';
65        }
66
67        $contact = $user_service->find($contact_id);
68
69        if ($contact instanceof User) {
70            return $contact->email();
71        }
72
73        return '';
74    }
75
76    /**
77     * @param string $setting_name
78     * @param string $default
79     *
80     * @return string
81     */
82    public function getPreference(string $setting_name, string $default = ''): string
83    {
84        return $default;
85    }
86
87    /**
88     * The user‘s real name.
89     *
90     * @return string
91     */
92    public function realName(): string
93    {
94        return $this->tree->title();
95    }
96
97    /**
98     * The user‘s login name.
99     *
100     * @return string
101     */
102    public function userName(): string
103    {
104        return '';
105    }
106
107    /**
108     * @param string $setting_name
109     * @param string $setting_value
110     *
111     * @return UserInterface
112     */
113    public function setPreference(string $setting_name, string $setting_value): UserInterface
114    {
115        return $this;
116    }
117}
118