diff --git a/core/modules/system/src/EntitySchemaUpdater.php b/core/modules/system/src/EntitySchemaUpdater.php index 7af9bb5..0dacfd8 100644 --- a/core/modules/system/src/EntitySchemaUpdater.php +++ b/core/modules/system/src/EntitySchemaUpdater.php @@ -20,12 +20,53 @@ public function createTables(EntityTypeInterface $entity_type) { } public function addRevisionField(EntityTypeInterface $entity_type) { - $storage_definition = BaseFieldDefinition::create('integer') + $revision_id = BaseFieldDefinition::create('integer') ->setLabel(new TranslatableMarkup('Revision ID')) ->setReadOnly(TRUE) - ->setSetting('unsigned', TRUE) - ->setDefaultValue(1); + ->setSetting('unsigned', TRUE); \Drupal::entityDefinitionUpdateManager() - ->installFieldStorageDefinition($entity_type->getKey('revision'), $entity_type->id(), $entity_type->id(), $storage_definition); + ->installFieldStorageDefinition($entity_type->getKey('revision'), $entity_type->id(), $entity_type->id(), $revision_id); + + $revision_created = BaseFieldDefinition::create('created') + ->setLabel(t('Revision create time')) + ->setDescription(t('The time that the current revision was created.')) + ->setRevisionable(TRUE); + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition("revision_created", $entity_type->id(), $entity_type->id(), $revision_created); + + + $revision_user = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Revision user')) + ->setDescription(t('The user ID of the author of the current revision.')) + ->setSetting('target_type', 'user') + ->setRevisionable(TRUE); + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition("revision_user", $entity_type->id(), $entity_type->id(), $revision_user); + + + $revision_log_message = BaseFieldDefinition::create('string_long') + ->setLabel(t('Revision log message')) + ->setDescription(t('Briefly describe the changes you have made.')) + ->setRevisionable(TRUE) + ->setDefaultValue('') + ->setDisplayOptions('form', [ + 'type' => 'string_textarea', + 'weight' => 25, + 'settings' => [ + 'rows' => 4, + ], + ]); + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition("revision_log_message", $entity_type->id(), $entity_type->id(), $revision_log_message); + + $entity_field_manager = \Drupal::service('entity_field.manager'); + /** @var \Drupal\Core\Field\FieldStorageDefinitionInterface[] $definitions */ + $definitions = $entity_field_manager->getFieldStorageDefinitions($entity_type->id()); + foreach ($definitions as $definition) { + if ($definition->isTranslatable() && $definition->isBaseField()) { + $definition->setRevisionable(TRUE); + } + } } + }