Esempio n. 1
0
 /**
  * Constructor.
  * 
  * @since 0.4.6
  * 
  * @param IParamDefinition|Parameter|array $param
  * @param mixed $currentValue
  */
 public function __construct($param, $currentValue = false)
 {
     if ($param instanceof IParamDefinition) {
         $this->param = $param;
     } elseif (is_array($param)) {
         $this->param = ParamDefinition::newFromArray($param);
     } else {
         // Compat code, will go in 0.7
         $this->param = ParamDefinition::newFromParameter($param);
     }
     $this->currentValue = $currentValue;
     $this->inputName = $param->getName();
     $this->inputClass = '';
 }
Esempio n. 2
0
 /**
  * Does the actual parameter processing. 
  * 
  * @since 0.4
  */
 protected function doParamProcessing()
 {
     $this->getParamsToProcess(array(), $this->paramDefinitions);
     while ($this->paramsToHandle !== array()) {
         $paramName = array_shift($this->paramsToHandle);
         $definition = $this->paramDefinitions[$paramName];
         // Compat code for 0.4.x style definitions, will be removed in 0.7.
         if ($definition instanceof Parameter) {
             $definition = ParamDefinition::newFromParameter($definition);
         }
         $param = new Param($definition);
         $setUserValue = $this->attemptToSetUserValue($param);
         // If the parameter is required but not provided, register a fatal error and stop processing.
         if (!$setUserValue && $param->isRequired()) {
             $this->registerNewError(wfMsgExt('validator_error_required_missing', 'parsemag', $paramName), array($paramName, 'missing'), ValidationError::SEVERITY_FATAL);
             break;
         } else {
             $this->params[$param->getName()] = $param;
             $param->validate($this->paramDefinitions, $this->params, $this->options);
             foreach ($param->getErrors() as $error) {
                 $this->registerError($error);
             }
             if ($param->hasFatalError()) {
                 // If there was a fatal error, and the parameter is required, stop processing.
                 break;
             }
             $initialSet = $this->paramDefinitions;
             $param->format($this->paramDefinitions, $this->params, $this->options);
             $this->getParamsToProcess($initialSet, $this->paramDefinitions);
         }
     }
 }
Esempio n. 3
0
 /**
  * Applies the parameter manipulations.
  * @see IParam::format
  *
  * @since 0.5
  *
  * @param $definitions array of IParamDefinition
  * @param $params array of IParam
  * @param ValidatorOptions $options
  */
 public function format(array &$definitions, array $params, ValidatorOptions $options)
 {
     if ($this->definition->shouldManipulateDefault() || !$this->wasSetToDefault()) {
         $this->definition->format($this, $definitions, $params);
         $definitions = ParamDefinition::getCleanDefinitions($definitions);
         // Compat code.
         $manipulations = array();
         foreach ($this->definition->getManipulations() as $manipulation) {
             if (!$manipulation instanceof ParamManipulationInteger && !$manipulation instanceof ParamManipulationFloat && !$manipulation instanceof ParamManipulationString) {
                 $manipulations[] = $manipulation;
             }
         }
         // This whole block is compat code, to be removed in 0.7.
         if ($manipulations !== array()) {
             $parameter = $this->toParameter();
             $parameters = array();
             foreach ($params as $param) {
                 $parameters[$param->getName()] = $param->toParameter();
             }
             foreach ($definitions as $definition) {
                 if (!array_key_exists($definition->getName(), $parameters)) {
                     $parameters[$definition->getName()] = $definition->toParameter();
                 }
             }
             foreach ($manipulations as $manipulation) {
                 $manipulation->manipulate($parameter, $parameters);
             }
             $this->setValue($parameter->getValue());
             foreach ($parameters as $parameterObject) {
                 if (!array_key_exists($parameterObject->getName(), $params)) {
                     $definitions[$parameterObject->getName()] = ParamDefinition::newFromParameter($parameterObject);
                 }
             }
         }
     }
 }
Esempio n. 4
0
 /**
  * Returns a cleaned version of the list of parameter definitions.
  * This includes having converted all supported definition types to
  * ParamDefinition classes and having all keys set to the names of the
  * corresponding parameters.
  *
  *
  * @since 0.5
  *
  * @param $definitions array of IParamDefinition
  *
  * @return array
  * @throws MWException
  */
 public static function getCleanDefinitions(array $definitions)
 {
     $cleanList = array();
     foreach ($definitions as $key => $definition) {
         if (is_array($definition)) {
             if (!array_key_exists('name', $definition) && is_string($key)) {
                 $definition['name'] = $key;
             }
             $definition = ParamDefinition::newFromArray($definition);
         } elseif ($definition instanceof Parameter) {
             // This if for backwards compat, will be removed in 0.7.
             $definition = ParamDefinition::newFromParameter($definition);
         }
         if (!$definition instanceof ParamDefinition) {
             throw new MWException('$definition not an instance of ParamDefinition');
         }
         $cleanList[$definition->getName()] = $definition;
     }
     return $cleanList;
 }