multiversion-8.x-1.0-beta34/src/CacheBackendDecorator.php
src/CacheBackendDecorator.php
<?php
namespace Drupal\multiversion;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\multiversion\Workspace\WorkspaceManagerInterface;
class CacheBackendDecorator implements CacheBackendInterface {
/**
* @var \Drupal\Core\Cache\CacheBackendInterface
*/
protected $decorated;
/**
* @var \Drupal\multiversion\Workspace\WorkspaceManagerInterface
*/
protected $workspaceManager;
/**
* Constructor
*
* @param \Drupal\Core\Cache\CacheBackendInterface $decorated
* @param \Drupal\multiversion\Workspace\WorkspaceManagerInterface $workspace_manager
*/
public function __construct(CacheBackendInterface $decorated, WorkspaceManagerInterface $workspace_manager) {
$this->decorated = $decorated;
$this->workspaceManager = $workspace_manager;
}
/**
* Helper method to decorate a cache ID.
*
* @param string $cid
* @return string
*/
protected function decorate($cid) {
return "$cid:" . $this->workspaceManager->getActiveWorkspaceId();
}
/**
* {@inheritdoc}
*/
public function get($cid, $allow_invalid = FALSE) {
$cid = $this->decorate($cid);
return $this->decorated->get($cid, $allow_invalid);
}
/**
* {@inheritdoc}
*/
public function getMultiple(&$cids, $allow_invalid = FALSE) {
foreach ($cids as &$cid) {
$cid = $this->decorate($cid);
}
return $this->decorated->getMultiple($cids, $allow_invalid);
}
/**
* {@inheritdoc}
*/
public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = []) {
$cid = $this->decorate($cid);
return $this->decorated->set($cid, $data, $expire, $tags);
}
/**
* {@inheritdoc}
*/
public function setMultiple(array $items) {
$decorated_items = [];
foreach ($items as $cid => $item) {
$decorated_items[$this->decorate($cid)] = $item;
// Save some memory.
unset($items[$cid]);
}
return $this->setMultiple($decorated_items);
}
/**
* {@inheritdoc}
*/
public function delete($cid) {
$cid = $this->decorate($cid);
return $this->delete($cid);
}
/**
* {@inheritdoc}
*/
public function deleteMultiple(array $cids) {
foreach ($cids as &$cid) {
$cid = $this->decorate($cid);
}
return $this->decorated->deleteMultiple($cids);
}
/**
* {@inheritdoc}
*/
public function deleteAll() {
return $this->decorated->deleteAll();
}
/**
* {@inheritdoc}
*/
public function invalidate($cid) {
$cid = $this->decorate($cid);
return $this->decorated->invalidate($cid);
}
/**
* {@inheritdoc}
*/
public function invalidateMultiple(array $cids) {
foreach ($cids as &$cid) {
$cid = $this->decorate($cid);
}
return $this->decorated->invalidateMultiple($cids);
}
/**
* {@inheritdoc}
*/
public function invalidateAll() {
return $this->decorated->invalidateAll();
}
/**
* {@inheritdoc}
*/
public function garbageCollection() {
return $this->decorated->garbageCollection();
}
/**
* {@inheritdoc}
*/
public function removeBin() {
return $this->decorated->removeBin();
}
}
