Chris@17: getEntityType('taxonomy_term'); Chris@17: $published_key = $entity_type->getKey('published'); Chris@17: Chris@17: $status_filter = [ Chris@17: 'id' => 'status', Chris@17: 'table' => 'taxonomy_term_field_data', Chris@17: 'field' => $published_key, Chris@17: 'relationship' => 'none', Chris@17: 'group_type' => 'group', Chris@17: 'admin_label' => '', Chris@17: 'operator' => '=', Chris@17: 'value' => '1', Chris@17: 'group' => 1, Chris@17: 'exposed' => FALSE, Chris@17: 'expose' => [ Chris@17: 'operator_id' => '', Chris@17: 'label' => '', Chris@17: 'description' => '', Chris@17: 'use_operator' => FALSE, Chris@17: 'operator' => '', Chris@17: 'identifier' => '', Chris@17: 'required' => FALSE, Chris@17: 'remember' => FALSE, Chris@17: 'multiple' => FALSE, Chris@17: 'remember_roles' => [ Chris@17: 'authenticated' => 'authenticated', Chris@17: 'anonymous' => '0', Chris@17: 'administrator' => '0', Chris@17: ], Chris@17: ], Chris@17: 'is_grouped' => FALSE, Chris@17: 'group_info' => [ Chris@17: 'label' => '', Chris@17: 'description' => '', Chris@17: 'identifier' => '', Chris@17: 'optional' => TRUE, Chris@17: 'widget' => 'select', Chris@17: 'multiple' => FALSE, Chris@17: 'remember' => FALSE, Chris@17: 'default_group' => 'All', Chris@17: 'default_group_multiple' => [], Chris@17: 'group_items' => [], Chris@17: ], Chris@17: 'entity_type' => 'taxonomy_term', Chris@17: 'entity_field' => $published_key, Chris@17: 'plugin_id' => 'boolean', Chris@17: ]; Chris@17: Chris@17: \Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'view', function ($view) use ($published_key, $status_filter) { Chris@17: /** @var \Drupal\views\ViewEntityInterface $view */ Chris@17: // Only alter taxonomy term views. Chris@17: if ($view->get('base_table') !== 'taxonomy_term_field_data') { Chris@17: return FALSE; Chris@17: } Chris@17: Chris@17: $displays = $view->get('display'); Chris@17: foreach ($displays as $display_name => &$display) { Chris@17: // Update any existing 'content_translation_status fields. Chris@17: $fields = isset($display['display_options']['fields']) ? $display['display_options']['fields'] : []; Chris@17: foreach ($fields as $id => $field) { Chris@17: if (isset($field['field']) && $field['field'] == 'content_translation_status') { Chris@17: $fields[$id]['field'] = $published_key; Chris@17: } Chris@17: } Chris@17: $display['display_options']['fields'] = $fields; Chris@17: Chris@17: // Update any existing 'content_translation_status sorts. Chris@17: $sorts = isset($display['display_options']['sorts']) ? $display['display_options']['sorts'] : []; Chris@17: foreach ($sorts as $id => $sort) { Chris@17: if (isset($sort['field']) && $sort['field'] == 'content_translation_status') { Chris@17: $sorts[$id]['field'] = $published_key; Chris@17: } Chris@17: } Chris@17: $display['display_options']['sorts'] = $sorts; Chris@17: Chris@17: // Update any existing 'content_translation_status' filters or add a new Chris@17: // one if necessary. Chris@17: $filters = isset($display['display_options']['filters']) ? $display['display_options']['filters'] : []; Chris@17: $has_status_filter = FALSE; Chris@17: foreach ($filters as $id => $filter) { Chris@17: if (isset($filter['field']) && $filter['field'] == 'content_translation_status') { Chris@17: $filters[$id]['field'] = $published_key; Chris@17: $has_status_filter = TRUE; Chris@17: } Chris@17: } Chris@17: Chris@17: if (!$has_status_filter) { Chris@17: $status_filter['id'] = ViewExecutable::generateHandlerId($published_key, $filters); Chris@17: $filters[$status_filter['id']] = $status_filter; Chris@17: } Chris@17: $display['display_options']['filters'] = $filters; Chris@17: } Chris@17: $view->set('display', $displays); Chris@17: Chris@17: return TRUE; Chris@17: }); Chris@17: }