protected EntityOperations::updateOrCreateFromEntity(EntityInterface $entity)
Creates or updates the moderation state of an entity.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity to update or create a moderation state for.
File
- core/modules/content_moderation/src/EntityOperations.php, line 142
Class
- EntityOperations
- Defines a class for reacting to entity events.
Namespace
Drupal\content_moderation
Code
protected function updateOrCreateFromEntity(EntityInterface $entity) { $moderation_state = $entity->moderation_state->target_id; /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */ if (!$moderation_state) { $moderation_state = $this->entityTypeManager ->getStorage($entity->getEntityType()->getBundleEntityType())->load($entity->bundle()) ->getThirdPartySetting('content_moderation', 'default_moderation_state'); } // @todo what if $entity->moderation_state->target_id is null at this point? $entity_type_id = $entity->getEntityTypeId(); $entity_id = $entity->id(); $entity_revision_id = $entity->getRevisionId(); $entity_langcode = $entity->language()->getId(); $storage = $this->entityTypeManager->getStorage('content_moderation_state'); $entities = $storage->loadByProperties([ 'content_entity_type_id' => $entity_type_id, 'content_entity_id' => $entity_id, ]); /** @var \Drupal\content_moderation\ContentModerationStateInterface $content_moderation_state */ $content_moderation_state = reset($entities); if (!($content_moderation_state instanceof ContentModerationStateInterface)) { $content_moderation_state = $storage->create([ 'content_entity_type_id' => $entity_type_id, 'content_entity_id' => $entity_id, ]); } else { // Create a new revision. $content_moderation_state->setNewRevision(TRUE); } // Sync translations. if (!$content_moderation_state->hasTranslation($entity_langcode)) { $content_moderation_state->addTranslation($entity_langcode); } if ($content_moderation_state->language()->getId() !== $entity_langcode) { $content_moderation_state = $content_moderation_state->getTranslation($entity_langcode); } // Create the ContentModerationState entity for the inserted entity. $content_moderation_state->set('content_entity_revision_id', $entity_revision_id); $content_moderation_state->set('moderation_state', $moderation_state); ContentModerationState::updateOrCreateFromEntity($content_moderation_state); }
Please login to continue.