Skip to content

Instantly share code, notes, and snippets.

@ivangrozni
Last active September 8, 2023 07:45
Show Gist options
  • Save ivangrozni/17234b73a751861ed6244ad010043e64 to your computer and use it in GitHub Desktop.
Save ivangrozni/17234b73a751861ed6244ad010043e64 to your computer and use it in GitHub Desktop.
Drupal field module fix for broken configuration sync page
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index ad9b8f538b..94493a0c3a 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -318,8 +318,11 @@ function field_form_config_admin_import_form_alter(&$form, FormStateInterface $f
$user_input = $form_state->getUserInput();
$storage_comparer = $form_state->get('storage_comparer');
if ($storage_comparer && empty($user_input)) {
+ // Method getFieldStoragesToPurge expects first array parameter to have
+ // 'module' key.
+ $core_extension = $storage_comparer->getSourceStorage()->read('core.extension') ?: ['module' => []];
$field_storages = ConfigImporterFieldPurger::getFieldStoragesToPurge(
- $storage_comparer->getSourceStorage()->read('core.extension'),
+ $core_extension,
$storage_comparer->getChangelist('delete')
);
if ($field_storages) {
From aee0a8e43761099b0e98f20e081b42e8762123e3 Mon Sep 17 00:00:00 2001
From: Lio Novelli <liopold@drunomics.com>
Date: Thu, 7 Sep 2023 18:13:35 +0200
Subject: [PATCH] Better handle array parameters in config importer field
purger.
---
core/modules/field/field.module | 3 +++
core/modules/field/src/ConfigImporterFieldPurger.php | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index d5a8182048a6..b39d2fdb808f 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -318,6 +318,9 @@ function field_form_config_admin_import_form_alter(&$form, FormStateInterface $f
$user_input = $form_state->getUserInput();
$storage_comparer = $form_state->get('storage_comparer');
if ($storage_comparer && empty($user_input)) {
+ // Method getFieldStoragesToPurge expects first array parameter to have
+ // 'module' key.
+ $core_extension = $storage_comparer->getSourceStorage()->read('core.extension') ?: ['module' => []];
$field_storages = ConfigImporterFieldPurger::getFieldStoragesToPurge(
$storage_comparer->getSourceStorage()->read('core.extension'),
$storage_comparer->getChangelist('delete')
diff --git a/core/modules/field/src/ConfigImporterFieldPurger.php b/core/modules/field/src/ConfigImporterFieldPurger.php
index b2efb68d22dd..aaede369651d 100644
--- a/core/modules/field/src/ConfigImporterFieldPurger.php
+++ b/core/modules/field/src/ConfigImporterFieldPurger.php
@@ -109,7 +109,7 @@ protected static function initializeSandbox(array &$context, ConfigImporter $con
* synchronized.
*/
public static function getFieldStoragesToPurge(array $extensions, array $deletes) {
- $providers = array_keys($extensions['module']);
+ $providers = !empty($extensions['module']) ? array_keys($extensions['module']) : [];
$providers[] = 'core';
$storages_to_delete = [];
--
GitLab
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment