Chris@0: setLabel(t('Revision create time')) Chris@0: ->setDescription(t('The time that the current revision was created.')) Chris@0: ->setRevisionable(TRUE); Chris@0: Chris@0: $fields[static::getRevisionMetadataKey($entity_type, 'revision_user')] = BaseFieldDefinition::create('entity_reference') Chris@0: ->setLabel(t('Revision user')) Chris@0: ->setDescription(t('The user ID of the author of the current revision.')) Chris@0: ->setSetting('target_type', 'user') Chris@0: ->setRevisionable(TRUE); Chris@0: Chris@0: $fields[static::getRevisionMetadataKey($entity_type, 'revision_log_message')] = BaseFieldDefinition::create('string_long') Chris@0: ->setLabel(t('Revision log message')) Chris@0: ->setDescription(t('Briefly describe the changes you have made.')) Chris@0: ->setRevisionable(TRUE) Chris@0: ->setDefaultValue('') Chris@0: ->setDisplayOptions('form', [ Chris@0: 'type' => 'string_textarea', Chris@0: 'weight' => 25, Chris@0: 'settings' => [ Chris@0: 'rows' => 4, Chris@0: ], Chris@0: ]); Chris@0: Chris@0: return $fields; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionCreationTime(). Chris@0: */ Chris@0: public function getRevisionCreationTime() { Chris@0: return $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_created')}->value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionCreationTime(). Chris@0: */ Chris@0: public function setRevisionCreationTime($timestamp) { Chris@0: $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_created')}->value = $timestamp; Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUser(). Chris@0: */ Chris@0: public function getRevisionUser() { Chris@0: return $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_user')}->entity; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUser(). Chris@0: */ Chris@0: public function setRevisionUser(UserInterface $account) { Chris@0: $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_user')}->entity = $account; Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUserId(). Chris@0: */ Chris@0: public function getRevisionUserId() { Chris@0: return $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_user')}->target_id; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUserId(). Chris@0: */ Chris@0: public function setRevisionUserId($user_id) { Chris@0: $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_user')}->target_id = $user_id; Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionLogMessage(). Chris@0: */ Chris@0: public function getRevisionLogMessage() { Chris@0: return $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_log_message')}->value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionLogMessage(). Chris@0: */ Chris@0: public function setRevisionLogMessage($revision_log_message) { Chris@0: $this->{static::getRevisionMetadataKey($this->getEntityType(), 'revision_log_message')}->value = $revision_log_message; Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets the name of a revision metadata field. Chris@0: * Chris@0: * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type Chris@0: * A content entity type definition. Chris@0: * @param string $key Chris@0: * The revision metadata key to get, must be one of 'revision_created', Chris@0: * 'revision_user' or 'revision_log_message'. Chris@0: * Chris@0: * @return string Chris@0: * The name of the field for the specified $key. Chris@0: */ Chris@0: protected static function getRevisionMetadataKey(EntityTypeInterface $entity_type, $key) { Chris@0: // We need to prevent ContentEntityType::getRevisionMetadataKey() from Chris@0: // providing fallback as that requires fetching the entity type's field Chris@0: // definition leading to an infinite recursion. Chris@0: /** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */ Chris@0: $revision_metadata_keys = $entity_type->getRevisionMetadataKeys(FALSE) + [ Chris@0: 'revision_created' => 'revision_created', Chris@0: 'revision_user' => 'revision_user', Chris@0: 'revision_log_message' => 'revision_log_message', Chris@0: ]; Chris@0: Chris@0: return $revision_metadata_keys[$key]; Chris@0: } Chris@0: Chris@0: }