function taxonomy_update_8503

Update views to use {taxonomy_term__parent} in relationships.

File

core/modules/taxonomy/taxonomy.install, line 138

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);
      }
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.