You are here

class SubscriptionViewsData in Commerce Recurring Framework 8

Provides views data for subscription.

Hierarchy

Expanded class hierarchy of SubscriptionViewsData

File

src/SubscriptionViewsData.php, line 12

Namespace

Drupal\commerce_recurring
View source
class SubscriptionViewsData extends CommerceEntityViewsData {

  /**
   * The purchasable entity type repository.
   *
   * @var Drupal\commerce\PurchasableEntityTypeRepositoryInterface
   */
  protected $purchasableEntityTypeRepository;

  /**
   * {@inheritdoc}
   */
  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
    $instance = parent::createInstance($container, $entity_type);
    $instance->purchasableEntityTypeRepository = $container
      ->get('commerce.purchasable_entity_type_repository');
    return $instance;
  }

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

    // Unset the default purchased entity relationship.
    // It does not work properly since the target type is not defined.
    unset($data['commerce_subscription']['purchased_entity']['relationship']);

    // Collect all purchasable entity types.

    /** @var \Drupal\commerce\PurchasableEntityInterface[] $entity_types */
    $entity_types = $this->purchasableEntityTypeRepository
      ->getPurchasableEntityTypes();

    /** @var \Drupal\Core\Entity\Sql\TableMappingInterface $table_mapping */
    $table_mapping = $this->storage
      ->getTableMapping();

    // Provide a relationship for each entity type found.
    foreach ($entity_types as $entity_type) {
      $entity_type_id = $entity_type
        ->id();
      if (!$this->entityTypeManager
        ->hasDefinition($entity_type_id)) {
        continue;
      }
      $data['commerce_subscription'][$entity_type_id] = [
        'relationship' => [
          'title' => $entity_type
            ->getLabel(),
          'help' => $this
            ->t('The purchased @entity_type.', [
            '@entity_type' => $entity_type
              ->getSingularLabel(),
          ]),
          'base' => $this
            ->getViewsTableForEntityType($entity_type),
          'base field' => $entity_type
            ->getKey('id'),
          'relationship field' => $table_mapping
            ->getColumnNames('purchased_entity')['target_id'],
          'id' => 'standard',
          'label' => $entity_type
            ->getLabel(),
        ],
      ];
      $target_base_table = $this
        ->getViewsTableForEntityType($entity_type);
      $data[$target_base_table]['reverse__commerce_subscription__purchased_entity'] = [
        'relationship' => [
          'title' => $this->entityType
            ->getLabel(),
          'help' => $this
            ->t('The @subscription_entity_type for this @entity_type.', [
            '@subscription_entity_type' => $this->entityType
              ->getPluralLabel(),
            '@entity_type' => $entity_type
              ->getSingularLabel(),
          ]),
          'group' => $entity_type
            ->getLabel(),
          'base' => $this
            ->getViewsTableForEntityType($this->entityType),
          'base field' => $table_mapping
            ->getColumnNames('purchased_entity')['target_id'],
          'relationship field' => $entity_type
            ->getKey('id'),
          'id' => 'standard',
          'label' => $this->entityType
            ->getLabel(),
          'entity_type' => $this->entityType
            ->id(),
        ],
      ];
    }
    return $data;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CommerceEntityViewsData::$entityTypeBundleInfo protected property The entity type bundle info.
CommerceEntityViewsData::$tableMapping protected property The table mapping.
CommerceEntityViewsData::addBundleFieldData protected function Adds views data for the given bundle field.
CommerceEntityViewsData::addReverseRelationships protected function Adds reverse relationships for the base entity reference fields.
CommerceEntityViewsData::mapFieldDefinition protected function Puts the views data for a single field onto the views data. Overrides EntityViewsData::mapFieldDefinition
CommerceEntityViewsData::processViewsDataForAddress protected function Corrects the views data for address base fields.
CommerceEntityViewsData::processViewsDataForAddressCountry protected function Corrects the views data for address_country base fields.
CommerceEntityViewsData::processViewsDataForCommercePrice protected function Corrects the views data for commerce_price base fields.
CommerceEntityViewsData::processViewsDataForDatetime protected function Corrects the views data for datetime base fields. 1
CommerceEntityViewsData::processViewsDataForListFloat protected function Corrects the views data for list_float base fields.
CommerceEntityViewsData::processViewsDataForListInteger protected function Corrects the views data for list_integer base fields.
CommerceEntityViewsData::processViewsDataForListString protected function Corrects the views data for list_string base fields.
CommerceEntityViewsData::processViewsDataForState protected function Corrects the views data for state base fields.
DeprecatedServicePropertyTrait::__get public function Allows to access deprecated/removed properties.
EntityViewsData::$deprecatedProperties protected property
EntityViewsData::$entityFieldManager protected property The entity field manager.
EntityViewsData::$entityType protected property Entity type for this views data handler instance.
EntityViewsData::$entityTypeManager protected property The entity type manager.
EntityViewsData::$fieldStorageDefinitions protected property The field storage definitions for all base fields of the entity type.
EntityViewsData::$moduleHandler protected property The module handler.
EntityViewsData::$storage protected property The storage used for this entity type.
EntityViewsData::$translationManager protected property The translation manager.
EntityViewsData::addEntityLinks protected function Sets the entity links in case corresponding link templates exist.
EntityViewsData::getFieldStorageDefinitions protected function Gets the field storage definitions.
EntityViewsData::getViewsTableForEntityType public function Gets the table of an entity type to be used as base table in views. Overrides EntityViewsDataInterface::getViewsTableForEntityType
EntityViewsData::mapSingleFieldViewsData protected function Provides the views data for a given data type and schema field.
EntityViewsData::processViewsDataForEntityReference protected function Processes the views data for an entity reference field.
EntityViewsData::processViewsDataForLanguage protected function Processes the views data for a language field.
EntityViewsData::processViewsDataForTextLong protected function Processes the views data for a text field with formatting.
EntityViewsData::processViewsDataForUuid protected function Processes the views data for a UUID field.
EntityViewsData::__construct public function Constructs an EntityViewsData object.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
SubscriptionViewsData::$purchasableEntityTypeRepository protected property The purchasable entity type repository.
SubscriptionViewsData::createInstance public static function Instantiates a new instance of this entity handler. Overrides CommerceEntityViewsData::createInstance
SubscriptionViewsData::getViewsData public function Returns views data for the entity type. Overrides CommerceEntityViewsData::getViewsData