public function processRequest($request) { $filterchain = new A_Filter_Set(); $validator = new A_Rule_Set(); $this->error = false; $param_names = array_keys($this->params); if ($param_names) { if ($this->filters) { foreach ($this->filters as $filter) { // if filter is only for specific params do only those, otherwise all $names = $filter['names'] ? $filter['names'] : $param_names; foreach ($names as $name) { $request->set($name, $filterchain->doFilter($request->get($name), $filter['filter'])); } } } foreach ($param_names as $name) { if ($this->params[$name]->filters) { $request->set($name, $filterchain->doFilter($request->get($name), $this->params[$name]->filters)); } } foreach ($param_names as $name) { $this->params[$name]->value = $request->get($name); if (isset($this->params[$name]->rules)) { $validator->clearRules(); $validator->addRule($this->params[$name]->rules); if (!$validator->isValid($request)) { $errorMsgs = $validator->getErrorMsg(); if (isset($errorMsgs[$name])) { $this->params[$name]->setError($errorMsgs[$name]); } $this->error = true; } } } if ($this->rules) { foreach ($this->rules as $rule) { // if rule is only for specific params do only those, otherwise all $names = $rule['names'] ? $rule['names'] : $param_names; foreach ($names as $name) { $rule['rule']->setName($name); // set all rules to work on this parameter if (!$rule['rule']->isValid($request)) { $this->params[$name]->setError($rule['rule']->getErrorMsg()); $this->error = true; } } } } } return !$this->error; }