/** * {@inheritdoc} */ public function write($name, array $data) { if (isset($this->replacementData[$this->collection][$name])) { unset($this->replacementData[$this->collection][$name]); } return $this->storage->write($name, $data); }
/** * {@inheritdoc} */ public function write($name, array $data) { foreach ($this->filters as $filter) { $data = $filter->filterWrite($name, $data, $this->storage); } return $this->storage->write($name, $data); }
/** * {@inheritdoc} */ public function write($name, array $data) { foreach ($this->filters as $filter) { $data = $filter->filterWrite($name, $data, $this->storage); } // filterWrite might return NULL, which means the config should be deleted. if (!isset($data)) { return $this->storage->delete($name); } return $this->storage->write($name, $data); }
/** * Copies configuration objects from source storage to target storage. * * @param \Drupal\Core\Config\StorageInterface $source_storage * The source config storage service. * @param \Drupal\Core\Config\StorageInterface $target_storage * The target config storage service. */ protected function copyConfig(StorageInterface $source_storage, StorageInterface $target_storage) { $target_storage->deleteAll(); foreach ($source_storage->listAll() as $name) { $target_storage->write($name, $source_storage->read($name)); } }
/** * Creates a snapshot of a given configuration item as provided by an * extension. * * @param FileStorage $extension_storage * An extension's configuration file storage. * @param string $item_name * The name of the configuration item. */ function createItemSnapshot(FileStorage $extension_storage, $item_name) { // Snapshot the configuration item as provided by the extension. $extension_value = $extension_storage->read($item_name); $this->snapshotExtensionStorage->write($item_name, $extension_value); // Snapshot the configuration item as installed in the active storage. $active_value = $this->activeStorage->read($item_name); $this->snapshotActiveStorage->write($item_name, $active_value); }
/** * {@inheritdoc} */ public function write($name, array $data) { if ($this->storage->write($name, $data)) { // While not all written data is read back, setting the cache instead of // just deleting it avoids cache rebuild stampedes. $this->cache->set($this->getCacheKey($name), $data); $this->findByPrefixCache = array(); return TRUE; } return FALSE; }
/** * Implements Drupal\Core\Config\StorageInterface::write(). */ public function write($name, array $data) { if ($this->storage->write($name, $data)) { // While not all written data is read back, setting the cache instead of // just deleting it avoids cache rebuild stampedes. $this->cache->set($name, $data); Cache::deleteTags(array($this::FIND_BY_PREFIX_CACHE_TAG => TRUE)); $this->findByPrefixCache = array(); return TRUE; } return FALSE; }
/** * {@inheritdoc} */ public function write($name, array $data) { return $this->baseStorage->write($name, $data); }
/** * {@inheritdoc} */ public function createSnapshot(StorageInterface $source_storage, StorageInterface $snapshot_storage) { // Empty the snapshot of all configuration. $snapshot_storage->deleteAll(); foreach ($snapshot_storage->getAllCollectionNames() as $collection) { $snapshot_collection = $snapshot_storage->createCollection($collection); $snapshot_collection->deleteAll(); } foreach ($source_storage->listAll() as $name) { $snapshot_storage->write($name, $source_storage->read($name)); } // Copy collections as well. foreach ($source_storage->getAllCollectionNames() as $collection) { $source_collection = $source_storage->createCollection($collection); $snapshot_collection = $snapshot_storage->createCollection($collection); foreach ($source_collection->listAll() as $name) { $snapshot_collection->write($name, $source_collection->read($name)); } } }
/** * Tests that the storage supports collections. */ public function testCollection() { $name = 'config_test.storage'; $data = array('foo' => 'bar'); $result = $this->storage->write($name, $data); $this->assertIdentical($result, TRUE); $this->assertIdentical($data, $this->storage->read($name)); // Create configuration in a new collection. $new_storage = $this->storage->createCollection('collection.sub.new'); $this->assertFalse($new_storage->exists($name)); $this->assertEqual(array(), $new_storage->listAll()); $new_storage->write($name, $data); $this->assertIdentical($result, TRUE); $this->assertIdentical($data, $new_storage->read($name)); $this->assertEqual(array($name), $new_storage->listAll()); $this->assertTrue($new_storage->exists($name)); $new_data = array('foo' => 'baz'); $new_storage->write($name, $new_data); $this->assertIdentical($result, TRUE); $this->assertIdentical($new_data, $new_storage->read($name)); // Create configuration in another collection. $another_storage = $this->storage->createCollection('collection.sub.another'); $this->assertFalse($another_storage->exists($name)); $this->assertEqual(array(), $another_storage->listAll()); $another_storage->write($name, $new_data); $this->assertIdentical($result, TRUE); $this->assertIdentical($new_data, $another_storage->read($name)); $this->assertEqual(array($name), $another_storage->listAll()); $this->assertTrue($another_storage->exists($name)); // Create configuration in yet another collection. $alt_storage = $this->storage->createCollection('alternate'); $alt_storage->write($name, $new_data); $this->assertIdentical($result, TRUE); $this->assertIdentical($new_data, $alt_storage->read($name)); // Switch back to the collection-less mode and check the data still exists // add has not been touched. $this->assertIdentical($data, $this->storage->read($name)); // Check that the getAllCollectionNames() method works. $this->assertIdentical(array('alternate', 'collection.sub.another', 'collection.sub.new'), $this->storage->getAllCollectionNames()); // Check that the collections are removed when they are empty. $alt_storage->delete($name); $this->assertIdentical(array('collection.sub.another', 'collection.sub.new'), $this->storage->getAllCollectionNames()); // Create configuration in collection called 'collection'. This ensures that // FileStorage's collection storage works regardless of its use of // subdirectories. $parent_storage = $this->storage->createCollection('collection'); $this->assertFalse($parent_storage->exists($name)); $this->assertEqual(array(), $parent_storage->listAll()); $parent_storage->write($name, $new_data); $this->assertIdentical($result, TRUE); $this->assertIdentical($new_data, $parent_storage->read($name)); $this->assertEqual(array($name), $parent_storage->listAll()); $this->assertTrue($parent_storage->exists($name)); $this->assertIdentical(array('collection', 'collection.sub.another', 'collection.sub.new'), $this->storage->getAllCollectionNames()); $parent_storage->deleteAll(); $this->assertIdentical(array('collection.sub.another', 'collection.sub.new'), $this->storage->getAllCollectionNames()); // Check that the having an empty collection-less storage does not break // anything. Before deleting check that the previous delete did not affect // data in another collection. $this->assertIdentical($data, $this->storage->read($name)); $this->storage->delete($name); $this->assertIdentical(array('collection.sub.another', 'collection.sub.new'), $this->storage->getAllCollectionNames()); }