slides_presentation-8.x-1.x-dev/src/Entity/Slide.php
src/Entity/Slide.php
<?php namespace Drupal\slides_presentation\Entity; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Entity\ContentEntityBase; use Drupal\Core\Entity\EntityChangedTrait; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\slides_presentation\SlideInterface; use Drupal\user\UserInterface; /** * Defines the Slide entity. * * @ingroup slides_presentation * * @ContentEntityType( * id = "slides_slide", * label = @Translation("Slide"), * handlers = { * "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", * "list_builder" = "Drupal\slides_presentation\SlideListBuilder", * "views_data" = "Drupal\slides_presentation\Entity\SlideViewsData", * * "form" = { * "default" = "Drupal\slides_presentation\Entity\Form\SlideForm", * "add" = "Drupal\slides_presentation\Entity\Form\SlideForm", * "edit" = "Drupal\slides_presentation\Entity\Form\SlideForm", * "delete" = "Drupal\slides_presentation\Entity\Form\SlideDeleteForm", * }, * "access" = "Drupal\slides_presentation\SlideAccessControlHandler", * }, * base_table = "slides_slide", * admin_permission = "administer Slide entity", * entity_keys = { * "id" = "id", * "label" = "name", * "uuid" = "uuid" * }, * links = { * "canonical" = "/admin/slides_slide/{slides_slide}", * "edit-form" = "/admin/slides_slide/{slides_slide}/edit", * "delete-form" = "/admin/slides_slide/{slides_slide}/delete" * }, * field_ui_base_route = "slides_slide.settings" * ) */ class Slide extends ContentEntityBase implements SlideInterface { use EntityChangedTrait; /** * {@inheritdoc} */ public static function preCreate(EntityStorageInterface $storage_controller, array &$values) { parent::preCreate($storage_controller, $values); $values += [ 'user_id' => \Drupal::currentUser()->id(), ]; } /** * {@inheritdoc} */ public function getCreatedTime() { return $this->get('created')->value; } /** * {@inheritdoc} */ public function getOwner() { return $this->get('user_id')->entity; } /** * {@inheritdoc} */ public function getOwnerId() { return $this->get('user_id')->target_id; } /** * {@inheritdoc} */ public function setOwnerId($uid) { $this->set('user_id', $uid); return $this; } /** * {@inheritdoc} */ public function setOwner(UserInterface $account) { $this->set('user_id', $account->id()); return $this; } /** * {@inheritdoc} */ public function getPresentation() { return $this->get('presentation_id')->entity; } /** * {@inheritdoc} */ public function getPresentationId() { return $this->get('presentation_id')->target_id; } /** * {@inheritdoc} */ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { $fields['id'] = BaseFieldDefinition::create('integer') ->setLabel(t('ID')) ->setDescription(t('The ID of the Slide entity.')) ->setReadOnly(TRUE); $fields['uuid'] = BaseFieldDefinition::create('uuid') ->setLabel(t('UUID')) ->setDescription(t('The UUID of the Slide entity.')) ->setReadOnly(TRUE); $fields['user_id'] = BaseFieldDefinition::create('entity_reference') ->setLabel(t('Authored by')) ->setDescription(t('The user ID of author of the Slide entity.')) ->setRevisionable(TRUE) ->setSetting('target_type', 'user') ->setSetting('handler', 'default') ->setDefaultValueCallback('Drupal\node\Entity\Node::getCurrentUserId') ->setTranslatable(TRUE) ->setDisplayOptions('view', [ 'label' => 'hidden', 'type' => 'author', 'weight' => 0, ]) ->setDisplayOptions('form', [ 'type' => 'entity_reference_autocomplete', 'weight' => 5, 'settings' => [ 'match_operator' => 'CONTAINS', 'size' => '60', 'autocomplete_type' => 'tags', 'placeholder' => '', ], ]) ->setDisplayConfigurable('form', TRUE) ->setDisplayConfigurable('view', TRUE); $fields['presentation_id'] = BaseFieldDefinition::create('entity_reference') ->setLabel(t('Presentation')) ->setDescription(t('The presentation ID of the Slide.')) ->setRevisionable(TRUE) ->setSetting('target_type', 'slides_presentation') ->setSetting('handler', 'default') ->setTranslatable(TRUE) ->setDisplayOptions('form', [ 'type' => 'entity_reference_autocomplete', 'weight' => -3, 'settings' => [ 'match_operator' => 'CONTAINS', 'size' => '60', 'autocomplete_type' => 'tags', 'placeholder' => '', ], ]) ->setDisplayConfigurable('form', TRUE); $fields['name'] = BaseFieldDefinition::create('string') ->setLabel(t('Name')) ->setDescription(t('The name of the Slide.')) ->setSettings([ 'max_length' => 50, 'text_processing' => 0, ]) ->setDefaultValue('') ->setDisplayOptions('view', [ 'label' => 'above', 'type' => 'string', 'weight' => -4, ]) ->setDisplayOptions('form', [ 'type' => 'string_textfield', 'weight' => -4, ]) ->setDisplayConfigurable('form', TRUE) ->setDisplayConfigurable('view', TRUE); $fields['body'] = BaseFieldDefinition::create('string_long') ->setLabel(t('Body')) ->setDescription(t('The body of the slide.')) ->setDefaultValue(''); $fields['status'] = BaseFieldDefinition::create('boolean') ->setLabel(t('Publishing status')) ->setDescription(t('A boolean indicating whether the slide is published.')) ->setRevisionable(TRUE) ->setTranslatable(TRUE) ->setDefaultValue(TRUE); $fields['langcode'] = BaseFieldDefinition::create('language') ->setLabel(t('Language code')) ->setDescription(t('The language code for the Slide entity.')); $fields['created'] = BaseFieldDefinition::create('created') ->setLabel(t('Created')) ->setDescription(t('The time that the entity was created.')); $fields['changed'] = BaseFieldDefinition::create('changed') ->setLabel(t('Changed')) ->setDescription(t('The time that the entity was last edited.')); return $fields; } }