| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Contains install and update functions for Block.
 
-  */
 
- use Drupal\Core\Cache\Cache;
 
- /**
 
-  * Implements hook_install().
 
-  */
 
- function block_install() {
 
-   // Because the Block module upon installation unconditionally overrides all
 
-   // HTML output by selecting a different page display variant, we must
 
-   // invalidate all cached HTML output.
 
-   Cache::invalidateTags(['rendered']);
 
- }
 
- /**
 
-  * Update block visibility context mapping.
 
-  */
 
- function block_update_8001() {
 
-   // This update function updates blocks for the change from
 
-   // https://www.drupal.org/node/2354889.
 
-   // Core visibility context plugins are updated automatically; blocks with
 
-   // unknown plugins are disabled and their previous visibility settings are
 
-   // saved in key value storage; see change record
 
-   // https://www.drupal.org/node/2527840 for more explanation.
 
-   // These are all the contexts that Drupal core provides.
 
-   $context_service_id_map = [
 
-     'node.node' => '@node.node_route_context:node',
 
-     'user.current_user' => '@user.current_user_context:current_user',
 
-   ];
 
-   foreach (array_keys(\Drupal::languageManager()->getDefinedLanguageTypesInfo()) as $language_type_id) {
 
-     $context_service_id_map['language.' . $language_type_id] = '@language.current_language_context:' . $language_type_id;
 
-   }
 
-   // Contributed modules should leverage hook_update_dependencies() in order to
 
-   // be executed after block_update_8001(). The blocks are then disabled if the
 
-   // contexts are still missing via
 
-   // block_post_update_disable_blocks_with_missing_contexts().
 
-   $config_factory = \Drupal::configFactory();
 
-   $backup_values = $update_backup = [];
 
-   foreach ($config_factory->listAll('block.block.') as $block_config_name) {
 
-     $block = $config_factory->getEditable($block_config_name);
 
-     if ($visibility = $block->get('visibility')) {
 
-       foreach ($visibility as $condition_plugin_id => &$condition) {
 
-         foreach ($condition['context_mapping'] as $key => $context) {
 
-           if (!isset($context_service_id_map[$context])) {
 
-             // Remove the visibility condition for unknown context mapping
 
-             // entries, so the update process itself runs through and users can
 
-             // fix their block placements manually OR alternatively contributed
 
-             // modules can run their own update functions to update mappings
 
-             // that they provide.
 
-             $backup_values[$context][] = $condition_plugin_id;
 
-             unset($visibility[$condition_plugin_id]);
 
-             continue;
 
-           }
 
-           // Replace the context ID based on the defined mapping.
 
-           $condition['context_mapping'][$key] = $context_service_id_map[$context];
 
-         }
 
-       }
 
-       $block->set('visibility', $visibility);
 
-       if ($backup_values) {
 
-         // We not only store the missing context mappings but also the previous
 
-         // block status, in order to allow contributed and custom modules to do
 
-         // their own updates.
 
-         $update_backup[$block->get('id')] = [
 
-           'missing_context_ids' => $backup_values,
 
-           'status' => $block->get('status'),
 
-         ];
 
-       }
 
-     }
 
-     // Mark the resulting configuration as trusted data. This avoids issues with
 
-     // future schema changes.
 
-     $block->save(TRUE);
 
-   }
 
-   if ($update_backup) {
 
-     \Drupal::keyValue('update_backup')->set('block_update_8001', $update_backup);
 
-   }
 
-   return t('Block context IDs updated.');
 
- }
 
- /**
 
-  * Placeholder for the previous 8002 update.
 
-  */
 
- function block_update_8002() {
 
-   \Drupal::state()->set('block_update_8002_placeholder', TRUE);
 
- }
 
- /**
 
-  * Remove 'cache' setting.
 
-  */
 
- function block_update_8003() {
 
-   $config_factory = \Drupal::configFactory();
 
-   foreach ($config_factory->listAll('block.block.') as $block_config_name) {
 
-     $block = $config_factory->getEditable($block_config_name);
 
-     // Remove the 'cache' setting.
 
-     $settings = $block->get('settings');
 
-     unset($settings['cache']);
 
-     $block->set('settings', $settings);
 
-     // Mark the resulting configuration as trusted data. This avoids issues with
 
-     // future schema changes.
 
-     $block->save(TRUE);
 
-   }
 
-   return t('Block settings updated.');
 
- }
 
 
  |