function BookOutlineConstraintValidator::validate

Same name and namespace in other branches
  1. 8.9.x core/modules/book/src/Plugin/Validation/Constraint/BookOutlineConstraintValidator.php \Drupal\book\Plugin\Validation\Constraint\BookOutlineConstraintValidator::validate()
  2. 10 core/modules/book/src/Plugin/Validation/Constraint/BookOutlineConstraintValidator.php \Drupal\book\Plugin\Validation\Constraint\BookOutlineConstraintValidator::validate()
  3. 11.x core/modules/book/src/Plugin/Validation/Constraint/BookOutlineConstraintValidator.php \Drupal\book\Plugin\Validation\Constraint\BookOutlineConstraintValidator::validate()

File

core/modules/book/src/Plugin/Validation/Constraint/BookOutlineConstraintValidator.php, line 45

Class

BookOutlineConstraintValidator
Constraint validator for changing the book outline in pending revisions.

Namespace

Drupal\book\Plugin\Validation\Constraint

Code

public function validate($entity, Constraint $constraint) {
    if (isset($entity) && !$entity->isNew() && !$entity->isDefaultRevision()) {
        
        /** @var \Drupal\Core\Entity\ContentEntityInterface $original */
        $original = $this->bookManager
            ->loadBookLink($entity->id(), FALSE) ?: [
            'bid' => 0,
            'weight' => 0,
        ];
        if (empty($original['pid'])) {
            $original['pid'] = -1;
        }
        if ($entity->book['bid'] != $original['bid']) {
            $this->context
                ->buildViolation($constraint->message)
                ->atPath('book.bid')
                ->setInvalidValue($entity)
                ->addViolation();
        }
        if ($entity->book['pid'] != $original['pid']) {
            $this->context
                ->buildViolation($constraint->message)
                ->atPath('book.pid')
                ->setInvalidValue($entity)
                ->addViolation();
        }
        if ($entity->book['weight'] != $original['weight']) {
            $this->context
                ->buildViolation($constraint->message)
                ->atPath('book.weight')
                ->setInvalidValue($entity)
                ->addViolation();
        }
    }
}

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