annotate core/lib/Drupal/Core/Session/UserSession.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Core\Session;
Chris@0 4
Chris@0 5 /**
Chris@0 6 * An implementation of the user account interface for the global user.
Chris@0 7 *
Chris@0 8 * @todo: Change all properties to protected.
Chris@0 9 */
Chris@0 10 class UserSession implements AccountInterface {
Chris@0 11
Chris@0 12 /**
Chris@0 13 * User ID.
Chris@0 14 *
Chris@0 15 * @var int
Chris@0 16 */
Chris@0 17 protected $uid = 0;
Chris@0 18
Chris@0 19 /**
Chris@0 20 * List of the roles this user has.
Chris@0 21 *
Chris@0 22 * Defaults to the anonymous role.
Chris@0 23 *
Chris@0 24 * @var array
Chris@0 25 */
Chris@0 26 protected $roles = [AccountInterface::ANONYMOUS_ROLE];
Chris@0 27
Chris@0 28 /**
Chris@0 29 * The Unix timestamp when the user last accessed the site.
Chris@0 30 *
Chris@17 31 * @var string
Chris@0 32 */
Chris@0 33 protected $access;
Chris@0 34
Chris@0 35 /**
Chris@0 36 * The name of this account.
Chris@0 37 *
Chris@0 38 * @var string
Chris@0 39 */
Chris@0 40 public $name = '';
Chris@0 41
Chris@0 42 /**
Chris@0 43 * The preferred language code of the account.
Chris@0 44 *
Chris@0 45 * @var string
Chris@0 46 */
Chris@0 47 protected $preferred_langcode;
Chris@0 48
Chris@0 49 /**
Chris@0 50 * The preferred administrative language code of the account.
Chris@0 51 *
Chris@0 52 * @var string
Chris@0 53 */
Chris@0 54 protected $preferred_admin_langcode;
Chris@0 55
Chris@0 56 /**
Chris@0 57 * The email address of this account.
Chris@0 58 *
Chris@0 59 * @var string
Chris@0 60 */
Chris@0 61 protected $mail;
Chris@0 62
Chris@0 63 /**
Chris@0 64 * The timezone of this account.
Chris@0 65 *
Chris@0 66 * @var string
Chris@0 67 */
Chris@0 68 protected $timezone;
Chris@0 69
Chris@0 70 /**
Chris@0 71 * Constructs a new user session.
Chris@0 72 *
Chris@0 73 * @param array $values
Chris@0 74 * Array of initial values for the user session.
Chris@0 75 */
Chris@0 76 public function __construct(array $values = []) {
Chris@0 77 foreach ($values as $key => $value) {
Chris@0 78 $this->$key = $value;
Chris@0 79 }
Chris@0 80 }
Chris@0 81
Chris@0 82 /**
Chris@0 83 * {@inheritdoc}
Chris@0 84 */
Chris@0 85 public function id() {
Chris@0 86 return $this->uid;
Chris@0 87 }
Chris@0 88
Chris@0 89 /**
Chris@0 90 * {@inheritdoc}
Chris@0 91 */
Chris@0 92 public function getRoles($exclude_locked_roles = FALSE) {
Chris@0 93 $roles = $this->roles;
Chris@0 94
Chris@0 95 if ($exclude_locked_roles) {
Chris@0 96 $roles = array_values(array_diff($roles, [AccountInterface::ANONYMOUS_ROLE, AccountInterface::AUTHENTICATED_ROLE]));
Chris@0 97 }
Chris@0 98
Chris@0 99 return $roles;
Chris@0 100 }
Chris@0 101
Chris@0 102 /**
Chris@0 103 * {@inheritdoc}
Chris@0 104 */
Chris@0 105 public function hasPermission($permission) {
Chris@0 106 // User #1 has all privileges.
Chris@0 107 if ((int) $this->id() === 1) {
Chris@0 108 return TRUE;
Chris@0 109 }
Chris@0 110
Chris@0 111 return $this->getRoleStorage()->isPermissionInRoles($permission, $this->getRoles());
Chris@0 112 }
Chris@0 113
Chris@0 114 /**
Chris@0 115 * {@inheritdoc}
Chris@0 116 */
Chris@0 117 public function isAuthenticated() {
Chris@0 118 return $this->uid > 0;
Chris@0 119 }
Chris@0 120
Chris@0 121 /**
Chris@0 122 * {@inheritdoc}
Chris@0 123 */
Chris@0 124 public function isAnonymous() {
Chris@0 125 return $this->uid == 0;
Chris@0 126 }
Chris@0 127
Chris@0 128 /**
Chris@0 129 * {@inheritdoc}
Chris@0 130 */
Chris@0 131 public function getPreferredLangcode($fallback_to_default = TRUE) {
Chris@0 132 $language_list = \Drupal::languageManager()->getLanguages();
Chris@0 133 if (!empty($this->preferred_langcode) && isset($language_list[$this->preferred_langcode])) {
Chris@0 134 return $language_list[$this->preferred_langcode]->getId();
Chris@0 135 }
Chris@0 136 else {
Chris@0 137 return $fallback_to_default ? \Drupal::languageManager()->getDefaultLanguage()->getId() : '';
Chris@0 138 }
Chris@0 139 }
Chris@0 140
Chris@0 141 /**
Chris@0 142 * {@inheritdoc}
Chris@0 143 */
Chris@0 144 public function getPreferredAdminLangcode($fallback_to_default = TRUE) {
Chris@0 145 $language_list = \Drupal::languageManager()->getLanguages();
Chris@0 146 if (!empty($this->preferred_admin_langcode) && isset($language_list[$this->preferred_admin_langcode])) {
Chris@0 147 return $language_list[$this->preferred_admin_langcode]->getId();
Chris@0 148 }
Chris@0 149 else {
Chris@0 150 return $fallback_to_default ? \Drupal::languageManager()->getDefaultLanguage()->getId() : '';
Chris@0 151 }
Chris@0 152 }
Chris@0 153
Chris@0 154 /**
Chris@0 155 * {@inheritdoc}
Chris@0 156 */
Chris@0 157 public function getUsername() {
Chris@18 158 @trigger_error('\Drupal\Core\Session\AccountInterface::getUsername() is deprecated in Drupal 8.0.0, will be removed before Drupal 9.0.0. Use \Drupal\Core\Session\AccountInterface::getAccountName() or \Drupal\user\UserInterface::getDisplayName() instead. See https://www.drupal.org/node/2572493', E_USER_DEPRECATED);
Chris@0 159 return $this->getAccountName();
Chris@0 160 }
Chris@0 161
Chris@0 162 /**
Chris@0 163 * {@inheritdoc}
Chris@0 164 */
Chris@0 165 public function getAccountName() {
Chris@0 166 return $this->name;
Chris@0 167 }
Chris@0 168
Chris@0 169 /**
Chris@0 170 * {@inheritdoc}
Chris@0 171 */
Chris@0 172 public function getDisplayName() {
Chris@0 173 $name = $this->name ?: \Drupal::config('user.settings')->get('anonymous');
Chris@0 174 \Drupal::moduleHandler()->alter('user_format_name', $name, $this);
Chris@0 175 return $name;
Chris@0 176 }
Chris@0 177
Chris@0 178 /**
Chris@0 179 * {@inheritdoc}
Chris@0 180 */
Chris@0 181 public function getEmail() {
Chris@0 182 return $this->mail;
Chris@0 183 }
Chris@0 184
Chris@0 185 /**
Chris@0 186 * {@inheritdoc}
Chris@0 187 */
Chris@0 188 public function getTimeZone() {
Chris@0 189 return $this->timezone;
Chris@0 190 }
Chris@0 191
Chris@0 192 /**
Chris@0 193 * {@inheritdoc}
Chris@0 194 */
Chris@0 195 public function getLastAccessedTime() {
Chris@0 196 return $this->access;
Chris@0 197 }
Chris@0 198
Chris@0 199 /**
Chris@0 200 * Returns the role storage object.
Chris@0 201 *
Chris@0 202 * @return \Drupal\user\RoleStorageInterface
Chris@0 203 * The role storage object.
Chris@0 204 */
Chris@0 205 protected function getRoleStorage() {
Chris@0 206 return \Drupal::entityManager()->getStorage('user_role');
Chris@0 207 }
Chris@0 208
Chris@0 209 }