entity_generic-8.x-3.x-dev/src/Entity/Basic.php

src/Entity/Basic.php
<?php

namespace Drupal\entity_generic\Entity;

use Drupal\Core\Entity\ContentEntityBase;
use Drupal\Core\Entity\EntityChangedTrait;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Session\AccountInterface;
use Drupal\entity_generic\Generic\EntityApprovedTrait;
use Drupal\entity_generic\Generic\EntityArchivedTrait;
use Drupal\entity_generic\Generic\EntityCreatedTrait;
use Drupal\entity_generic\Generic\EntityDeletedTrait;

/**
 * Implements basic entity class.
 */
abstract class Basic extends ContentEntityBase implements BasicInterface {

  use EntityCreatedTrait;
  use EntityChangedTrait;
  use EntityArchivedTrait;
  use EntityDeletedTrait;
  use EntityApprovedTrait;

  /**
   * {@inheritdoc}
   */
  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {

    $fields = parent::baseFieldDefinitions($entity_type);

    if ($entity_type->hasKey('created')) {
      $fields[$entity_type->getKey('created')] = BaseFieldDefinition::create('created')
        ->setLabel(t('Created'))
        ->setDisplayOptions('form', array(
          'type' => 'datetime_timestamp',
          'weight' => 10,
        ))
        ->setDisplayConfigurable('form', TRUE)
        ->setDisplayOptions('view', array(
          'label' => 'hidden',
          'type' => 'timestamp',
          'weight' => 10,
        ))
        ->setDisplayConfigurable('view', TRUE);
      if ($entity_type->isRevisionable()) {
        $fields[$entity_type->getKey('created')]->setRevisionable(TRUE);
      }
    }

    if ($entity_type->hasKey('changed')) {
      $fields['changed'] = BaseFieldDefinition::create('changed')
        ->setLabel(t('Changed'))
        ->setDisplayOptions('view', array(
          'label' => 'hidden',
          'type' => 'timestamp',
          'weight' => 20,
        ))
        ->setDisplayConfigurable('view', TRUE);
    }

    // Archived field.
    if ($entity_type->hasKey('archived')) {
      $fields[$entity_type->getKey('archived')] = BaseFieldDefinition::create('boolean')
        ->setLabel(t('Archived'))
        ->setTranslatable(FALSE)
        ->setRevisionable(FALSE)
        ->setDefaultValue(FALSE)
        ->setStorageRequired(TRUE)
        ->setSettings([
          'on_label' => t('Archived'),
          'off_label' => t('Not archived'),
        ])
        ->setDisplayOptions('form', array(
          'type' => 'boolean_checkbox',
          'settings' => array(
            'display_label' => TRUE,
          ),
          'weight' => 0,
        ))
        ->setDisplayConfigurable('form', TRUE);

      $fields[$entity_type->getKey('archived') . '_time'] = BaseFieldDefinition::create('timestamp')
        ->setLabel(t('Archived time'))
        ->setDescription(t('Date and time the entity archived.'))
        ->setTranslatable(FALSE)
        ->setRevisionable(FALSE)
        ->setDisplayOptions('form', [
          'type' => 'datetime_timestamp',
          'weight' => 0,
        ])
        ->setDisplayConfigurable('form', TRUE)
        ->setDisplayOptions('view', [
          'label' => 'inline',
          'type' => 'timestamp',
          'weight' => 0,
        ])
        ->setDisplayConfigurable('view', TRUE);
    }

    // Deleted field.
    if ($entity_type->hasKey('flag_deleted')) {
      $fields[$entity_type->getKey('flag_deleted')] = BaseFieldDefinition::create('boolean')
        ->setLabel(t('Deleted'))
        ->setTranslatable(FALSE)
        ->setRevisionable(FALSE)
        ->setDefaultValue(FALSE)
        ->setStorageRequired(TRUE)
        ->setSettings([
          'on_label' => t('Deleted'),
          'off_label' => t('Not deleted'),
        ])
        ->setDisplayOptions('form', array(
          'type' => 'boolean_checkbox',
          'settings' => array(
            'display_label' => TRUE,
          ),
          'weight' => 0,
        ))
        ->setDisplayConfigurable('form', TRUE);

      $fields[$entity_type->getKey('flag_deleted') . '_time'] = BaseFieldDefinition::create('timestamp')
        ->setLabel(t('Deleted time'))
        ->setDescription(t('Date and time the entity flagged as deleted.'))
        ->setTranslatable(FALSE)
        ->setRevisionable(FALSE)
        ->setDisplayOptions('form', [
          'type' => 'datetime_timestamp',
          'weight' => 0,
        ])
        ->setDisplayConfigurable('form', TRUE)
        ->setDisplayOptions('view', [
          'label' => 'inline',
          'type' => 'timestamp',
          'weight' => 0,
        ])
        ->setDisplayConfigurable('view', TRUE);
    }

    // Approved field.
    if ($entity_type->hasKey('approved')) {
      $fields[$entity_type->getKey('approved')] = BaseFieldDefinition::create('boolean')
        ->setLabel(t('Approved'))
        ->setTranslatable(FALSE)
        ->setRevisionable(FALSE)
        ->setDefaultValue(FALSE)
        ->setStorageRequired(TRUE)
        ->setSettings([
          'on_label' => t('Approved'),
          'off_label' => t('Not approved'),
        ])
        ->setDisplayOptions('form', array(
          'type' => 'boolean_checkbox',
          'settings' => array(
            'display_label' => TRUE,
          ),
          'weight' => 0,
        ))
        ->setDisplayConfigurable('form', TRUE);

      $fields[$entity_type->getKey('approved') . '_time'] = BaseFieldDefinition::create('timestamp')
        ->setLabel(t('Approved time'))
        ->setDescription(t('Date and time the entity approved.'))
        ->setTranslatable(FALSE)
        ->setRevisionable(FALSE)
        ->setDisplayOptions('form', [
          'type' => 'datetime_timestamp',
          'weight' => 0,
        ])
        ->setDisplayConfigurable('form', TRUE)
        ->setDisplayOptions('view', [
          'label' => 'inline',
          'type' => 'timestamp',
          'weight' => 0,
        ])
        ->setDisplayConfigurable('view', TRUE);
    }

    return $fields;
  }

  /**
   * {@inheritdoc}
   */
  public function access($operation = 'view', AccountInterface $account = NULL, $return_as_object = FALSE) {
    // This override exists to set the operation to the default value "view".
    return parent::access($operation, $account, $return_as_object);
  }

}

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

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