activitypub-1.0.x-dev/src/Entity/ActivityPubActivityViewsData.php

src/Entity/ActivityPubActivityViewsData.php
<?php

namespace Drupal\activitypub\Entity;

use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\views\EntityViewsData;

class ActivityPubActivityViewsData extends EntityViewsData {

  /**
   * {@inheritdoc}
   */
  public function getViewsData() {
    $data = parent::getViewsData();

    // Activity bulk form.
    $data['activitypub_activity']['activity_bulk_form'] = array(
      'title' => $this->t('Activity operations bulk form'),
      'help' => $this->t('Add a form element that lets you run operations on multiple activities.'),
      'field' => array(
        'id' => 'activity_bulk_form',
      ),
    );

    // Change filter for type, collection, visibility and entity_type_id.
    $data['activitypub_activity']['type']['filter']['id'] = 'activitypub_type_select';
    $data['activitypub_activity']['collection']['filter']['id'] = 'activitypub_collection_select';
    $data['activitypub_activity']['visibility']['filter']['id'] = 'activitypub_visibility_select';
    $data['activitypub_activity']['entity_type_id']['filter']['id'] = 'activitypub_entity_type_id_select';
    $data['activitypub_activity']['config_id']['filter']['id'] = 'activitypub_config_id_select';

    // Provides an integration for each entity type except activitypub activity.
    foreach ($this->entityTypeManager->getDefinitions() as $entity_type_id => $entity_type) {
      if ($entity_type_id == 'activitypub_activity' || !$entity_type->entityClassImplements(ContentEntityInterface::class) || !$entity_type->getBaseTable()) {
        continue;
      }

      $label = $entity_type->getLabel();
      $base_table = $entity_type->getDataTable() ?: $entity_type->getBaseTable();
      $args = ['@entity_type' => $label];

      $data['activitypub_activity']['activitypub_' . $entity_type_id . '_id'] = [
        'title' => t('Activities on @entity_type', $args),
        'help' => t('Relate all activities on @entity_type.', $args),
        'relationship' => [
          'group' => t('activitypub'),
          'label' => t('ActivityPub'),
          'base' => $base_table,
          'base field' => $entity_type->getKey('id'),
          'relationship field' => 'entity_id',
          'id' => 'standard',
          'extra' => [
            [
              'table' => 'activitypub_activity',
              'field' => 'entity_type_id',
              'value' => $entity_type_id,
            ],
          ],
        ],
      ];
    }

    return $data;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc