You are here

function multiversion_entity_base_field_info in Multiversion 8.2

Same name and namespace in other branches
  1. 8 multiversion.module \multiversion_entity_base_field_info()

Implements hook_entity_base_field_info().

Parameters

\Drupal\Core\Entity\EntityTypeInterface $entity_type:

Return value

\Drupal\Core\Field\BaseFieldDefinition[]

File

./multiversion.module, line 148

Code

function multiversion_entity_base_field_info(EntityTypeInterface $entity_type) {

  /** @var \Drupal\multiversion\MultiversionManagerInterface $manager */
  $manager = \Drupal::service('multiversion.manager');
  if ($manager
    ->allowToAlter($entity_type)) {
    $fields = [];

    // Get the 'published' key for the published status field.
    $published_key = $entity_type
      ->getKey('published') ?: 'status';

    // Add the status field.
    if (empty($fields[$published_key])) {
      $fields[$published_key] = BaseFieldDefinition::create('boolean')
        ->setName($published_key)
        ->setTargetEntityTypeId($entity_type
        ->id())
        ->setTargetBundle(NULL)
        ->setLabel(t('Publishing status'))
        ->setDescription(t('A boolean indicating the published state.'))
        ->setRevisionable(TRUE)
        ->setTranslatable(TRUE)
        ->setDefaultValue(TRUE);
    }
    $fields['_deleted'] = BaseFieldDefinition::create('boolean')
      ->setName('_deleted')
      ->setTargetEntityTypeId($entity_type
      ->id())
      ->setTargetBundle(NULL)
      ->setLabel(t('Deleted flag'))
      ->setDescription(t('Indicates if the entity is flagged as deleted or not.'))
      ->setRevisionable(TRUE)
      ->setTranslatable(FALSE)
      ->setDefaultValue(FALSE)
      ->setCardinality(1);
    $fields['_rev'] = BaseFieldDefinition::create('revision_token')
      ->setName('_rev')
      ->setTargetEntityTypeId($entity_type
      ->id())
      ->setTargetBundle(NULL)
      ->setLabel(t('Revision token'))
      ->setDescription(t('The token for this entity revision.'))
      ->setRevisionable(TRUE)
      ->setTranslatable(FALSE)
      ->setCardinality(1)
      ->setReadOnly(TRUE);
    return $fields;
  }
}