dispatchervalidation.inc.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 463 行 · 第 1/2 页
PHP
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 + -
显示快捷键?