Esempio n. 1
0
 /**
  * Validates the parameters value and returns the result.
  * @see ParamDefinition::validateValue
  *
  * @since 0.5
  *
  * @param $value mixed
  * @param $param IParam
  * @param $definitions array of IParamDefinition
  * @param $params array of IParam
  * @param ValidatorOptions $options
  *
  * @return boolean
  */
 protected function validateValue($value, IParam $param, array $definitions, array $params, ValidatorOptions $options)
 {
     if ($options->isStringlyTyped()) {
         if (!is_string($value)) {
             return false;
         }
         $isNegative = false;
         if ($this->allowNegatives && strpos($value, '-') === 0) {
             $value = substr($value, 1);
             $isNegative = true;
         }
         if (ctype_digit((string) $value)) {
             $value = (int) $value;
             if ($isNegative) {
                 $value = -$value;
             }
         } else {
             return false;
         }
     } elseif (!is_int($value) && !is_float($value) || !$this->allowNegatives && $value < 0) {
         return false;
     }
     if (is_float($value)) {
         if ((int) $value == $value) {
             $value = (int) $value;
         } else {
             return false;
         }
     }
     return parent::validateValue($value, $param, $definitions, $params, $options);
 }
Esempio n. 2
0
 /**
  * @dataProvider upperBoundProvider
  */
 public function testSetUpperBound($bound, $testValue, $validity)
 {
     /**
      * @var \NumericParam $definition
      */
     $definition = $this->getEmptyInstance();
     $definition->setUpperBound($bound);
     $this->validate($definition, (string) $testValue, $validity);
     $options = new \ValidatorOptions();
     $options->setRawStringInputs(false);
     $this->validate($definition, $testValue, $validity, $options);
 }
Esempio n. 3
0
 /**
  * Validates the parameters value and returns the result.
  * @see ParamDefinition::validateValue
  *
  * @since 0.5
  *
  * @param $value mixed
  * @param $param IParam
  * @param $definitions array of IParamDefinition
  * @param $params array of IParam
  * @param ValidatorOptions $options
  *
  * @return boolean
  */
 protected function validateValue($value, IParam $param, array $definitions, array $params, ValidatorOptions $options)
 {
     if ($options->isStringlyTyped()) {
         if (preg_match('/^(-)?\\d+((\\.|,)\\d+)?$/', $value)) {
             $value = (double) $value;
         } else {
             return false;
         }
     } elseif (!is_float($value) && !is_int($value)) {
         return false;
     }
     return parent::validateValue($value, $param, $definitions, $params, $options);
 }
Esempio n. 4
0
 /**
  * Validates and formats all the parameters (but aborts when a fatal error occurs).
  * 
  * @since 0.4
  */
 public function validateParameters()
 {
     $this->doParamProcessing();
     if (!$this->hasFatalError() && $this->options->unknownIsInvalid()) {
         // Loop over the remaining raw parameters.
         // These are unrecognized parameters, as they where not used by any parameter definition.
         foreach ($this->rawParameters as $paramName => $paramValue) {
             $this->registerNewError(wfMsgExt('validator_error_unknown_argument', 'parsemag', $paramName), $paramName);
         }
     }
 }
Esempio n. 5
0
 /**
  * Sets the $value to a cleaned value of $originalValue.
  *
  * @since 0.5
  *
  * @param ValidatorOptions $options
  */
 protected function cleanValue(ValidatorOptions $options)
 {
     $this->value = $this->originalValue;
     if ($this->definition->isList()) {
         $this->value = explode($this->definition->getDelimiter(), $this->value);
     }
     $trim = $this->getDefinition()->trimDuringClean();
     if ($trim === true || is_null($trim) && $options->trimValues()) {
         if ($this->definition->isList()) {
             foreach ($this->value as &$element) {
                 if (is_string($element)) {
                     $element = trim($element);
                 }
             }
         } elseif (is_string($this->value)) {
             $this->value = trim($this->value);
         }
     }
     if ($options->lowercaseValues()) {
         if ($this->definition->isList()) {
             foreach ($this->value as &$element) {
                 if (is_string($element)) {
                     $element = strtolower($element);
                 }
             }
         } elseif (is_string($this->value)) {
             $this->value = strtolower($this->value);
         }
     }
 }
Esempio n. 6
0
 /**
  * @since 0.5
  *
  * @param mixed $value
  * @param IParam $param
  * @param $definitions array of IParamDefinition
  * @param $params array of IParam
  * @param ValidatorOptions $options
  *
  * @return boolean
  */
 protected final function validateValueBase($value, IParam $param, array $definitions, array $params, ValidatorOptions $options)
 {
     if ($options->isStringlyTyped() && !is_string($value)) {
         return false;
     }
     return $this->validateValue($value, $param, $definitions, $params, $options);
 }
Esempio n. 7
0
 public function addError(string $fieldName, string $message) : Validator
 {
     $type = $this->options->getFieldType();
     $this->errors[] = new ValidationError($type, $fieldName, $message);
     return $this;
 }
Esempio n. 8
0
 /**
  * @dataProvider instanceProvider
  */
 public function testValidate(IParamDefinition $definition)
 {
     foreach (array(true, false) as $stringlyTyped) {
         $values = $this->valueProvider($stringlyTyped);
         $options = new \ValidatorOptions();
         $options->setRawStringInputs($stringlyTyped);
         foreach ($values[$definition->getName()] as $data) {
             list($input, $valid, ) = $data;
             $param = new Param($definition);
             $param->setUserValue($definition->getName(), $input, $options);
             $this->assertEquals($valid, $definition->validate($param, array(), array(), $options) === true);
         }
     }
 }