Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Session/UserSession.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Session/UserSession.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,208 @@ +<?php + +namespace Drupal\Core\Session; + +/** + * An implementation of the user account interface for the global user. + * + * @todo: Change all properties to protected. + */ +class UserSession implements AccountInterface { + + /** + * User ID. + * + * @var int + */ + protected $uid = 0; + + /** + * List of the roles this user has. + * + * Defaults to the anonymous role. + * + * @var array + */ + protected $roles = [AccountInterface::ANONYMOUS_ROLE]; + + /** + * The Unix timestamp when the user last accessed the site. + * + * @var string. + */ + protected $access; + + /** + * The name of this account. + * + * @var string + */ + public $name = ''; + + /** + * The preferred language code of the account. + * + * @var string + */ + protected $preferred_langcode; + + /** + * The preferred administrative language code of the account. + * + * @var string + */ + protected $preferred_admin_langcode; + + /** + * The email address of this account. + * + * @var string + */ + protected $mail; + + /** + * The timezone of this account. + * + * @var string + */ + protected $timezone; + + /** + * Constructs a new user session. + * + * @param array $values + * Array of initial values for the user session. + */ + public function __construct(array $values = []) { + foreach ($values as $key => $value) { + $this->$key = $value; + } + } + + /** + * {@inheritdoc} + */ + public function id() { + return $this->uid; + } + + /** + * {@inheritdoc} + */ + public function getRoles($exclude_locked_roles = FALSE) { + $roles = $this->roles; + + if ($exclude_locked_roles) { + $roles = array_values(array_diff($roles, [AccountInterface::ANONYMOUS_ROLE, AccountInterface::AUTHENTICATED_ROLE])); + } + + return $roles; + } + + /** + * {@inheritdoc} + */ + public function hasPermission($permission) { + // User #1 has all privileges. + if ((int) $this->id() === 1) { + return TRUE; + } + + return $this->getRoleStorage()->isPermissionInRoles($permission, $this->getRoles()); + } + + /** + * {@inheritdoc} + */ + public function isAuthenticated() { + return $this->uid > 0; + } + + /** + * {@inheritdoc} + */ + public function isAnonymous() { + return $this->uid == 0; + } + + /** + * {@inheritdoc} + */ + public function getPreferredLangcode($fallback_to_default = TRUE) { + $language_list = \Drupal::languageManager()->getLanguages(); + if (!empty($this->preferred_langcode) && isset($language_list[$this->preferred_langcode])) { + return $language_list[$this->preferred_langcode]->getId(); + } + else { + return $fallback_to_default ? \Drupal::languageManager()->getDefaultLanguage()->getId() : ''; + } + } + + /** + * {@inheritdoc} + */ + public function getPreferredAdminLangcode($fallback_to_default = TRUE) { + $language_list = \Drupal::languageManager()->getLanguages(); + if (!empty($this->preferred_admin_langcode) && isset($language_list[$this->preferred_admin_langcode])) { + return $language_list[$this->preferred_admin_langcode]->getId(); + } + else { + return $fallback_to_default ? \Drupal::languageManager()->getDefaultLanguage()->getId() : ''; + } + } + + /** + * {@inheritdoc} + */ + public function getUsername() { + return $this->getAccountName(); + } + + /** + * {@inheritdoc} + */ + public function getAccountName() { + return $this->name; + } + + /** + * {@inheritdoc} + */ + public function getDisplayName() { + $name = $this->name ?: \Drupal::config('user.settings')->get('anonymous'); + \Drupal::moduleHandler()->alter('user_format_name', $name, $this); + return $name; + } + + /** + * {@inheritdoc} + */ + public function getEmail() { + return $this->mail; + } + + /** + * {@inheritdoc} + */ + public function getTimeZone() { + return $this->timezone; + } + + /** + * {@inheritdoc} + */ + public function getLastAccessedTime() { + return $this->access; + } + + /** + * Returns the role storage object. + * + * @return \Drupal\user\RoleStorageInterface + * The role storage object. + */ + protected function getRoleStorage() { + return \Drupal::entityManager()->getStorage('user_role'); + } + +}