Mercurial > hg > isophonics-drupal-site
view core/modules/user/src/ContextProvider/CurrentUserContext.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line source
<?php namespace Drupal\user\ContextProvider; use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Entity\EntityManagerInterface; use Drupal\Core\Plugin\Context\Context; use Drupal\Core\Plugin\Context\ContextDefinition; use Drupal\Core\Plugin\Context\ContextProviderInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; /** * Sets the current user as a context. */ class CurrentUserContext implements ContextProviderInterface { use StringTranslationTrait; /** * The current user. * * @var \Drupal\Core\Session\AccountInterface */ protected $account; /** * The user storage. * * @var \Drupal\user\UserStorageInterface */ protected $userStorage; /** * Constructs a new CurrentUserContext. * * @param \Drupal\Core\Session\AccountInterface $account * The current user. * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager * The entity manager. */ public function __construct(AccountInterface $account, EntityManagerInterface $entity_manager) { $this->account = $account; $this->userStorage = $entity_manager->getStorage('user'); } /** * {@inheritdoc} */ public function getRuntimeContexts(array $unqualified_context_ids) { $current_user = $this->userStorage->load($this->account->id()); if ($current_user) { // @todo Do not validate protected fields to avoid bug in TypedData, // remove this in https://www.drupal.org/project/drupal/issues/2934192. $current_user->_skipProtectedUserFieldConstraint = TRUE; } $context = new Context(new ContextDefinition('entity:user', $this->t('Current user')), $current_user); $cacheability = new CacheableMetadata(); $cacheability->setCacheContexts(['user']); $context->addCacheableDependency($cacheability); $result = [ 'current_user' => $context, ]; return $result; } /** * {@inheritdoc} */ public function getAvailableContexts() { return $this->getRuntimeContexts([]); } }