diff --git a/core/modules/block/block.install b/core/modules/block/block.install index 41e1cdd..5505d89 100644 --- a/core/modules/block/block.install +++ b/core/modules/block/block.install @@ -28,7 +28,7 @@ function block_update_8001() { $config_factory = \Drupal::configFactory(); $message = NULL; - $disabled_blocks = $problematic_visibility_plugins = []; + $disabled_blocks = $problematic_visibility_plugins = $backup_values = []; // We deal with config objects directly in order to avoid invoking Entity API // hooks. They can be problematic when two modules implement a specific hook, // their code is updated at the same time, yet the update functions run @@ -48,6 +48,7 @@ function block_update_8001() { $disabled_blocks[$block->get('id')] = $block->get('settings.label'); $problematic_visibility_plugins[$block->get('id')][] = $condition_plugin_id_ui_label_map[$condition_plugin_id]; + $backup_values[] = $context; unset($visibility[$condition_plugin_id]); continue; } @@ -62,6 +63,10 @@ function block_update_8001() { $block->set('status', FALSE); } $block->set('visibility', $visibility); + + if ($backup_values) { + $block->set('2528178_visibility', $backup_values); + } } $block->save(); diff --git a/core/modules/block/config/schema/block.schema.yml b/core/modules/block/config/schema/block.schema.yml index 16d79bc..d3590a4 100644 --- a/core/modules/block/config/schema/block.schema.yml +++ b/core/modules/block/config/schema/block.schema.yml @@ -30,6 +30,12 @@ block.block.*: sequence: type: condition.plugin.[id] label: 'Visibility Condition' + 2528178_visibility: + type: sequence + label: 'Missing conversions of 2528178' + sequence: + type: string + label: 'Old visiblity settings' block.settings.*: type: block_settings diff --git a/core/modules/block/src/Tests/Update/BlockContextMappingUpdateTest.php b/core/modules/block/src/Tests/Update/BlockContextMappingUpdateTest.php index 6e2b65b..149e2aa 100644 --- a/core/modules/block/src/Tests/Update/BlockContextMappingUpdateTest.php +++ b/core/modules/block/src/Tests/Update/BlockContextMappingUpdateTest.php @@ -79,6 +79,7 @@ public function testUpdateHookN() { // still be edited afterward. $disabled_block = Block::load('thirdtestfor2354889'); $this->assertFalse($disabled_block->status(), 'Block with invalid context is disabled'); + $this->assertEqual(['baloney.spam'], $disabled_block->get('2528178_visibility')); $disabled_block_visibility = $disabled_block->get('visibility'); $this->assertTrue(!isset($disabled_block_visibility['node_type']), 'The problematic visibility condition has been removed.');