Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/State/State.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/State/State.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,109 @@ +<?php + +namespace Drupal\Core\State; + +use Drupal\Core\Cache\CacheBackendInterface; +use Drupal\Core\Cache\CacheCollector; +use Drupal\Core\KeyValueStore\KeyValueFactoryInterface; +use Drupal\Core\Lock\LockBackendInterface; + +/** + * Provides the state system using a key value store. + */ +class State extends CacheCollector implements StateInterface { + + /** + * The key value store to use. + * + * @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface + */ + protected $keyValueStore; + + /** + * Constructs a State object. + * + * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory + * The key value store to use. + * @param \Drupal\Core\Cache\CacheBackendInterface $cache + * The cache backend. + * @param \Drupal\Core\Lock\LockBackendInterface $lock + * The lock backend. + */ + public function __construct(KeyValueFactoryInterface $key_value_factory, CacheBackendInterface $cache, LockBackendInterface $lock) { + parent::__construct('state', $cache, $lock); + $this->keyValueStore = $key_value_factory->get('state'); + } + + /** + * {@inheritdoc} + */ + public function get($key, $default = NULL) { + $value = parent::get($key); + return $value !== NULL ? $value : $default; + } + + /** + * {@inheritdoc} + */ + protected function resolveCacheMiss($key) { + $value = $this->keyValueStore->get($key); + $this->storage[$key] = $value; + $this->persist($key); + return $value; + } + + /** + * {@inheritdoc} + */ + public function getMultiple(array $keys) { + $values = []; + foreach ($keys as $key) { + $values[$key] = $this->get($key); + } + return $values; + } + + /** + * {@inheritdoc} + */ + public function set($key, $value) { + parent::set($key, $value); + $this->keyValueStore->set($key, $value); + } + + /** + * {@inheritdoc} + */ + public function setMultiple(array $data) { + foreach ($data as $key => $value) { + parent::set($key, $value); + } + $this->keyValueStore->setMultiple($data); + } + + /** + * {@inheritdoc} + */ + public function delete($key) { + parent::delete($key); + $this->keyValueStore->delete($key); + } + + /** + * {@inheritdoc} + */ + public function deleteMultiple(array $keys) { + foreach ($keys as $key) { + parent::delete($key); + } + $this->keyValueStore->deleteMultiple($keys); + } + + /** + * {@inheritdoc} + */ + public function resetCache() { + $this->clear(); + } + +}