You are here

public function EnabledConfigurablePluginsConstraintValidator::validate in Drupal 10

Throws

\Symfony\Component\Validator\Exception\UnexpectedTypeException Thrown when the given constraint is not supported by this validator.

File

core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php, line 29

Class

EnabledConfigurablePluginsConstraintValidator
Enabled configurable plugin settings validator.

Namespace

Drupal\ckeditor5\Plugin\Validation\Constraint

Code

public function validate($settings, Constraint $constraint) {
  if (!$constraint instanceof EnabledConfigurablePluginsConstraint) {
    throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\\EnabledConfigurablePluginsConstraint');
  }
  $configurable_enabled_definitions = $this
    ->getConfigurableEnabledDefinitions();
  try {
    $plugin_settings = $this->context
      ->getRoot()
      ->get('settings.plugins')
      ->getValue();
  } catch (\InvalidArgumentException $e) {
    $plugin_settings = [];
  }
  foreach ($configurable_enabled_definitions as $id => $definition) {
    if ($definition
      ->hasConditions() && isset($definition
      ->getConditions()['imageUploadStatus']) && $definition
      ->getConditions()['imageUploadStatus'] === TRUE) {

      // This is the exception to the rule: this is a privileged plugin due to
      // the Text Editor config entity's built-in image upload settings.
      // @see \Drupal\editor\Entity\Editor::getImageUploadSettings()
      // @see editor_image_upload_settings_form()
      // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::buildConfigurationForm()
      continue;
    }
    if (!isset($plugin_settings[$id]) || empty($plugin_settings[$id])) {
      $this->context
        ->buildViolation($constraint->message)
        ->setParameter('%plugin_label', (string) $definition
        ->label())
        ->setParameter('%plugin_id', $id)
        ->atPath("plugins.{$id}")
        ->addViolation();
    }
  }
}