xref: /webtrees/app/TreeUser.php (revision a2e04925bc20e9db3cb1f993405c8db01f5fb296)
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;
21
22use Fisharebest\Webtrees\Contracts\UserInterface;
23use Fisharebest\Webtrees\Services\UserService;
24
25/**
26 * A tree can act as a user, for example to send email.
27 */
28class TreeUser implements UserInterface
29{
30    private Tree $tree;
31
32    /**
33     * @param Tree $tree
34     */
35    public function __construct(Tree $tree)
36    {
37        $this->tree = $tree;
38    }
39
40    /**
41     * The user‘s internal identifier.
42     *
43     * @return int
44     */
45    public function id(): int
46    {
47        return 0;
48    }
49
50    /**
51     * The users email address.
52     *
53     * @return string
54     */
55    public function email(): string
56    {
57        $user_service = Registry::container()->get(UserService::class);
58        $contact_id   = (int) $this->getPreference('CONTACT_USER_ID');
59
60        if ($contact_id !== 0) {
61            $contact = $user_service->find($contact_id);
62
63            if ($contact instanceof User) {
64                return $contact->email();
65            }
66        }
67
68        return Site::getPreference('SMTP_FROM_NAME');
69    }
70
71    /**
72     * @param string $setting_name
73     * @param string $default
74     *
75     * @return string
76     */
77    public function getPreference(string $setting_name, string $default = ''): string
78    {
79        return $default;
80    }
81
82    /**
83     * The user‘s real name.
84     *
85     * @return string
86     */
87    public function realName(): string
88    {
89        return $this->tree->title();
90    }
91
92    /**
93     * The user‘s login name.
94     *
95     * @return string
96     */
97    public function userName(): string
98    {
99        return '';
100    }
101
102    /**
103     * @param string $setting_name
104     * @param string $setting_value
105     *
106     * @return void
107     */
108    public function setPreference(string $setting_name, string $setting_value): void
109    {
110    }
111}
112