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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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.