Chris@0: entityTypeManager = $entity_type_manager; Chris@0: $this->moderationInformation = $moderation_information; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns the views data. Chris@0: * Chris@0: * @return array Chris@0: * The views data. Chris@0: */ Chris@0: public function getViewsData() { Chris@0: $data = []; Chris@0: Chris@0: $entity_types_with_moderation = array_filter($this->entityTypeManager->getDefinitions(), function (EntityTypeInterface $type) { Chris@18: return $this->moderationInformation->isModeratedEntityType($type); Chris@0: }); Chris@0: Chris@0: // Provides a relationship from moderated entity to its moderation state Chris@0: // entity. Chris@0: $content_moderation_state_entity_type = $this->entityTypeManager->getDefinition('content_moderation_state'); Chris@0: $content_moderation_state_entity_base_table = $content_moderation_state_entity_type->getDataTable() ?: $content_moderation_state_entity_type->getBaseTable(); Chris@0: $content_moderation_state_entity_revision_base_table = $content_moderation_state_entity_type->getRevisionDataTable() ?: $content_moderation_state_entity_type->getRevisionTable(); Chris@0: foreach ($entity_types_with_moderation as $entity_type_id => $entity_type) { Chris@0: $table = $entity_type->getDataTable() ?: $entity_type->getBaseTable(); Chris@0: Chris@0: $data[$table]['moderation_state'] = [ Chris@0: 'title' => t('Moderation state'), Chris@0: 'relationship' => [ Chris@0: 'id' => 'standard', Chris@0: 'label' => $this->t('@label moderation state', ['@label' => $entity_type->getLabel()]), Chris@0: 'base' => $content_moderation_state_entity_base_table, Chris@0: 'base field' => 'content_entity_id', Chris@0: 'relationship field' => $entity_type->getKey('id'), Chris@0: 'extra' => [ Chris@0: [ Chris@0: 'field' => 'content_entity_type_id', Chris@0: 'value' => $entity_type_id, Chris@0: ], Chris@0: ], Chris@0: ], Chris@14: 'field' => [ Chris@14: 'id' => 'field', Chris@14: 'default_formatter' => 'content_moderation_state', Chris@14: 'field_name' => 'moderation_state', Chris@14: ], Chris@14: 'filter' => ['id' => 'moderation_state_filter', 'allow empty' => TRUE], Chris@0: ]; Chris@0: Chris@0: $revision_table = $entity_type->getRevisionDataTable() ?: $entity_type->getRevisionTable(); Chris@0: $data[$revision_table]['moderation_state'] = [ Chris@0: 'title' => t('Moderation state'), Chris@0: 'relationship' => [ Chris@0: 'id' => 'standard', Chris@0: 'label' => $this->t('@label moderation state', ['@label' => $entity_type->getLabel()]), Chris@0: 'base' => $content_moderation_state_entity_revision_base_table, Chris@0: 'base field' => 'content_entity_revision_id', Chris@0: 'relationship field' => $entity_type->getKey('revision'), Chris@0: 'extra' => [ Chris@0: [ Chris@0: 'field' => 'content_entity_type_id', Chris@0: 'value' => $entity_type_id, Chris@0: ], Chris@0: ], Chris@0: ], Chris@14: 'field' => [ Chris@14: 'id' => 'field', Chris@14: 'default_formatter' => 'content_moderation_state', Chris@14: 'field_name' => 'moderation_state', Chris@14: ], Chris@14: 'filter' => ['id' => 'moderation_state_filter', 'allow empty' => TRUE], Chris@0: ]; Chris@0: } Chris@0: Chris@0: return $data; Chris@0: } Chris@0: Chris@0: }