function run_on_single_field($field, $value) { if (!isset($this->rules[$field]) || !is_array($this->rules[$field])) { // no rules means always valid return true; } $verdict = true; foreach ($this->rules[$field] as $rule) { $callback = GP_Validators::get($rule['rule']); if (is_null($callback)) { trigger_error(__('Non-existent validator: ' . $rule['rule'])); continue; } $args = $rule['args']; array_unshift($args, $value); // TODO: refactor if ('positive' == $rule['kind']) { if (!call_user_func_array($callback['positive'], $args)) { $this->errors[] = $this->construct_error_message($rule, $value); $verdict = false; } } else { if (is_null($callback['negative'])) { if (call_user_func_array($callback['positive'], $args)) { $this->errors[] = $this->construct_error_message($rule, $value); $verdict = false; } } else { if (!call_user_func_array($callback['negative'], $args)) { $this->errors[] = $this->construct_error_message($rule, $value); $verdict = false; } } } } return $verdict; }
function test_between() { $callback = GP_Validators::get('between'); $f = $callback['positive']; $this->assertEquals(true, $f(0, -1, 2)); }