You are here

public function ModerationInformation::hasPendingRevision in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/content_moderation/src/ModerationInformation.php \Drupal\content_moderation\ModerationInformation::hasPendingRevision()

Determines if a pending revision exists for the specified entity.

Parameters

\Drupal\Core\Entity\ContentEntityInterface $entity: The entity which may or may not have a pending revision.

Return value

bool TRUE if this entity has pending revisions available, FALSE otherwise.

Overrides ModerationInformationInterface::hasPendingRevision

File

core/modules/content_moderation/src/ModerationInformation.php, line 120

Class

ModerationInformation
General service for moderation-related questions about Entity API.

Namespace

Drupal\content_moderation

Code

public function hasPendingRevision(ContentEntityInterface $entity) {
  $result = FALSE;
  if ($this
    ->isModeratedEntity($entity)) {

    /** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
    $storage = $this->entityTypeManager
      ->getStorage($entity
      ->getEntityTypeId());
    $latest_revision_id = $storage
      ->getLatestTranslationAffectedRevisionId($entity
      ->id(), $entity
      ->language()
      ->getId());
    $default_revision_id = $entity
      ->isDefaultRevision() && !$entity
      ->isNewRevision() && ($revision_id = $entity
      ->getRevisionId()) ? $revision_id : $this
      ->getDefaultRevisionId($entity
      ->getEntityTypeId(), $entity
      ->id());
    if ($latest_revision_id !== NULL && $latest_revision_id != $default_revision_id) {

      /** @var \Drupal\Core\Entity\ContentEntityInterface $latest_revision */
      $latest_revision = $storage
        ->loadRevision($latest_revision_id);
      $result = !$latest_revision
        ->wasDefaultRevision();
    }
  }
  return $result;
}