function system_update_8200
Fix configuration overrides to not override non existing keys.
File
-
core/
modules/ system/ system.install, line 2192
Code
function system_update_8200(&$sandbox) {
$config_factory = \Drupal::configFactory();
if (!array_key_exists('config_names', $sandbox)) {
$sandbox['config_names'] = $config_factory->listAll();
$sandbox['max'] = count($sandbox['config_names']);
}
// Get a list of 50 to work on at a time.
$config_names_to_process = array_slice($sandbox['config_names'], 0, 50);
// Preload in a single query.
$config_factory->loadMultiple($config_names_to_process);
foreach ($config_names_to_process as $config_name) {
$config_factory->getEditable($config_name)
->save();
}
// Update the list of names to process.
$sandbox['config_names'] = array_diff($sandbox['config_names'], $config_names_to_process);
$sandbox['#finished'] = empty($sandbox['config_names']) ? 1 : ($sandbox['max'] - count($sandbox['config_names'])) / $sandbox['max'];
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.