Exemple #1
0
 function testValidatorFilterObject()
 {
     $filters = new A_Filter_Set();
     $filters->addFilter(new A_Filter_Tolower(), 'name');
     $this->data = $filters->doFilter($this->data);
     $this->assertEqual($this->data['name'], 'john smith');
 }
Exemple #2
0
 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;
 }
Exemple #3
0
$result = $filter->doFilter($input);
echo '<b>After</b><br>';
dump($result);
echo '<h2>A filter regex</h2>';
$input = array('username' => 'Matthijs879');
echo '<b>Before</b><br>';
dump($input);
$filter = new A_Filter_Set();
$filter->addFilter(new A_Filter_Regexp('/[^a-z]+/'), array('username'));
$result = $filter->doFilter($input);
echo '<b>After</b><br>';
dump($result);
echo '<h2>A filter substr</h2>';
$input = array('username' => 'Matthijs879', 'name' => 'mike');
echo '<b>Before</b><br>';
dump($input);
$filter = new A_Filter_Set();
$filter->addFilter(new A_Filter_Substr(2, 5), array('username', 'name'));
$result = $filter->doFilter($input);
echo '<b>After</b><br>';
dump($result);
echo '<h2>A filter tolower and upper</h2>';
$input = array('firstname' => 'mikEY', 'lastname' => 'DAVIDson');
echo '<b>Before</b><br>';
dump($input);
$filter = new A_Filter_Set();
$filter->addFilter(new A_Filter_Tolower(), array('firstname'));
$filter->addFilter(new A_Filter_Toupper(), array('lastname'));
$result = $filter->doFilter($input);
echo '<b>After</b><br>';
dump($result);
Exemple #4
0
 public function isValid($datasource = null)
 {
     $filterchain = new A_Filter_Set();
     $validator = new A_Rule_Set();
     $validator->excludeRules($this->excludeRules);
     $validator->includeRules($this->includeRules);
     $this->error = false;
     $this->errorMsg = array();
     if ($this->includeRules) {
         $rule_names = $this->includeRules;
     } else {
         $rule_names = array_keys($this->fields);
     }
     if ($this->excludeRules) {
         $rule_names = array_diff($rule_names, $this->excludeRules);
     }
     $field_names = array_keys($this->fields);
     if ($field_names) {
         if (!$datasource) {
             $datasource = $this->datasource;
         }
         // set values from datasource
         foreach ($field_names as $name) {
             if ($datasource->has($name)) {
                 $this->fields[$name]->value = $datasource->get($name);
             }
         }
         // run global filters on all fields
         if ($this->filters) {
             foreach ($this->fields as $field) {
                 $field->value = $filterchain->doFilter($field->value, $this->filters);
             }
         }
         // run field filters
         foreach ($this->fields as $field) {
             if (isset($field->filters)) {
                 $field->value = $filterchain->doFilter($field->value, $field->filters);
             }
         }
         // run rules for each field
         foreach ($this->fields as $name => $field) {
             // clear errors
             $field->setErrorMsg();
             // check if there are rules and if included
             if (isset($field->rules) && in_array($name, $rule_names)) {
                 foreach ($field->rules as $rule) {
                     // check if set to override rule's optional setting
                     if ($field->optional !== null) {
                         $rule->setOptional($field->optional);
                     }
                     $validator->addRule($rule);
                 }
             }
         }
         // check if there are rules and run those as well
         if ($this->rules) {
             foreach ($this->rules as $name => $rule) {
                 $validator->addRule($rule);
             }
         }
         // if the validator is not valid get its errors
         if (!$validator->isValid($datasource)) {
             $this->error = true;
             $errors = $validator->getErrorMsg();
             foreach ($errors as $fieldname => $errorarray) {
                 $this->setErrorMsg($fieldname, $errorarray);
             }
         }
     }
     return !$this->error;
 }