Chris@0: storage = $storage; Chris@0: $this->collection = $collection; Chris@0: $this->replacementData[$collection] = []; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function exists($name) { Chris@0: return isset($this->replacementData[$this->collection][$name]) || $this->storage->exists($name); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function read($name) { Chris@0: if (isset($this->replacementData[$this->collection][$name])) { Chris@0: return $this->replacementData[$this->collection][$name]; Chris@0: } Chris@0: return $this->storage->read($name); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function readMultiple(array $names) { Chris@0: $data = $this->storage->readMultiple(($names)); Chris@0: foreach ($names as $name) { Chris@0: if (isset($this->replacementData[$this->collection][$name])) { Chris@0: $data[$name] = $this->replacementData[$this->collection][$name]; Chris@0: } Chris@0: } Chris@0: return $data; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function write($name, array $data) { Chris@0: if (isset($this->replacementData[$this->collection][$name])) { Chris@0: unset($this->replacementData[$this->collection][$name]); Chris@0: } Chris@0: return $this->storage->write($name, $data); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function delete($name) { Chris@0: if (isset($this->replacementData[$this->collection][$name])) { Chris@0: unset($this->replacementData[$this->collection][$name]); Chris@0: } Chris@0: return $this->storage->delete($name); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function rename($name, $new_name) { Chris@0: if (isset($this->replacementData[$this->collection][$name])) { Chris@0: $this->replacementData[$this->collection][$new_name] = $this->replacementData[$this->collection][$name]; Chris@0: unset($this->replacementData[$this->collection][$name]); Chris@0: } Chris@0: return $this->storage->rename($name, $new_name); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function encode($data) { Chris@0: return $this->storage->encode($data); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function decode($raw) { Chris@0: return $this->storage->decode($raw); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function listAll($prefix = '') { Chris@0: $names = $this->storage->listAll($prefix); Chris@0: $additional_names = []; Chris@0: if ($prefix === '') { Chris@0: $additional_names = array_keys($this->replacementData[$this->collection]); Chris@0: } Chris@0: else { Chris@0: foreach (array_keys($this->replacementData[$this->collection]) as $name) { Chris@0: if (strpos($name, $prefix) === 0) { Chris@0: $additional_names[] = $name; Chris@0: } Chris@0: } Chris@0: } Chris@0: if (!empty($additional_names)) { Chris@0: $names = array_unique(array_merge($names, $additional_names)); Chris@0: } Chris@0: return $names; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function deleteAll($prefix = '') { Chris@0: if ($prefix === '') { Chris@0: $this->replacementData[$this->collection] = []; Chris@0: } Chris@0: else { Chris@0: foreach (array_keys($this->replacementData[$this->collection]) as $name) { Chris@0: if (strpos($name, $prefix) === 0) { Chris@0: unset($this->replacementData[$this->collection][$name]); Chris@0: } Chris@0: } Chris@0: } Chris@0: return $this->storage->deleteAll($prefix); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function createCollection($collection) { Chris@0: return new static( Chris@0: $this->storage->createCollection($collection), Chris@0: $collection Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getAllCollectionNames() { Chris@0: return $this->storage->getAllCollectionNames(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getCollectionName() { Chris@0: return $this->collection; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Replaces the configuration object data with the supplied data. Chris@0: * Chris@0: * @param $name Chris@0: * The configuration object name whose data to replace. Chris@0: * @param array $data Chris@0: * The configuration data. Chris@0: * Chris@0: * @return $this Chris@0: */ Chris@0: public function replaceData($name, array $data) { Chris@0: $this->replacementData[$this->collection][$name] = $data; Chris@0: return $this; Chris@0: } Chris@0: Chris@0: }