You are here

function simple_sitemap_views_update_8301 in Simple XML sitemap 4.x

Same name and namespace in other branches
  1. 8.3 modules/simple_sitemap_views/simple_sitemap_views.install \simple_sitemap_views_update_8301()

Update views display extender config.

File

modules/simple_sitemap_views/simple_sitemap_views.install, line 76
Install and uninstall hooks for the simple_sitemap_views module.

Code

function simple_sitemap_views_update_8301() {
  $config_factory = \Drupal::configFactory();
  $display_extender_name = 'simple_sitemap_display_extender';

  // Find all views configs.
  foreach ($config_factory
    ->listAll('views.view.') as $view_config_name) {
    $view = $config_factory
      ->getEditable($view_config_name);
    $changed = FALSE;

    // Go through each display on each view.
    $displays = $view
      ->get('display');
    foreach ($displays as $display_name => $display) {
      if (isset($display['display_options']['display_extenders'][$display_extender_name])) {
        $options = $display['display_options']['display_extenders'][$display_extender_name];
        if (!isset($options['variants']) && isset($options['variant'])) {
          $variant = $options['variant'];
          unset($options['variant']);

          // Update display extender config.
          $key = "display.{$display_name}.display_options.display_extenders.{$display_extender_name}";
          $options = [
            'variants' => [
              $variant => $options,
            ],
          ];
          $view
            ->set($key, $options);
          $changed = TRUE;
        }
      }
    }
    if ($changed) {
      $view
        ->save(TRUE);
    }
  }
}