entity_generic-8.x-3.x-dev/src/Entity/Simple.php
src/Entity/Simple.php
<?php
namespace Drupal\entity_generic\Entity;
use Drupal\Core\Entity\EntityPublishedTrait;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\RevisionLogEntityTrait;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\entity_generic\Generic\EntityLabelTrait;
use Drupal\user\EntityOwnerTrait;
/**
* Implements simple entity class.
*/
abstract class Simple extends Basic implements SimpleInterface {
use EntityOwnerTrait;
use EntityLabelTrait;
use EntityPublishedTrait;
use RevisionLogEntityTrait;
/**
* {@inheritdoc}
*/
public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
$fields = parent::baseFieldDefinitions($entity_type);
// Revision field.
if ($entity_type->isRevisionable()) {
// Add the revision metadata fields.
$fields += static::revisionLogBaseFieldDefinitions($entity_type);
$fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer')
->setLabel(t('Revision ID'))
->setReadOnly(TRUE)
->setSetting('unsigned', TRUE);
}
// Status field.
if ($entity_type->hasKey('status')) {
$status_key = $entity_type->getKey('status');
$fields[$status_key] = BaseFieldDefinition::create('boolean')
->setLabel(t('Status'))
->setDefaultValue(TRUE)
->setSettings([
'on_label' => t('Enabled'),
'off_label' => t('Disabled'),
])
->setDisplayOptions('form', array(
'type' => 'boolean_checkbox',
'settings' => array(
'display_label' => TRUE,
),
'weight' => 0,
))
->setDisplayConfigurable('form', TRUE);
if ($entity_type->isRevisionable()) {
$fields[$status_key]->setRevisionable(TRUE);
}
}
// Label field.
if ($entity_type->hasKey('label') && $entity_type->getKey('label') != $entity_type->getKey('id')) {
$label_key = $entity_type->getKey('label');
$fields[$label_key] = BaseFieldDefinition::create('string')
->setLabel(t('Label'))
->setRequired(TRUE)
->setSetting('max_length', 255)
->setDisplayOptions('view', array(
'label' => 'hidden',
'type' => 'string',
'weight' => -5,
))
->setDisplayConfigurable('view', TRUE)
->setDisplayOptions('form', array(
'type' => 'string_textfield',
'weight' => -5,
))
->setDisplayConfigurable('form', TRUE);
if ($entity_type->isRevisionable()) {
$fields[$label_key]->setRevisionable(TRUE);
}
if ($entity_type->isTranslatable()) {
$fields[$label_key]->setTranslatable(TRUE);
}
}
// Owner UID field.
if ($entity_type->hasKey('uid')) {
$owner_key = $entity_type->getKey('uid');
$fields[$owner_key] = BaseFieldDefinition::create('entity_reference')
->setLabel(t('Owner'))
->setSetting('target_type', 'user')
->setSetting('handler', 'default')
->setDefaultValueCallback('Drupal\entity_generic\Entity\Simple::getCurrentUserId')
->setDisplayOptions('view', array(
'label' => 'inline',
'type' => 'author',
'weight' => 5,
))
->setDisplayConfigurable('view', TRUE)
->setDisplayOptions('form', array(
'type' => 'entity_reference_autocomplete',
'weight' => 5,
'settings' => array(
'match_operator' => 'CONTAINS',
'size' => '60',
'placeholder' => '',
),
))
->setDisplayConfigurable('form', TRUE);
if ($entity_type->isRevisionable()) {
$fields[$owner_key]->setRevisionable(TRUE);
}
}
return $fields;
}
/**
* Default value callback for 'uid' base field definition.
*
* @see ::baseFieldDefinitions()
*
* @return int[]
* An array of default values.
*/
public static function getCurrentUserId() {
return [\Drupal::currentUser()->id()];
}
}
