trait RevisionLogEntityTrait
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Entity/RevisionLogEntityTrait.php \Drupal\Core\Entity\RevisionLogEntityTrait
- 10 core/lib/Drupal/Core/Entity/RevisionLogEntityTrait.php \Drupal\Core\Entity\RevisionLogEntityTrait
- 11.x core/lib/Drupal/Core/Entity/RevisionLogEntityTrait.php \Drupal\Core\Entity\RevisionLogEntityTrait
Provides a trait for accessing revision logging and ownership information.
Hierarchy
- trait \Drupal\Core\Entity\RevisionLogEntityTrait
Related topics
1 file declares its use of RevisionLogEntityTrait
- EntityTestMulRevChangedWithRevisionLog.php in core/
modules/ system/ tests/ modules/ entity_test/ src/ Entity/ EntityTestMulRevChangedWithRevisionLog.php
File
-
core/
lib/ Drupal/ Core/ Entity/ RevisionLogEntityTrait.php, line 14
Namespace
Drupal\Core\EntityView source
trait RevisionLogEntityTrait {
/**
* Provides revision-related base field definitions for an entity type.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* The entity type definition.
*
* @return \Drupal\Core\Field\FieldDefinitionInterface[]
* An array of base field definitions for the entity type, keyed by field
* name.
*
* @see \Drupal\Core\Entity\FieldableEntityInterface::baseFieldDefinitions()
*/
public static function revisionLogBaseFieldDefinitions(EntityTypeInterface $entity_type) {
if (!$entity_type instanceof ContentEntityTypeInterface) {
throw new UnsupportedEntityTypeDefinitionException('The entity type ' . $entity_type->id() . ' is not a content entity type.');
}
foreach ([
'revision_created',
'revision_user',
'revision_log_message',
] as $revision_metadata_key) {
if (!$entity_type->hasRevisionMetadataKey($revision_metadata_key)) {
throw new UnsupportedEntityTypeDefinitionException('The entity type ' . $entity_type->id() . ' does not have an "' . $revision_metadata_key . '" entity revision metadata key.');
}
}
$fields[$entity_type->getRevisionMetadataKey('revision_created')] = BaseFieldDefinition::create('created')->setLabel(t('Revision create time'))
->setDescription(t('The time that the current revision was created.'))
->setRevisionable(TRUE);
$fields[$entity_type->getRevisionMetadataKey('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);
$fields[$entity_type->getRevisionMetadataKey('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,
],
]);
return $fields;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionCreationTime().
*/
public function getRevisionCreationTime() {
return $this->{$this->getEntityType()
->getRevisionMetadataKey('revision_created')}->value;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionCreationTime().
*/
public function setRevisionCreationTime($timestamp) {
$this->{$this->getEntityType()
->getRevisionMetadataKey('revision_created')}->value = $timestamp;
return $this;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUser().
*/
public function getRevisionUser() {
return $this->{$this->getEntityType()
->getRevisionMetadataKey('revision_user')}->entity;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUser().
*/
public function setRevisionUser(UserInterface $account) {
$this->{$this->getEntityType()
->getRevisionMetadataKey('revision_user')}->entity = $account;
return $this;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUserId().
*/
public function getRevisionUserId() {
return $this->{$this->getEntityType()
->getRevisionMetadataKey('revision_user')}->target_id;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUserId().
*/
public function setRevisionUserId($user_id) {
$this->{$this->getEntityType()
->getRevisionMetadataKey('revision_user')}->target_id = $user_id;
return $this;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionLogMessage().
*/
public function getRevisionLogMessage() {
return $this->{$this->getEntityType()
->getRevisionMetadataKey('revision_log_message')}->value;
}
/**
* Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionLogMessage().
*/
public function setRevisionLogMessage($revision_log_message) {
$this->{$this->getEntityType()
->getRevisionMetadataKey('revision_log_message')}->value = $revision_log_message;
return $this;
}
/**
* Gets the name of a revision metadata field.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* A content entity type definition.
* @param string $key
* The revision metadata key to get, must be one of 'revision_created',
* 'revision_user' or 'revision_log_message'.
*
* @return string
* The name of the field for the specified $key.
*/
protected static function getRevisionMetadataKey(EntityTypeInterface $entity_type, $key) {
@trigger_error(static::class . 'getRevisionMetadataKey() is deprecated in drupal:9.0.0 and is removed from drupal:10.0.0. Use $entity_type->getRevisionMetadataKey() instead. See: https://www.drupal.org/node/2831499', E_USER_DEPRECATED);
/** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */
return $entity_type->getRevisionMetadataKey($key);
}
/**
* Gets the entity type definition.
*
* @return \Drupal\Core\Entity\ContentEntityTypeInterface
* The content entity type definition.
*/
public abstract function getEntityType();
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overrides |
---|---|---|---|---|
RevisionLogEntityTrait::getEntityType | abstract public | function | Gets the entity type definition. | |
RevisionLogEntityTrait::getRevisionCreationTime | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionCreationTime(). | 1 |
RevisionLogEntityTrait::getRevisionLogMessage | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionLogMessage(). | 1 |
RevisionLogEntityTrait::getRevisionMetadataKey | protected static | function | Gets the name of a revision metadata field. | |
RevisionLogEntityTrait::getRevisionUser | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUser(). | 1 |
RevisionLogEntityTrait::getRevisionUserId | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUserId(). | 1 |
RevisionLogEntityTrait::revisionLogBaseFieldDefinitions | public static | function | Provides revision-related base field definitions for an entity type. | |
RevisionLogEntityTrait::setRevisionCreationTime | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionCreationTime(). | 1 |
RevisionLogEntityTrait::setRevisionLogMessage | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionLogMessage(). | 1 |
RevisionLogEntityTrait::setRevisionUser | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUser(). | 1 |
RevisionLogEntityTrait::setRevisionUserId | public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUserId(). | 1 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.