56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @file
							 | 
						||
| 
								 | 
							
								 * Post update functions for Block.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use Drupal\block\BlockInterface;
							 | 
						||
| 
								 | 
							
								use Drupal\Core\Config\Entity\ConfigEntityUpdater;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Implements hook_removed_post_updates().
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function block_removed_post_updates(): array {
							 | 
						||
| 
								 | 
							
								  return [
							 | 
						||
| 
								 | 
							
								    'block_post_update_disable_blocks_with_missing_contexts' => '9.0.0',
							 | 
						||
| 
								 | 
							
								    'block_post_update_disabled_region_update' => '9.0.0',
							 | 
						||
| 
								 | 
							
								    'block_post_update_fix_negate_in_conditions' => '9.0.0',
							 | 
						||
| 
								 | 
							
								    'block_post_update_replace_node_type_condition' => '10.0.0',
							 | 
						||
| 
								 | 
							
								  ];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Ensures that all block weights are integers.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function block_post_update_make_weight_integer(array &$sandbox = []): void {
							 | 
						||
| 
								 | 
							
								  \Drupal::classResolver(ConfigEntityUpdater::class)
							 | 
						||
| 
								 | 
							
								    ->update($sandbox, 'block', function (BlockInterface $block): bool {
							 | 
						||
| 
								 | 
							
								      $weight = $block->getWeight();
							 | 
						||
| 
								 | 
							
								      if (!is_int($weight)) {
							 | 
						||
| 
								 | 
							
								        $block->setWeight($weight);
							 | 
						||
| 
								 | 
							
								        return TRUE;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return FALSE;
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Updates the `depth` setting to NULL if it is 0 in any menu blocks.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function block_post_update_set_menu_block_depth_to_null_if_zero(array &$sandbox = []): void {
							 | 
						||
| 
								 | 
							
								  \Drupal::classResolver(ConfigEntityUpdater::class)
							 | 
						||
| 
								 | 
							
								    ->update($sandbox, 'block', function (BlockInterface $block): bool {
							 | 
						||
| 
								 | 
							
								      if ($block->getPlugin()->getBaseId() === 'system_menu_block') {
							 | 
						||
| 
								 | 
							
								        $settings = $block->get('settings');
							 | 
						||
| 
								 | 
							
								        // Use `empty()` to account for either integer 0, or '0'.
							 | 
						||
| 
								 | 
							
								        if (empty($settings['depth'])) {
							 | 
						||
| 
								 | 
							
								          $settings['depth'] = NULL;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $block->set('settings', $settings);
							 | 
						||
| 
								 | 
							
								        return TRUE;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return FALSE;
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 |