diff --git a/core/lib/Drupal/Core/Config/ConfigInstaller.php b/core/lib/Drupal/Core/Config/ConfigInstaller.php index 3d94ebd..fde8cb0 100644 --- a/core/lib/Drupal/Core/Config/ConfigInstaller.php +++ b/core/lib/Drupal/Core/Config/ConfigInstaller.php @@ -195,13 +195,15 @@ protected function installOptionalConfig($name = NULL) { $config_to_install = $this->getDefaultConfigToInstall($collection, $name); $all_config = array_merge($existing_config, array_keys($config_to_install)); - $config_to_install = array_filter($config_to_install, function($data, $config_name) use ($enabled_extensions, $existing_config, $all_config) { + foreach ($config_to_install as $config_name => $data) { // Ensure that the configuration does not exist already, that it is a // configuration entity, and that its dependencies can be met. - return !in_array($config_name, $existing_config) - && $this->configManager->getEntityTypeIdByName($config_name) - && $this->validateDependencies($config_name, $data, $enabled_extensions, $all_config); - }, ARRAY_FILTER_USE_BOTH); + if (in_array($config_name, $existing_config) || + !$this->configManager->getEntityTypeIdByName($config_name) || + !$this->validateDependencies($config_name, $data, $enabled_extensions, $all_config)) { + unset($config_to_install[$config_name]); + } + } if (!empty($config_to_install)) { $this->createConfiguration($collection, $config_to_install, TRUE); } @@ -483,9 +485,9 @@ public function checkConfigurationToInstall($type, $name) { protected function findDefaultConfigWithUnmetDependencies(array $enabled_extensions) { $config_data = $this->getDefaultConfigToInstall(StorageInterface::DEFAULT_COLLECTION); $all_config = array_merge($this->configFactory->listAll(), array_keys($config_data)); - return array_keys(array_filter($config_data, function($data, $config_name) use ($enabled_extensions, $all_config) { - return !$this->validateDependencies($config_name, $data, $enabled_extensions, $all_config); - }, ARRAY_FILTER_USE_BOTH)); + return array_filter(array_keys($config_data), function($config_name) use ($enabled_extensions, $all_config, $config_data) { + return !$this->validateDependencies($config_name, $config_data[$config_name], $enabled_extensions, $all_config); + }); } /**