/** * Test a var if it`s valid. return error message or false. * @param string $varname * @param mixed $value * @return mixed */ public static function testVar($varname, $value) { if (!isset(self::$vars[$varname])) { return self::error('err_unknown_var', htmlspecialchars($varname)); } $type = self::$vars[$varname][self::TYPE]; $name = htmlspecialchars($varname); switch ($type) { case 'text': if (!is_string($value)) { return self::error('err_text', array($name)); } break; case 'int8': if (!GWF_Validator::isOctalNumber(decoct(intval($value, 10)))) { return self::error('err_int8', array($name)); } break; case 'int10': if (!GWF_Validator::isDecimalNumber($value)) { return self::error('err_int10', array($name)); } break; case 'script': // if (!self::isDefaultValue($varname, $value)) { // return self::error('err_script', $name); // } break; case 'bool': if (!self::isBoolean($value)) { return self::error('err_bool', array($name)); } break; default: return self::error('err_unknown_type', array(htmlspecialchars($type))); } $method_name = sprintf('check__%s', $varname); if (method_exists(__CLASS__, $method_name)) { return call_user_func(array(__CLASS__, $method_name), $value); } else { return false; } }