/** * Validate the provided value or list of values against the criterion. * * @since 0.4 * * @param Parameter $parameter * @param array $parameters * * @return CriterionValidationResult */ public function validate(Parameter $parameter, array $parameters) { $result = new CriterionValidationResult(); if (is_array($parameter->getValue())) { foreach ($parameter->getValue() as $item) { if (!$this->doValidation($item, $parameter, $parameters)) { $result->addInvalidItem($item); } } if ($result->hasInvalidItems()) { $allInvalid = count($result->getInvalidItems()) == count($parameter->getValue()); // If the parameter is required and all items are invalid, it's fatal. // Else it's high for required, and normal for non-required parameters. if ($parameter->isRequired()) { $severity = $allInvalid ? ValidationError::SEVERITY_FATAL : ValidationError::SEVERITY_HIGH; } else { $severity = $allInvalid ? ValidationError::SEVERITY_NORMAL : ValidationError::SEVERITY_LOW; } $result->addError(new ValidationError($this->getListErrorMessage($parameter, $result->getInvalidItems(), $allInvalid), $severity)); } } else { if (!$this->doValidation($parameter->getValue(), $parameter, $parameters)) { $result->addError(new ValidationError($this->getItemErrorMessage($parameter), $parameter->isRequired() ? ValidationError::SEVERITY_FATAL : ValidationError::SEVERITY_NORMAL)); } } return $result; }
/** * Handles any validation errors that occurred for a single criterion. * * @since 0.4 * * @param CriterionValidationResult $validationResult */ protected function handleValidationError(CriterionValidationResult $validationResult) { foreach ($validationResult->getErrors() as $error) { $error->addTags($this->getName()); $this->errors[] = $error; } }