/** * 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); }
/** * @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); }
/** * 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); }
/** * 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); } } }
/** * 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); } } }
/** * @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); }
public function addError(string $fieldName, string $message) : Validator { $type = $this->options->getFieldType(); $this->errors[] = new ValidationError($type, $fieldName, $message); return $this; }
/** * @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); } } }