function StorageComparer::addChangelistRename
Same name in other branches
- 9 core/lib/Drupal/Core/Config/StorageComparer.php \Drupal\Core\Config\StorageComparer::addChangelistRename()
- 8.9.x core/lib/Drupal/Core/Config/StorageComparer.php \Drupal\Core\Config\StorageComparer::addChangelistRename()
- 11.x core/lib/Drupal/Core/Config/StorageComparer.php \Drupal\Core\Config\StorageComparer::addChangelistRename()
Creates the rename changelist.
The list of renames is created from the different source and target names with same UUID. These changes will be removed from the create and delete lists.
Parameters
string $collection: The storage collection to operate on.
1 call to StorageComparer::addChangelistRename()
- StorageComparer::createChangelist in core/
lib/ Drupal/ Core/ Config/ StorageComparer.php - Calculates the differences.
File
-
core/
lib/ Drupal/ Core/ Config/ StorageComparer.php, line 333
Class
- StorageComparer
- Defines a config storage comparer.
Namespace
Drupal\Core\ConfigCode
protected function addChangelistRename($collection) {
// Renames will be present in both the create and delete lists.
$create_list = $this->getChangelist('create', $collection);
$delete_list = $this->getChangelist('delete', $collection);
if (empty($create_list) || empty($delete_list)) {
return;
}
$create_uuids = [];
foreach ($this->sourceNames[$collection] as $name) {
$data = $this->getSourceStorage($collection)
->read($name);
if (isset($data['uuid']) && in_array($name, $create_list)) {
$create_uuids[$data['uuid']] = $name;
}
}
if (empty($create_uuids)) {
return;
}
$renames = [];
// Renames should be ordered so that dependencies are renamed last. This
// ensures that if there is logic in the configuration entity class to keep
// names in sync it will still work. $this->targetNames is in the desired
// order due to the use of configuration dependencies in
// \Drupal\Core\Config\StorageComparer::getAndSortConfigData().
// Node type is a good example of a configuration entity that renames other
// configuration when it is renamed.
// @see \Drupal\node\Entity\NodeType::postSave()
foreach ($this->targetNames[$collection] as $name) {
$data = $this->getTargetStorage($collection)
->read($name);
if (isset($data['uuid']) && isset($create_uuids[$data['uuid']])) {
// Remove the item from the create list.
$this->removeFromChangelist($collection, 'create', $create_uuids[$data['uuid']]);
// Remove the item from the delete list.
$this->removeFromChangelist($collection, 'delete', $name);
// Create the rename name.
$renames[] = $this->createRenameName($name, $create_uuids[$data['uuid']]);
}
}
$this->addChangeList($collection, 'rename', $renames);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.