ContentModerationTestResaveHooks.php

Namespace

Drupal\content_moderation_test_resave\Hook

File

core/modules/content_moderation/tests/modules/content_moderation_test_resave/src/Hook/ContentModerationTestResaveHooks.php

View source
<?php

declare (strict_types=1);
namespace Drupal\content_moderation_test_resave\Hook;

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Hook\Attribute\Hook;

/**
 * Hook implementations for content_moderation_test_resave.
 */
class ContentModerationTestResaveHooks {
    
    /**
     * Implements hook_entity_insert().
     */
    public function entityInsert(EntityInterface $entity) {
        
        /** @var \Drupal\content_moderation\ModerationInformationInterface $content_moderation */
        $content_moderation = \Drupal::service('content_moderation.moderation_information');
        if ($content_moderation->isModeratedEntity($entity)) {
            
            /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
            // Saving the passed entity object would populate its loaded revision ID,
            // which we want to avoid. Thus, save a clone of the original object.
            $cloned_entity = clone $entity;
            // Set the entity's syncing status, as we do not want Content Moderation to
            // create new revisions for the re-saving. Without this call Content
            // Moderation would end up creating two separate content moderation state
            // entities: one for the re-save revision and one for the initial revision.
            $cloned_entity->setSyncing(TRUE)
                ->save();
            // Record the fact that a re-save happened.
            \Drupal::state()->set('content_moderation_test_resave', TRUE);
        }
    }

}

Classes

Title Deprecated Summary
ContentModerationTestResaveHooks Hook implementations for content_moderation_test_resave.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.