38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @file
							 | 
						||
| 
								 | 
							
								 * Post update functions for Search module.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use Drupal\Core\Config\Entity\ConfigEntityUpdater;
							 | 
						||
| 
								 | 
							
								use Drupal\block\BlockInterface;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Implements hook_removed_post_updates().
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function search_removed_post_updates(): array {
							 | 
						||
| 
								 | 
							
								  return [
							 | 
						||
| 
								 | 
							
								    'search_post_update_block_page' => '9.0.0',
							 | 
						||
| 
								 | 
							
								    'search_post_update_reindex_after_diacritics_rule_change' => '10.0.0',
							 | 
						||
| 
								 | 
							
								  ];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Updates Search Blocks' without an explicit `page_id` from '' to NULL.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function search_post_update_block_with_empty_page_id(&$sandbox = []): void {
							 | 
						||
| 
								 | 
							
								  $config_entity_updater = \Drupal::classResolver(ConfigEntityUpdater::class);
							 | 
						||
| 
								 | 
							
								  $config_entity_updater->update($sandbox, 'block', function (BlockInterface $block): bool {
							 | 
						||
| 
								 | 
							
								    // Only update blocks using the search block plugin.
							 | 
						||
| 
								 | 
							
								    // @see search_block_presave()
							 | 
						||
| 
								 | 
							
								    if ($block->getPluginId() === 'search_form_block' && $block->get('settings')['page_id'] === '') {
							 | 
						||
| 
								 | 
							
								      $settings = $block->get('settings');
							 | 
						||
| 
								 | 
							
								      $settings['page_id'] = NULL;
							 | 
						||
| 
								 | 
							
								      $block->set('settings', $settings);
							 | 
						||
| 
								 | 
							
								      return TRUE;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return FALSE;
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 |