/**
  * 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;
 }
Example #2
0
 /**
  * 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;
     }
 }