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');
+  }
+
+}