function EnabledConfigurablePluginsConstraintValidator::validate

Same name and namespace in other branches
  1. 9 core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php \Drupal\ckeditor5\Plugin\Validation\Constraint\EnabledConfigurablePluginsConstraintValidator::validate()
  2. 11.x core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php \Drupal\ckeditor5\Plugin\Validation\Constraint\EnabledConfigurablePluginsConstraintValidator::validate()

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) {
    // Create a fresh instance of this CKEditor 5 plugin, not tied to a text
    // editor configuration entity.
    $plugin = $this->pluginManager
      ->getPlugin($id, NULL);
    // If this plugin is configurable but it has empty default configuration,
    // that means the configuration must be stored out of band.
    // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image
    // @see editor_image_upload_settings_form()
    $default_configuration = $plugin->defaultConfiguration();
    if ($default_configuration === []) {
      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();
    }
  }
}

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