コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function validate($value, Constraint $constraint)
 {
     /** @var \Drupal\Core\Entity\EntityInterface $entity */
     $entity = $value->getEntity();
     // Ignore entities that are not subject to moderation anyway.
     if (!$this->moderationInformation->isModeratableEntity($entity)) {
         return;
     }
     // Ignore entities that are being created for the first time.
     if ($entity->isNew()) {
         return;
     }
     // Ignore entities that are being moderated for the first time, such as
     // when they existed before moderation was enabled for this entity type.
     if ($this->isFirstTimeModeration($entity)) {
         return;
     }
     $original_entity = $this->moderationInformation->getLatestRevision($entity->getEntityTypeId(), $entity->id());
     $next_moderation_state_id = $entity->moderation_state->target_id;
     $original_moderation_state_id = $original_entity->moderation_state->target_id;
     if (!$this->validation->isTransitionAllowed($original_moderation_state_id, $next_moderation_state_id)) {
         $this->context->addViolation($constraint->message, ['%from' => $original_entity->moderation_state->entity->label(), '%to' => $entity->moderation_state->entity->label()]);
     }
 }
コード例 #2
0
 /**
  * @covers ::isTransitionAllowed
  * @covers ::calculatePossibleTransitions
  */
 public function testIsTransitionAllowedWithInValidTransition()
 {
     $state_transition_validation = new StateTransitionValidation($this->setupEntityTypeManager(), $this->setupQueryFactory());
     $this->assertFalse($state_transition_validation->isTransitionAllowed('published', 'needs_review'));
     $this->assertFalse($state_transition_validation->isTransitionAllowed('published', 'staging'));
     $this->assertFalse($state_transition_validation->isTransitionAllowed('staging', 'needs_review'));
     $this->assertFalse($state_transition_validation->isTransitionAllowed('staging', 'staging'));
     $this->assertFalse($state_transition_validation->isTransitionAllowed('needs_review', 'published'));
 }