ktvalidators.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 566 行 · 第 1/2 页
SVN-BASE
566 行
return array( 'errors' => $errors, 'results' => $results, ); }}class KTBooleanValidator extends KTValidator { var $sNamespace = 'ktcore.validators.boolean'; function validate($data) { $results = array(); $errors = array(); // very simple if we're required and not present, fail // otherwise, its ok. $val = KTUtil::arrayGet($data, $this->sInputVariable); $out = ($val == true); if ($this->bProduceOutput) { $results[$this->sOutputVariable] = $out; } return array( 'errors' => $errors, 'results' => $results, ); }}class KTPasswordValidator extends KTValidator { var $sNamespace = 'ktcore.validators.password'; function validate($data) { $results = array(); $errors = array(); $bundle = KTUtil::arrayGet($data, '_password_confirm_' . $this->sBasename); if ($bundle['base'] != $bundle['confirm']) { $errors[$this->sBasename] = _kt('Your passwords do not match.'); } if ($this->bProduceOutput) { $results[$this->sOutputVariable] = $val; } return array( 'errors' => $errors, 'results' => $results, ); }}class KTMembershipValidator extends KTValidator { var $sNamespace = 'ktcore.validators.membership'; var $bMulti; var $aVocab; function configure($aOptions) { $res = parent::configure($aOptions); if (PEAR::isError($res)) { return $res; } $this->bMulti = KTUtil::arrayGet($aOptions, 'multi', false); $vocab = (array) KTUtil::arrayGet($aOptions, 'vocab'); $this->aVocab = array(); foreach ($vocab as $v) { $this->aVocab[$v] = true; } } function validate($data) { $results = array(); $errors = array(); // very simple if we're required and not present, fail // otherwise, its ok. $val = KTUtil::arrayGet($data, $this->sInputVariable); if (empty($val)) { ; // pass } else { if ($this->bMulti) { $val = (array) $val; $failed = array(); foreach ($val as $k) { if (!$this->aVocab[$k]) { $failed[] = $k; } } if (!empty($failed)) { $errors[$this->sBasename] = KTUtil::arrayGet($this->aOptions, 'error_message', sprintf(_kt('"%s" are not valid selections.'), implode(', ', $failed))); } } else { $mandatory=true; if (substr($this->sInputVariable, 0, 9) == 'metadata_') { $fieldid = substr($this->sInputVariable, 9); $field = DocumentField::get($fieldid); $mandatory = $field->getIsMandatory(); } if (!array_key_exists($val, $this->aVocab) && $mandatory) { $errors[$this->sBasename] = KTUtil::arrayGet($this->aOptions, 'error_message', sprintf(_kt('"%s"is not a valid selection.'), $val)); } } } if ($this->bProduceOutput) { $results[$this->sOutputVariable] = $val; } return array( 'errors' => $errors, 'results' => $results, ); }}class KTFieldsetValidator extends KTValidator { var $sNamespace = 'ktcore.validators.fieldset'; var $_validators; function configure($aOptions) { $res = parent::configure($aOptions); if (PEAR::isError($res)) { return $res; } $this->_validators = (array) KTUtil::arrayGet($aOptions, 'validators', array()); } function validate($data) { $results = array(); $errors = array(); // very simple if we're required and not present, fail // otherwise, its ok. $d = (array) KTUtil::arrayGet($data, $this->sInputVariable); //var_dump($this); exit(0); foreach ($this->_validators as $v) { $res = $v->validate($d); // results comes out with a set of names and values. // these *shouldn't* overlap, so just merge them $extra_results = KTUtil::arrayGet($res, 'results', array()); $results = kt_array_merge($results, $extra_results); // errors *can* overlap // the format is: // basename => array(errors) // so that a given field can have multiple errors // from multiple validators // // there is also a "global" error notice stored against the var // _kt_global $extra_errors = KTUtil::arrayGet($res, 'errors', array()); foreach ($extra_errors as $varname => $aErrors) { if (is_string($aErrors)) { $errors[$varname][] = $aErrors; } else { $errors[$varname] = kt_array_merge($errors[$varname], $aErrors); } } } $final_results = array(); if ($this->bProduceOutput) { $final_results[$this->sOutputVariable] = $results; } $final_errors = array(); if (!empty($errors)) { $final_errors[$this->sInputVariable] = $errors; } return array( 'errors' => $final_errors, 'results' => $final_results, ); }}class KTFileValidator extends KTValidator { var $sNamespace = 'ktcore.validators.file'; // we don't actual need to do *anything* function validate($data) { $d = (array) KTUtil::arrayGet($data, $this->sInputVariable); $results = array(); if ($this->bProduceOutput) { $results[$this->sOutputVariable] = $d; } return array( 'errors' => array(), 'results' => $results, ); }}class KTFileIllegalCharValidator extends KTValidator { var $sNamespace = 'ktcore.validators.fileillegalchar'; var $sWarning; function configure($aOptions) { $res = parent::configure($aOptions); if (PEAR::isError($res)) { return $res; } $sChars = "\/*<>|%+':\"?"; $sWarning = sprintf(_kt('The name of the document selected is invalid. The following characters are not allowed: %s'), $sChars); $this->sWarning = KTUtil::arrayGet($aOptions, 'file_illegal_character_warning', $sWarning); $this->bTrim = KTUtil::arrayGet($aOptions, 'trim', true, false); } function validate($data) { $results = array(); $errors = array(); $aFile = (array) KTUtil::arrayGet($data, $this->sInputVariable); // Get the file name $val = $aFile['name']; if ($this->bTrim) { $val = trim($val); } // illegal characters: \/ *<>|%+':"? $pattern = "[\*|\%|\\\|\/|\<|\>|\+|\:|\?|\||\'|\"]"; if(preg_match($pattern, $val)){ $errors[$this->sBasename] = $this->sWarning; } if ($this->bProduceOutput) { $results[$this->sOutputVariable] = $aFile; } return array( 'errors' => $errors, 'results' => $results, ); }}class KTArrayValidator extends KTValidator { var $sNamespace = 'ktcore.validators.array'; function validate($data) { $results = array(); $errors = array(); // very simple if we're required and not present, fail // otherwise, its ok. $val = KTUtil::arrayGet($data, $this->sInputVariable); //var_dump($data); exit(0); if ($this->bProduceOutput) { $results[$this->sOutputVariable] = $val; } return array( 'errors' => $errors, 'results' => $results, ); }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?