You are here

function block_post_update_fix_negate_in_conditions in Drupal 8

Fix invalid 'negate' values in block visibility conditions.

File

core/modules/block/block.post_update.php, line 82
Post update functions for Block.

Code

function block_post_update_fix_negate_in_conditions() {
  $block_storage = \Drupal::entityTypeManager()
    ->getStorage('block');

  /** @var \Drupal\block\BlockInterface[] $blocks */
  $blocks = $block_storage
    ->loadMultiple();
  foreach ($blocks as $block) {
    $block_needs_saving = FALSE;

    // Check each visibility condition for an invalid negate value, and fix it.
    foreach ($block
      ->getVisibilityConditions() as $condition_id => $condition) {
      $configuration = $condition
        ->getConfiguration();
      if (array_key_exists('negate', $configuration) && !is_bool($configuration['negate'])) {
        $configuration['negate'] = (bool) $configuration['negate'];
        $condition
          ->setConfiguration($configuration);
        $block_needs_saving = TRUE;
      }
    }
    if ($block_needs_saving) {
      $block
        ->save();
    }
  }
}