You are here

function taxonomy_update_8503 in Drupal 8

Update views to use {taxonomy_term__parent} in relationships.

File

core/modules/taxonomy/taxonomy.install, line 138
Install, update and uninstall functions for the taxonomy module.

Code

function taxonomy_update_8503() {
  $config_factory = \Drupal::configFactory();
  foreach ($config_factory
    ->listAll('views.view.') as $id) {
    $view = $config_factory
      ->getEditable($id);
    foreach (array_keys($view
      ->get('display')) as $display_id) {
      $changed = FALSE;
      foreach ([
        'relationships',
        'filters',
        'arguments',
      ] as $handler_type) {
        $base_path = "display.{$display_id}.display_options.{$handler_type}";
        $handlers = $view
          ->get($base_path);
        if (!$handlers) {
          continue;
        }
        foreach ($handlers as $handler_key => $handler_config) {
          $table_path = "{$base_path}.{$handler_key}.table";
          $field_path = "{$base_path}.{$handler_key}.field";
          $table = $view
            ->get($table_path);
          $field = $view
            ->get($field_path);
          if ($table && $table === 'taxonomy_term_hierarchy' && ($field && $field === 'parent')) {
            $view
              ->set($table_path, 'taxonomy_term__parent');
            $view
              ->set($field_path, 'parent_target_id');
            $changed = TRUE;
          }
        }
      }
      if ($changed) {
        $view
          ->save(TRUE);
      }
    }
  }
}