Skip to content
Snippets Groups Projects

Only create a new revision when necessary

@@ -279,8 +279,19 @@ class EntityReferenceRevisionsItem extends EntityReferenceItem implements Option
$is_affected = !$this->getFieldDefinition()->isTranslatable() || ($host instanceof TranslatableRevisionableInterface && $host->hasTranslationChanges());
if ($is_affected && !$host->isNew() && $this->entity && $this->entity->getEntityType()->get('entity_revision_parent_id_field')) {
if ($host->isNewRevision()) {
$this->entity->setNewRevision();
$needs_save = TRUE;
$has_newer_revision = FALSE;
if (!empty($host->original)) {
$old_revision_id = $host->original->get($this->getFieldDefinition()->getName())->get($this->getName())->target_revision_id;
if ($old_revision_id < $this->target_revision_id) {
// If the item is pointing to a newer revision we should not
// be creating one.
$has_newer_revision = TRUE;
}
}
if (!$has_newer_revision) {
$this->entity->setNewRevision();
$needs_save = TRUE;
}
}
// Additionally ensure that the default revision state is kept in sync.
if ($this->entity && $host->isDefaultRevision() != $this->entity->isDefaultRevision()) {
Loading