コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function convert($value, $definition, $name, array $defaults)
 {
     $entity = parent::convert($value, $definition, $name, $defaults);
     if ($entity && $this->moderationInformation->isModeratedEntity($entity) && !$this->moderationInformation->isLatestRevision($entity)) {
         $entity_type_id = $this->getEntityTypeFromDefaults($definition, $name, $defaults);
         $latest_revision = $this->moderationInformation->getLatestRevision($entity_type_id, $value);
         // If the entity type is translatable, ensure we return the proper
         // translation object for the current context.
         if ($latest_revision instanceof EntityInterface && $entity instanceof TranslatableInterface) {
             $latest_revision = $this->entityManager->getTranslationFromContext($latest_revision, NULL, array('operation' => 'entity_upcast'));
         }
         if ($latest_revision->isRevisionTranslationAffected()) {
             $entity = $latest_revision;
         }
     }
     return $entity;
 }
コード例 #2
0
 /**
  * Determines if this entity is being moderated for the first time.
  *
  * If the previous version of the entity has no moderation state, we assume
  * that means it predates the presence of moderation states.
  *
  * @param \Drupal\Core\Entity\EntityInterface $entity
  *   The entity being moderated.
  *
  * @return bool
  *   TRUE if this is the entity's first time being moderated, FALSE otherwise.
  */
 protected function isFirstTimeModeration(EntityInterface $entity)
 {
     $original_entity = $this->moderationInformation->getLatestRevision($entity->getEntityTypeId(), $entity->id());
     $original_id = $original_entity->moderation_state->target_id;
     return !($entity->moderation_state->target_id && $original_entity && $original_id);
 }