Mercurial > hg > isophonics-drupal-site
diff core/modules/workspaces/src/WorkspaceCacheContext.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/workspaces/src/WorkspaceCacheContext.php Thu Feb 28 13:21:36 2019 +0000 @@ -0,0 +1,57 @@ +<?php + +namespace Drupal\workspaces; + +use Drupal\Core\Cache\CacheableMetadata; +use Drupal\Core\Cache\Context\CacheContextInterface; + +/** + * Defines the WorkspaceCacheContext service, for "per workspace" caching. + * + * Cache context ID: 'workspace'. + */ +class WorkspaceCacheContext implements CacheContextInterface { + + /** + * The workspace manager. + * + * @var \Drupal\workspaces\WorkspaceManagerInterface + */ + protected $workspaceManager; + + /** + * Constructs a new WorkspaceCacheContext service. + * + * @param \Drupal\workspaces\WorkspaceManagerInterface $workspace_manager + * The workspace manager. + */ + public function __construct(WorkspaceManagerInterface $workspace_manager) { + $this->workspaceManager = $workspace_manager; + } + + /** + * {@inheritdoc} + */ + public static function getLabel() { + return t('Workspace'); + } + + /** + * {@inheritdoc} + */ + public function getContext() { + return $this->workspaceManager->getActiveWorkspace()->id(); + } + + /** + * {@inheritdoc} + */ + public function getCacheableMetadata($type = NULL) { + // The active workspace will always be stored in the user's session. + $cacheability = new CacheableMetadata(); + $cacheability->addCacheContexts(['session']); + + return $cacheability; + } + +}