Version 1
[yaffs-website] / web / core / modules / system / tests / modules / entity_test_update / src / Entity / EntityTestUpdate.php
1 <?php
2
3 namespace Drupal\entity_test_update\Entity;
4
5 use Drupal\Core\Entity\ContentEntityBase;
6 use Drupal\Core\Entity\EntityStorageInterface;
7 use Drupal\Core\Entity\EntityTypeInterface;
8 use Drupal\Core\Field\BaseFieldDefinition;
9 use Drupal\Core\StringTranslation\TranslatableMarkup;
10
11 /**
12  * Defines the test entity class for testing definition and schema updates.
13  *
14  * This entity type starts out non-revisionable and non-translatable, but during
15  * an update test it can be made revisionable and translatable using the helper
16  * methods from \Drupal\system\Tests\Entity\EntityDefinitionTestTrait.
17  *
18  * @ContentEntityType(
19  *   id = "entity_test_update",
20  *   label = @Translation("Test entity update"),
21  *   handlers = {
22  *     "storage_schema" = "Drupal\entity_test_update\EntityTestUpdateStorageSchema",
23  *   },
24  *   base_table = "entity_test_update",
25  *   persistent_cache = FALSE,
26  *   entity_keys = {
27  *     "id" = "id",
28  *     "uuid" = "uuid",
29  *     "bundle" = "type",
30  *     "label" = "name",
31  *     "langcode" = "langcode",
32  *   },
33  *   content_translation_ui_skip = TRUE,
34  * )
35  */
36 class EntityTestUpdate extends ContentEntityBase {
37
38   /**
39    * {@inheritdoc}
40    */
41   public static function preCreate(EntityStorageInterface $storage, array &$values) {
42     parent::preCreate($storage, $values);
43     if (empty($values['type'])) {
44       $values['type'] = $storage->getEntityTypeId();
45     }
46   }
47
48   /**
49    * {@inheritdoc}
50    */
51   public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
52     // This entity type is used for generating database dumps from Drupal
53     // 8.0.0-rc1, which didn't have the entity key base fields defined in
54     // the parent class (ContentEntityBase), so we have to duplicate them here.
55
56     $fields[$entity_type->getKey('id')] = BaseFieldDefinition::create('integer')
57       ->setLabel(new TranslatableMarkup('ID'))
58       ->setDescription(new TranslatableMarkup('The ID of the test entity.'))
59       ->setReadOnly(TRUE)
60       ->setSetting('unsigned', TRUE);
61
62     $fields[$entity_type->getKey('uuid')] = BaseFieldDefinition::create('uuid')
63       ->setLabel(new TranslatableMarkup('UUID'))
64       ->setDescription(new TranslatableMarkup('The UUID of the test entity.'))
65       ->setReadOnly(TRUE);
66
67     $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('string')
68       ->setLabel(new TranslatableMarkup('Type'))
69       ->setDescription(new TranslatableMarkup('The bundle of the test entity.'))
70       ->setRequired(TRUE);
71
72     if ($entity_type->hasKey('revision')) {
73       $fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer')
74         ->setLabel(new TranslatableMarkup('Revision ID'))
75         ->setReadOnly(TRUE)
76         ->setSetting('unsigned', TRUE);
77     }
78
79     $fields[$entity_type->getKey('langcode')] = BaseFieldDefinition::create('language')
80       ->setLabel(new TranslatableMarkup('Language'));
81     if ($entity_type->isRevisionable()) {
82       $fields[$entity_type->getKey('langcode')]->setRevisionable(TRUE);
83     }
84     if ($entity_type->isTranslatable()) {
85       $fields[$entity_type->getKey('langcode')]->setTranslatable(TRUE);
86     }
87
88     $fields['name'] = BaseFieldDefinition::create('string')
89       ->setLabel(new TranslatableMarkup('Name'))
90       ->setDescription(new TranslatableMarkup('The name of the test entity.'))
91       ->setTranslatable(TRUE)
92       ->setRevisionable(TRUE)
93       ->setSetting('max_length', 32)
94       ->setDisplayOptions('view', [
95         'label' => 'hidden',
96         'type' => 'string',
97         'weight' => -5,
98       ])
99       ->setDisplayOptions('form', [
100         'type' => 'string_textfield',
101         'weight' => -5,
102       ]);
103
104     $fields['test_single_property'] = BaseFieldDefinition::create('string')
105       ->setLabel(new TranslatableMarkup('Field with a single property'))
106       ->setTranslatable(TRUE)
107       ->setRevisionable(TRUE);
108
109     $fields['test_multiple_properties'] = BaseFieldDefinition::create('multi_value_test')
110       ->setLabel(new TranslatableMarkup('Field with multiple properties'))
111       ->setTranslatable(TRUE)
112       ->setRevisionable(TRUE);
113
114     $fields['test_single_property_multiple_values'] = BaseFieldDefinition::create('string')
115       ->setLabel(new TranslatableMarkup('Field with a single property and multiple values'))
116       ->setCardinality(2)
117       ->setTranslatable(TRUE)
118       ->setRevisionable(TRUE);
119
120     $fields['test_multiple_properties_multiple_values'] = BaseFieldDefinition::create('multi_value_test')
121       ->setLabel(new TranslatableMarkup('Field with multiple properties and multiple values'))
122       ->setCardinality(2)
123       ->setTranslatable(TRUE)
124       ->setRevisionable(TRUE);
125
126     $fields['test_non_rev_field'] = BaseFieldDefinition::create('string')
127       ->setLabel(new TranslatableMarkup('Non Revisionable Field'))
128       ->setDescription(new TranslatableMarkup('A non-revisionable test field.'))
129       ->setCardinality(1)
130       ->setRevisionable(FALSE)
131       ->setTranslatable(TRUE);
132
133     $fields['test_non_mul_field'] = BaseFieldDefinition::create('string')
134       ->setLabel(new TranslatableMarkup('Non Translatable Field'))
135       ->setDescription(new TranslatableMarkup('A non-translatable test field.'))
136       ->setCardinality(1)
137       ->setRevisionable(TRUE)
138       ->setTranslatable(FALSE);
139
140     $fields['test_non_mulrev_field'] = BaseFieldDefinition::create('string')
141       ->setLabel(new TranslatableMarkup('Non Revisionable and Translatable Field'))
142       ->setDescription(new TranslatableMarkup('A non-revisionable and non-translatable test field.'))
143       ->setCardinality(1)
144       ->setRevisionable(FALSE)
145       ->setTranslatable(FALSE);
146
147     $fields += \Drupal::state()->get('entity_test_update.additional_base_field_definitions', []);
148     return $fields;
149   }
150
151   /**
152    * {@inheritdoc}
153    */
154   public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
155     $fields = parent::bundleFieldDefinitions($entity_type, $bundle, $base_field_definitions);
156     $fields += \Drupal::state()->get('entity_test_update.additional_bundle_field_definitions.' . $bundle, []);
157     return $fields;
158   }
159
160 }