dispatchervalidation.inc.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 463 行 · 第 1/2 页

SVN-BASE
463
字号
    }    function validateIllegalCharacters($sString, $aOptions = null) {        $sString = trim($sString);        if (empty($sString)) {            $aOptions['message'] = KTUtil::arrayGet($aOptions,                    'message', _kt("An empty string was given"));            $this->handleError($aOptions);        }        // illegal characters: /\ <>|%+':"?*        $pattern = "[\*|\%|\\\|\/|\<|\>|\+|\:|\?|\||\'|\"]";        if(preg_match($pattern, $sString)){            $sChars =  "\/<>|%+*':\"?";            $sMessage = sprintf(_kt('The value you have entered is invalid. The following characters are not allowed: %s'), $sChars);            $aOptions['message'] = KTUtil::arrayGet($aOptions, 'illegal_character_message', $sMessage);	        $this->handleError($aOptions);        }        return $sString;    }    // validate a STRING to an integer    function validateInteger($sInteger, $aOptions = null) {        $sInteger = trim($sInteger);        if (empty($sInteger)) {            $aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', _kt("An empty value was given"));            $this->handleError($aOptions);        }	if(!is_numeric($sInteger)) {            $aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', _kt("A non-numeric value was given"));            $this->handleError($aOptions);        }        return intval($sInteger);    }    function validateFile($aFile, $aOptions = null) {        $bError = false;        if (strlen(trim($aFile['name'])) == 0) {            $bError = true;        } else {            $bError = KTUtil::arrayGet($aFile, 'error');        }        if ($bError) {            $message = _kt("You did not select a valid document to upload");            $errors = array(               1 => _kt("The uploaded file is larger than the PHP upload_max_filesize setting"),               2 => _kt("The uploaded file is larger than the MAX_FILE_SIZE directive that was specified in the HTML form"),               3 => _kt("The uploaded file was not fully uploaded to the document management system"),               4 => _kt("No file was selected to be uploaded to the document management system"),               6 => _kt("An internal error occurred receiving the uploaded document"),            );            $message = KTUtil::arrayGet($errors, $aFile['error'], $message);            if (@ini_get("file_uploads") == false) {                $message = _kt("File uploads are disabled in your PHP configuration");            }            $aOptions['message'] = $message;            $this->handleError($aOptions);        }        return $aFile;    }    function &validateDynamicCondition($iId, $aOptions = null) {        require_once(KT_LIB_DIR .  '/permissions/permissiondynamiccondition.inc.php');        return $this->validateEntity('KTPermissionDynamicCondition', $iId, $aOptions);    }    function &validateUnit($iId, $aOptions = null) {        require_once(KT_LIB_DIR .  '/unitmanagement/Unit.inc');        return $this->validateEntity('Unit', $iId, $aOptions);    }    function &validateAuthenticationSource($iId, $aOptions = null) {        require_once(KT_LIB_DIR .  '/authentication/authenticationsource.inc.php');        return $this->validateEntity('KTAuthenticationSource', $iId, $aOptions);    }    function validateAuthenticationProvider($sNamespace, $aOptions = null) {        require_once(KT_LIB_DIR .  '/authentication/authenticationprovider.inc.php');        $oRegistry =& KTAuthenticationProviderRegistry::getSingleton();        $aProviders = $oRegistry->getAuthenticationProvidersInfo();        foreach ($aProviders as $aProvider) {            if ($sNamespace == $aProvider[2]) {                return $sNamespace;            }        }        $aOptions = $aOptions;        $aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', _kt("Invalid authentication source"));        $this->handleError($aOptions);        return $sNamespace;    }    function validateDict($aDict, $aValidation, $aOptions = null) {        foreach ($aValidation as $k => $aValidatorInfo) {            $sDictValue = KTUtil::arrayGet($aDict, $k, null);            if (empty($sDictValue)) {                /*                if (strstr($v, '_or_null')) {                    $aValidatedDict[$k] = null;                }                if (strstr($v, '_or_empty')) {                    $aValidatedDict[$k] = '';                }                */                $aErrors[$k] = PEAR::raiseError(sprintf(_kt("Required value %s not set"), $k));                continue;            }            $sValidationFunction = $this->_generateValidationFunction($aValidatorInfo['type']);            if (!method_exists($this, $sValidationFunction)) {                $aErrors[$k] = PEAR::raiseError(sprintf(_kt("Unknown validation function for required value %s"), $k));                continue;            }            $aKeyInfo = array('var' => $k);            $this->$sValidationFunction($aKeyInfo, $sDictValue);            $aValidatedDict[$k] = $sDictValue;        }        if ($aErrors) {            $aErrorsString = '';            foreach ($aErrors as $k => $v) {                $aErrorsString .= $v->getMessage();            }            $this->oDispatcher->errorPage($aErrorsString);        }        return $aValidatedDict;    }    function _generateValidationFunction($v) {        $iEnd = strstr($v, '_or_');        if ($iEnd) {            $v = substr($v, 0, $iEnd);        }        return '_validate' . $v;    }    function _validateworkflow($aKeyInfo, $id) {        return $this->_validateentity($aKeyInfo, 'KTWorkflow', $id);    }    function _validateworkflowtransition($aKeyInfo, $id) {        return $this->_validateentity($aKeyInfo, 'KTWorkflowTransition', $id);    }    function _validateworkflowstate($aKeyInfo, $id) {        return $this->_validateentity($aKeyInfo, 'KTWorkflowState', $id);    }    function _validateentity($aKeyInfo, $entity_name, $iId, $aOptions = null) {        $aFunc = array($entity_name, KTUtil::arrayGet($aOptions, 'method', 'get'));        $oEntity =& call_user_func($aFunc, $iId);        if (PEAR::isError($oEntity) || ($oEntity === false)) {            return PEAR::raiseError(sprintf(_kt("Provided variable %s is not a valid %s"), $aKeyInfo['var'], $entity_name));        }        return $oEntity;    }    /* unlike the KTEmail version, this only handles ONE email address */    function validateEmailAddress($sEmailAddress, $aOptions = null) {        $sEmailAddress = trim($sEmailAddress);        if (!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $sEmailAddress )) {            $aOptions['message'] = KTUtil::arrayGet($aOptions,                                                    'message',                                                    _kt("This is not a valid email address."));            $this->handleError($aOptions);        }        return $sEmailAddress;    }    /* just does an empty string validation with an appropriate message, and then a duplicate name validation */    function validateEntityName($sEntityTypeName, $sName, $aOptions = null) {        $aOptions['message'] = KTUtil::arrayGet($aOptions, 'empty_message', _kt("No name was given for this item"));        $sName = $this->validateString($sName, $aOptions);        $aOptions['message'] = KTUtil::arrayGet($aOptions, 'duplicate_message', _kt("An item with this name already exists"));        return $this->validateDuplicateName($sEntityTypeName, $sName, $aOptions);    }    function validateDuplicateName($sClass, $sName, $aOptions = null) {        $aMethod = array('KTEntityUtil', 'getByDict');        $aConditions = KTUtil::arrayGet($aOptions, 'condition', array());        $aConditions['name'] = $sName;        $iRename = KTUtil::arrayGet($aOptions, 'rename');        if ($iRename) {            $aConditions['id'] = array('type' => 'nequals', 'value' => $iRename);        }        $aOptions['ids'] = true;        $aOptions['multi'] = true;        $aList = call_user_func($aMethod, $sClass, $aConditions, $aOptions);        if(count($aList)) {            $aOptions['defaultmessage'] = sprintf(_kt("An entity with that name already exists: class %s, name %s"), $sClass, $sName);            $this->handleError($aOptions);        }        return $sName;    }    function validatePasswordMatch($sPassword, $sConfirmPassword, $aOptions = null) {        $aOptions = (array)$aOptions;        $aOptions['message'] = _kt('No password was provided');        $sPassword = $this->validateString($sPassword, $aOptions);        $aOptions['message'] = _kt('No password confirmation was provided');        $sConfirmPassword = $this->validateString($sConfirmPassword, $aOptions);        if ($sPassword === $sConfirmPassword) {            return $sPassword;        }        $aOptions['message'] = _kt('Password and confirmation password do not match');        $this->handleError($aOptions);    }    function validateUrl($sUrl, $aOptions = null) {        $sUrl = trim($sUrl);        if(!((bool) preg_match("'^[^:]+:(?:[0-9a-z\.\?&-_=\+\/]+[\.]{1})*(?:[0-9a-z\.\?&-_=\+\/]+\.)[a-z]{2,3}.*$'i", $sUrl))){            $aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', _kt('This is not a valid URL.'));            $this->handleError($aOptions);        }        return $sUrl;    }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?