Same name and namespace in other branches
  1. 8.9.x core/modules/content_moderation/src/ModerationInformation.php \Drupal\content_moderation\ModerationInformation::isDefaultRevisionPublished()
  2. 9 core/modules/content_moderation/src/ModerationInformation.php \Drupal\content_moderation\ModerationInformation::isDefaultRevisionPublished()

File

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

Class

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

Namespace

Drupal\content_moderation

Code

public function isDefaultRevisionPublished(ContentEntityInterface $entity) {
  $workflow = $this
    ->getWorkflowForEntity($entity);
  $default_revision = $this->entityTypeManager
    ->getStorage($entity
    ->getEntityTypeId())
    ->load($entity
    ->id());

  // If no default revision could be loaded, the entity has not yet been
  // saved. In this case the moderation_state of the unsaved entity can be
  // used, since once saved it will become the default.
  $default_revision = $default_revision ?: $entity;

  // Ensure we are checking all translations of the default revision.
  if ($default_revision instanceof TranslatableInterface && $default_revision
    ->isTranslatable()) {

    // Loop through each language that has a translation.
    foreach ($default_revision
      ->getTranslationLanguages() as $language) {

      // Load the translated revision.
      $translation = $default_revision
        ->getTranslation($language
        ->getId());

      // If the moderation state is empty, it was not stored yet so no point
      // in doing further work.
      $moderation_state = $translation->moderation_state->value;
      if (!$moderation_state) {
        continue;
      }

      // Return TRUE if a translation with a published state is found.
      if ($workflow
        ->getTypePlugin()
        ->getState($moderation_state)
        ->isPublishedState()) {
        return TRUE;
      }
    }
  }
  return $workflow
    ->getTypePlugin()
    ->getState($default_revision->moderation_state->value)
    ->isPublishedState();
}