/** * return actual function name of registered func * * @param string $type the type of func * @param string $name the registered name * @param string $form the form name */ function _execute_transform($name, $value, $params, &$formvars, $form) { if(SmartyValidate::is_registered_transform($name, $form)) { $_func_name = SmartyValidate::_get_registered_func_name('transform', $name, $form); } else { $_func_name = 'smarty_validate_transform_' . $name; if(!function_exists($_func_name)) { $_smarty_obj =& SmartyValidate::_object_instance('Smarty', $_dummy); if($_plugin_file = $_smarty_obj->_get_plugin_filepath('validate_transform', $name)) { include_once($_plugin_file); } else { trigger_error("SmartyValidate: [is_valid] transform function '$name' was not found."); return false; } } } if(strpos($_func_name,'->') !== false) { // object method preg_match('!(\w+)->(\w+)!', $_func_name, $_match); $_object_name = $_match[1]; $_method_name = $_match[2]; $_object =& SmartyValidate::_object_instance($_object_name, $_dummy); if(!method_exists($_object, $_method_name)) { trigger_error("SmartyValidate: [is_valid] method '$_method_name' is not valid for object '$_object_name'."); return false; } return $_object->$_method_name($value, $params, $formvars); } else { return $_func_name($value, $params, $formvars); } }
/** * validate the form * * @param string $formvars the array of submitted for variables * @param string $form the name of the form being validated */ function is_valid(&$formvars, $form = 'default') { if (!SmartyValidate::is_init($form)) { trigger_error("SmartyValidate: [is_valid] form '{$form}' is not initialized."); return false; } // keep track of failed fields for current pass static $_failed_fields = array(); $_ret = true; $_sess =& $_SESSION['SmartyValidate'][$form]['validators']; foreach ($_sess as $_key => $_val) { $_field = $_sess[$_key]['field']; $_empty = $_sess[$_key]['empty']; if (in_array($_field, $_failed_fields)) { // already failed, skip this test continue; } if ($_sess[$_key]['trim']) { $formvars[$_field] = trim($formvars[$_field]); } if (isset($_sess[$_key]['transform'])) { $_trans_funcs = preg_split('![\\s,]+!', $_sess[$_key]['transform'], -1, PREG_SPLIT_NO_EMPTY); foreach ($_trans_funcs as $_trans_func) { if (SmartyValidate::is_registered_transform($_trans_func, $form)) { $formvars[$_field] = $_trans_func($formvars[$_field]); } else { trigger_error("SmartyValidate: [transform] function '{$_trans_func}' is not registered."); } } } if (!isset($formvars[$_field])) { // field must exist, or else fails automatically $_sess[$_key]['valid'] = false; $_ret = false; } else { switch ($_val['criteria']) { case 'notEmpty': $_sess[$_key]['valid'] = SmartyValidate::_not_empty($formvars[$_field]); break; case 'isInt': $_sess[$_key]['valid'] = SmartyValidate::_is_int($formvars[$_field], $_empty); break; case 'isFloat': $_sess[$_key]['valid'] = SmartyValidate::_is_float($formvars[$_field], $_empty); break; case 'isNumber': $_sess[$_key]['valid'] = SmartyValidate::_is_number($formvars[$_field], $_empty); break; case 'isPrice': $_sess[$_key]['valid'] = SmartyValidate::_is_price($formvars[$_field], $_empty); break; case 'isEmail': $_sess[$_key]['valid'] = SmartyValidate::_is_email($formvars[$_field], $_empty); break; case 'isCCNum': $_sess[$_key]['valid'] = SmartyValidate::_is_cc_num($formvars[$_field], $_empty); break; case 'isCCExpDate': $_sess[$_key]['valid'] = SmartyValidate::_is_cc_exp_date($formvars[$_field], $_empty); break; case 'isDate': $_sess[$_key]['valid'] = SmartyValidate::_is_date($formvars[$_field], $_empty); break; case 'isEqual': $_sess[$_key]['valid'] = SmartyValidate::_is_equal($formvars[$_field], $formvars[$_sess[$_key]['field2']], $_empty); break; case 'isRange': $_sess[$_key]['valid'] = SmartyValidate::_is_range($formvars[$_field], $_sess[$_key]['low'], $_sess[$_key]['high'], $_empty); break; case 'isLength': $_sess[$_key]['valid'] = SmartyValidate::_is_length($formvars[$_field], $_sess[$_key]['min'], $_sess[$_key]['max'], $_empty); break; case 'isRegExp': $_sess[$_key]['valid'] = SmartyValidate::_is_regexp($formvars[$_field], $_sess[$_key]['expression'], $_empty); break; case 'isCustom': $_sess[$_key]['valid'] = SmartyValidate::_is_custom($form, $formvars[$_field], $_sess[$_key]['function'], $_empty, $_sess[$_key], $formvars); break; } } if (!$_sess[$_key]['valid']) { $_failed_fields[] = $_field; $_ret = false; } } return $_ret; }