xref: /webtrees/app/GuestUser.php (revision e2cbf57a1b80fdeccb7ccc9b79b7aa02707dbde2)
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;
21
22/**
23 * A site visitor.
24 */
25class GuestUser implements UserInterface
26{
27    /**
28     * @var string
29     */
30    private $email;
31
32    /**
33     * @var string
34     */
35    private $real_name;
36
37    /**
38     * GuestUser constructor.
39     *
40     * @param string $email
41     * @param string $real_name
42     */
43    public function __construct(string $email = 'GUEST_USER', string $real_name = 'GUEST_USER')
44    {
45        $this->email = $email;
46        $this->real_name = $real_name;
47    }
48
49    /**
50     * The user‘s internal identifier.
51     *
52     * @return int
53     */
54    public function id(): int
55    {
56        return 0;
57    }
58
59    /**
60     * The users email address.
61     *
62     * @return string
63     */
64    public function email(): string
65    {
66        return $this->email;
67    }
68
69    /**
70     * The user‘s real name.
71     *
72     * @return string
73     */
74    public function realName(): string
75    {
76        return $this->real_name;
77    }
78
79    /**
80     * The user‘s login name.
81     *
82     * @return string
83     */
84    public function userName(): string
85    {
86        return '';
87    }
88
89    /**
90     * @param string $setting_name
91     * @param string $default
92     *
93     * @return string
94     */
95    public function getPreference(string $setting_name, string $default = ''): string
96    {
97        return Session::get('_GUEST_' . $setting_name, $default);
98    }
99
100    /**
101     * @param string $setting_name
102     * @param string $setting_value
103     *
104     * @return UserInterface
105     */
106    public function setPreference(string $setting_name, string $setting_value): UserInterface
107    {
108        Session::put('_GUEST_' . $setting_name, $setting_value);
109
110        return $this;
111    }
112}
113