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 + -
显示快捷键?