class ChangedItem
Same name and namespace in other branches
- 11.x core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php \Drupal\Core\Field\Plugin\Field\FieldType\ChangedItem
- 10 core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php \Drupal\Core\Field\Plugin\Field\FieldType\ChangedItem
- 8.9.x core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php \Drupal\Core\Field\Plugin\Field\FieldType\ChangedItem
- main core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php \Drupal\Core\Field\Plugin\Field\FieldType\ChangedItem
Defines the 'changed' entity field type.
Based on a field of this type, entity types can easily implement the EntityChangedInterface.
Plugin annotation
@FieldType(
id = "changed",
label = @Translation("Last changed"),
description = @Translation("An entity field containing a UNIX timestamp of when the entity has been last updated."),
no_ui = TRUE,
default_widget = "datetime_timestamp",
default_formatter = "timestamp",
list_class = "\Drupal\Core\Field\ChangedFieldItemList"
)
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements \Drupal\Core\TypedData\TypedDataInterface, \Drupal\Component\Plugin\PluginInspectionInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\TypedData\TypedDataTrait
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, \Drupal\Core\TypedData\ComplexDataInterface extends \Drupal\Core\TypedData\TypedData
- class \Drupal\Core\Field\FieldItemBase implements \Drupal\Core\Field\FieldItemInterface extends \Drupal\Core\TypedData\Plugin\DataType\Map
- class \Drupal\Core\Field\Plugin\Field\FieldType\TimestampItem extends \Drupal\Core\Field\FieldItemBase
- class \Drupal\Core\Field\Plugin\Field\FieldType\CreatedItem extends \Drupal\Core\Field\Plugin\Field\FieldType\TimestampItem
- class \Drupal\Core\Field\Plugin\Field\FieldType\ChangedItem extends \Drupal\Core\Field\Plugin\Field\FieldType\CreatedItem
- class \Drupal\Core\Field\Plugin\Field\FieldType\CreatedItem extends \Drupal\Core\Field\Plugin\Field\FieldType\TimestampItem
- class \Drupal\Core\Field\Plugin\Field\FieldType\TimestampItem extends \Drupal\Core\Field\FieldItemBase
- class \Drupal\Core\Field\FieldItemBase implements \Drupal\Core\Field\FieldItemInterface extends \Drupal\Core\TypedData\Plugin\DataType\Map
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, \Drupal\Core\TypedData\ComplexDataInterface extends \Drupal\Core\TypedData\TypedData
Expanded class hierarchy of ChangedItem
See also
\Drupal\Core\Entity\EntityChangedInterface
2 files declare their use of ChangedItem
- ChangedTestItem.php in core/
modules/ system/ tests/ modules/ entity_test/ src/ Plugin/ Field/ FieldType/ ChangedTestItem.php - XmlEntityNormalizationQuirksTrait.php in core/
modules/ rest/ tests/ src/ Functional/ EntityResource/ XmlEntityNormalizationQuirksTrait.php
File
-
core/
lib/ Drupal/ Core/ Field/ Plugin/ Field/ FieldType/ ChangedItem.php, line 23
Namespace
Drupal\Core\Field\Plugin\Field\FieldTypeView source
class ChangedItem extends CreatedItem {
/**
* {@inheritdoc}
*/
public function preSave() {
parent::preSave();
// Set the timestamp to request time if it is not set.
if (!$this->value) {
$this->value = REQUEST_TIME;
}
else {
// On an existing entity translation, the changed timestamp will only be
// set to the request time automatically if at least one other field value
// of the entity has changed. This detection does not run on new entities
// and will be turned off if the changed timestamp is set manually before
// save, for example during migrations or by using
// \Drupal\content_translation\ContentTranslationMetadataWrapperInterface::setChangedTime().
/** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
$entity = $this->getEntity();
/** @var \Drupal\Core\Entity\ContentEntityInterface $original */
$original = $entity->original;
$langcode = $entity->language()
->getId();
if (!$entity->isNew() && $original && $original->hasTranslation($langcode)) {
$original_value = $original->getTranslation($langcode)
->get($this->getFieldDefinition()
->getName())->value;
if ($this->value == $original_value && $entity->hasTranslationChanges()) {
$this->value = REQUEST_TIME;
}
}
}
}
}
Members
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.