3 namespace Drupal\media_entity;
5 use Drupal\Core\Entity\EditorialContentEntityBase;
6 use Drupal\Core\Entity\EntityTypeInterface;
7 use Drupal\Core\Field\BaseFieldDefinition;
9 final class Media extends EditorialContentEntityBase {
14 public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
15 $fields = parent::baseFieldDefinitions($entity_type);
17 $fields['name'] = BaseFieldDefinition::create('string')
20 ->setTranslatable(TRUE)
21 ->setRevisionable(TRUE)
23 ->setSetting('max_length', 255)
24 ->setDisplayOptions('form', [
25 'type' => 'string_textfield',
28 ->setDisplayConfigurable('form', TRUE)
29 ->setDisplayOptions('view', [
35 $fields['thumbnail'] = BaseFieldDefinition::create('image')
36 ->setLabel(t('Thumbnail'))
37 ->setDescription(t('The thumbnail of the media item.'))
38 ->setRevisionable(TRUE)
39 ->setTranslatable(TRUE)
40 ->setDisplayOptions('view', [
45 'image_style' => 'thumbnail',
48 ->setDisplayConfigurable('view', TRUE)
51 $fields['uid'] = BaseFieldDefinition::create('entity_reference')
52 ->setLabel(t('Authored by'))
53 ->setDescription(t('The user ID of the author.'))
54 ->setRevisionable(TRUE)
55 ->setDefaultValueCallback(static::class . '::getCurrentUserId')
56 ->setSetting('target_type', 'user')
57 ->setTranslatable(TRUE)
58 ->setDisplayOptions('form', [
59 'type' => 'entity_reference_autocomplete',
62 'match_operator' => 'CONTAINS',
64 'autocomplete_type' => 'tags',
68 ->setDisplayConfigurable('form', TRUE)
69 ->setDisplayOptions('view', [
74 ->setDisplayConfigurable('view', TRUE);
77 ->setDisplayOptions('form', [
78 'type' => 'boolean_checkbox',
80 'display_label' => TRUE,
84 ->setDisplayConfigurable('form', TRUE);
86 $fields['created'] = BaseFieldDefinition::create('created')
87 ->setLabel(t('Authored on'))
88 ->setDescription(t('The time the media item was created.'))
89 ->setTranslatable(TRUE)
90 ->setRevisionable(TRUE)
91 ->setDefaultValueCallback(static::class . '::getRequestTime')
92 ->setDisplayOptions('form', [
93 'type' => 'datetime_timestamp',
96 ->setDisplayConfigurable('form', TRUE)
97 ->setDisplayOptions('view', [
99 'type' => 'timestamp',
102 ->setDisplayConfigurable('view', TRUE);
104 $fields['changed'] = BaseFieldDefinition::create('changed')
105 ->setLabel(t('Changed'))
106 ->setDescription(t('The time the media item was last edited.'))
107 ->setTranslatable(TRUE)
108 ->setRevisionable(TRUE);