1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2019 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 <http://www.gnu.org/licenses/>. 16 */ 17 18declare(strict_types=1); 19 20namespace Fisharebest\Webtrees\Contracts; 21 22/** 23 * behavior required of a user object. 24 */ 25interface UserInterface 26{ 27 // For historic reasons, user preferences have inconsistent and confusing names. 28 public const PREF_AUTO_ACCEPT_EDITS = 'auto_accept'; 29 public const PREF_CONTACT_METHOD = 'contactmethod'; 30 public const PREF_IS_ACCOUNT_APPROVED = 'verified_by_admin'; 31 public const PREF_IS_ADMINISTRATOR = 'canadmin'; 32 public const PREF_IS_EMAIL_VERIFIED = 'verified'; 33 public const PREF_IS_VISIBLE_ONLINE = 'visibleonline'; 34 public const PREF_LANGUAGE = 'language'; 35 public const PREF_NEW_ACCOUNT_COMMENT = 'comment'; 36 public const PREF_TIMESTAMP_REGISTERED = 'reg_timestamp'; 37 public const PREF_TIMESTAMP_ACTIVE = 'sessiontime'; 38 public const PREF_TIME_ZONE = 'TIMEZONE'; 39 public const PREF_THEME = 'theme'; 40 public const PREF_VERIFICATION_TOKEN = 'reg_hashcode'; 41 42 // For historic reasons, user-tree preferences have inconsistent and confusing names. 43 public const PREF_TREE_ACCOUNT_XREF = 'gedcomid'; 44 public const PREF_TREE_DEFAULT_XREF = 'rootid'; 45 public const PREF_TREE_PATH_LENGTH = 'RELATIONSHIP_PATH_LENGTH'; 46 public const PREF_TREE_ROLE = 'canedit'; 47 48 // For historic reasons, roles have inconsistent and confusing names. 49 public const ROLE_VISITOR = 'none'; 50 public const ROLE_MEMBER = 'access'; 51 public const ROLE_EDITOR = 'edit'; 52 public const ROLE_MODERATOR = 'accept'; 53 public const ROLE_MANAGER = 'admin'; 54 55 /** 56 * The user‘s internal identifier 57 * 58 * @return int 59 */ 60 public function id(): int; 61 62 /** 63 * The users email address. 64 * 65 * @return string 66 */ 67 public function email(): string; 68 69 /** 70 * The user‘s real name. 71 * 72 * @return string 73 */ 74 public function realName(): string; 75 76 /** 77 * The user‘s login name. 78 * 79 * @return string 80 */ 81 public function userName(): string; 82 83 /** 84 * @param string $setting_name 85 * @param string $default 86 * 87 * @return string 88 */ 89 public function getPreference(string $setting_name, string $default = ''): string; 90 91 /** 92 * @param string $setting_name 93 * @param string $setting_value 94 * 95 * @return void 96 */ 97 public function setPreference(string $setting_name, string $setting_value): void; 98} 99