From 839d67fa830c9f748102e08c274c9b761eae28c5 Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole Date: Tue, 14 Nov 2017 14:01:02 +0000 Subject: [PATCH] Issue #2922018 by jhedstrom, amateescu: Set revision creation time when moderating content --- .../src/Form/EntityModerationForm.php | 17 +++++++++++++++-- .../tests/src/Functional/ModerationFormTest.php | 5 +++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/core/modules/content_moderation/src/Form/EntityModerationForm.php b/core/modules/content_moderation/src/Form/EntityModerationForm.php index d0d3d0ef78f6..e6dc88771609 100644 --- a/core/modules/content_moderation/src/Form/EntityModerationForm.php +++ b/core/modules/content_moderation/src/Form/EntityModerationForm.php @@ -2,6 +2,7 @@ namespace Drupal\content_moderation\Form; +use Drupal\Component\Datetime\Time; use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\RevisionLogInterface; use Drupal\Core\Form\FormBase; @@ -25,6 +26,13 @@ class EntityModerationForm extends FormBase { */ protected $moderationInfo; + /** + * The time service. + * + * @var \Drupal\Component\Datetime\Time + */ + protected $time; + /** * The moderation state transition validation service. * @@ -39,9 +47,12 @@ class EntityModerationForm extends FormBase { * The moderation information service. * @param \Drupal\content_moderation\StateTransitionValidation $validation * The moderation state transition validation service. + * @param \Drupal\Component\Datetime\Time $time + * The time service. */ - public function __construct(ModerationInformationInterface $moderation_info, StateTransitionValidation $validation) { + public function __construct(ModerationInformationInterface $moderation_info, StateTransitionValidation $validation, Time $time) { $this->moderationInfo = $moderation_info; + $this->time = $time; $this->validation = $validation; } @@ -51,7 +62,8 @@ class EntityModerationForm extends FormBase { public static function create(ContainerInterface $container) { return new static( $container->get('content_moderation.moderation_information'), - $container->get('content_moderation.state_transition_validation') + $container->get('content_moderation.state_transition_validation'), + $container->get('datetime.time') ); } @@ -132,6 +144,7 @@ class EntityModerationForm extends FormBase { $entity->set('moderation_state', $new_state); if ($entity instanceof RevisionLogInterface) { + $entity->setRevisionCreationTime($this->time->getRequestTime()); $entity->setRevisionLogMessage($form_state->getValue('revision_log')); $entity->setRevisionUserId($this->currentUser()->id()); } diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php index 326eb7cc9745..13fd0c0571a7 100644 --- a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php @@ -206,6 +206,7 @@ class ModerationFormTest extends ModerationStateTestBase { // Make a pending revision. $node->title = $this->randomMachineName(); $node->moderation_state->value = 'draft'; + $node->setRevisionCreationTime(12345); $node->save(); $another_user = $this->drupalCreateUser($this->permissions); @@ -217,6 +218,10 @@ class ModerationFormTest extends ModerationStateTestBase { $this->drupalGet(sprintf('node/%d/revisions', $node->id())); $this->assertText('by ' . $another_user->getAccountName()); + + // Verify the revision creation time has been updated. + $node = $node->load($node->id()); + $this->assertGreaterThan(12345, $node->getRevisionCreationTime()); } /**