/** * {@inheritdoc} */ public function postSave($update) { parent::postSave($update); $needs_save = FALSE; // If any of entity, parent type or parent id is missing then return. if (!$this->entity || !$this->entity->getEntityType()->get('entity_revision_parent_type_field') || !$this->entity->getEntityType()->get('entity_revision_parent_id_field')) { return; } $entity = $this->entity; $parent_entity = $this->getEntity(); // If the entity has a parent field name get the key. if ($entity->getEntityType()->get('entity_revision_parent_field_name_field')) { $parent_field_name = $entity->getEntityType()->get('entity_revision_parent_field_name_field'); // If parent field name has changed then set it. if ($entity->get($parent_field_name)->value != $this->getFieldDefinition()->getName()) { $entity->set($parent_field_name, $this->getFieldDefinition()->getName()); $needs_save = TRUE; } } $parent_type = $entity->getEntityType()->get('entity_revision_parent_type_field'); $parent_id = $entity->getEntityType()->get('entity_revision_parent_id_field'); // If the parent type has changed then set it. if ($entity->get($parent_type)->value != $parent_entity->getEntityTypeId()) { $entity->set($parent_type, $parent_entity->getEntityTypeId()); $needs_save = TRUE; } // If the parent id has changed then set it. if ($entity->get($parent_id)->value != $parent_entity->id()) { $entity->set($parent_id, $parent_entity->id()); $needs_save = TRUE; } if ($needs_save) { // Check if any of the keys has changed, save it, do not create a new // revision. $entity->setNewRevision(FALSE); $entity->save(); } }