dispatchervalidation.inc.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 463 行 · 第 1/2 页
PHP
463 行
<?php
/**
* $Id: dispatchervalidation.inc.php 8387 2008-04-22 16:36:04Z kevin_fourie $
*
* KnowledgeTree Community Edition
* Document Management Made Simple
* Copyright (C) 2008 KnowledgeTree Inc.
* Portions copyright The Jam Warehouse Software (Pty) Limited
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 3 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco,
* California 94120-7775, or email info@knowledgetree.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* KnowledgeTree" logo and retain the original copyright notice. If the display of the
* logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
* must display the words "Powered by KnowledgeTree" and retain the original
* copyright notice.
* Contributor( s): ______________________________________
*
*/
require_once(KT_LIB_DIR . '/validation/errorviewer.inc.php');
class KTDispatcherValidation {
function KTDispatcherValidation(&$oDispatcher) {
$this->oDispatcher =& $oDispatcher;
}
function &validateFolder ($iId, $aOptions = null) {
return $this->validateEntity('Folder', $iId, $aOptions);
}
function &validateDocument ($iId, $aOptions = null) {
return $this->validateEntity('Document', $iId, $aOptions);
}
function &validateDocumentType ($iId, $aOptions = null) {
return $this->validateEntity('DocumentType', $iId, $aOptions);
}
function &validatePermissionByName ($iId, $aOptions = null) {
$aOptions = KTUtil::meldOptions($aOptions, array(
'method' => 'getByName',
));
return $this->validateEntity('KTPermission', $iId, $aOptions);
}
function userHasPermissionOnItem($oUser, $oPermission, $oItem, $aOptions = null) {
require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');
if (KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oItem)) {
return;
}
$this->oDispatcher->errorPage(_kt("Insufficient permissions to perform action"));
}
function &validateEntity($entity_name, $iId, $aOptions = null) {
$aOptions = (array)$aOptions;
$aFunc = array($entity_name, KTUtil::arrayGet($aOptions, 'method', 'get'));
$oEntity =& call_user_func($aFunc, $iId);
if (PEAR::isError($oEntity) || ($oEntity === false)) {
$aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', sprintf(_kt("Invalid identifier provided for: %s"), $entity_name));
$this->handleError($aOptions);
}
return $oEntity;
}
function notError(&$res, $aOptions = null) {
$aOptions = (array)$aOptions;
if (PEAR::isError($res)) {
if (!KTUtil::arrayGet($aOptions, 'no_exception')) {
$aOptions = KTUTil::meldOptions($aOptions, array(
'exception' => $res,
));
}
$this->handleError($aOptions);
}
}
function notErrorFalse(&$res, $aOptions = null) {
$aOptions = (array)$aOptions;
if (PEAR::isError($res) || ($res === false)) {
$aOptions = KTUTil::meldOptions($aOptions, array(
'exception' => $res,
));
$this->handleError($aOptions);
}
}
function ¬Empty(&$res, $aOptions = null) {
$aOptions = (array)$aOptions;
if (empty($res) || PEAR::isError($res)) {
$this->handleError($aOptions);
}
return $res;
}
function handleError($aOptions = null) {
$aOptions = (array)$aOptions;
$aRedirectTo = KTUtil::arrayGet($aOptions, 'redirect_to');
$oException = KTUtil::arrayGet($aOptions, 'exception');
$sMessage = KTUtil::arrayGet($aOptions, 'message');
$sDefaultMessage = KTUtil::arrayGet($aOptions, 'defaultmessage');
if (empty($sMessage)) {
if ($oException) {
$oEVRegistry = KTErrorViewerRegistry::getSingleton();
$oViewer = $oEVRegistry->getViewer($oException);
$sMessage = $oViewer->view();
} elseif ($sDefaultMessage) {
$sMessage = $sDefaultMessage;
} else {
$sMessage = _kt("An error occurred, and no error message was given");
}
} else {
if ($oException) {
$sMessage .= ': ' . $oException->getMessage();
}
}
if ($aRedirectTo) {
$aRedirectParams = KTUtil::arrayGet($aRedirectTo, 1);
$aRealRedirectTo = array($aRedirectTo[0], $sMessage, $aRedirectParams);
$aRealRedirectTo[] = $oException;
call_user_func_array(array($this->oDispatcher, 'errorRedirectTo'), $aRealRedirectTo);
}
$this->oDispatcher->errorPage($sMessage, $oException);
}
function &validateTemplate($sTemplateName, $aOptions = null) {
$oTemplating =& KTTemplating::getSingleton();
$oTemplate =& $oTemplating->loadTemplate($sTemplateName);
$aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', _kt('Failed to locate template'));
$this->notError($oTemplate, $aOptions);
return $oTemplate;
}
function &validateWorkflow($iId, $aOptions = null) {
return $this->validateEntity('KTWorkflow', $iId, $aOptions);
}
function &validateWorkflowState($iId, $aOptions = null) {
return $this->validateEntity('KTWorkflowState', $iId, $aOptions);
}
function &validateWorkflowTransition($iId, $aOptions = null) {
return $this->validateEntity('KTWorkflowTransition', $iId, $aOptions);
}
function &validatePermission($iId, $aOptions = null) {
return $this->validateEntity('KTPermission', $iId, $aOptions);
}
function &validateLookup($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/documentmanagement/MetaData.inc');
return $this->validateEntity('MetaData', $iId, $aOptions);
}
function &validateFieldset($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/metadata/fieldset.inc.php');
return $this->validateEntity('KTFieldset', $iId, $aOptions);
}
function &validateField($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc');
return $this->validateEntity('DocumentField', $iId, $aOptions);
}
function &validateBehaviour($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/metadata/fieldbehaviour.inc.php');
return $this->validateEntity('KTFieldBehaviour', $iId, $aOptions);
}
function &validateRole($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/roles/Role.inc');
return $this->validateEntity('Role', $iId, $aOptions);
}
function &validateGroup($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/groups/Group.inc');
return $this->validateEntity('Group', $iId, $aOptions);
}
function &validateUser($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/users/User.inc');
return $this->validateEntity('User', $iId, $aOptions);
}
function &validateCondition($iId, $aOptions = null) {
require_once(KT_LIB_DIR . '/search/savedsearch.inc.php');
$oSearch = $this->validateEntity('KTSavedSearch', $iId, $aOptions);
if ($oSearch->getIsCondition()) {
return $oSearch;
}
$aOptions = KTUTil::meldOptions($aOptions, array(
'message' => _kt("Condition is a saved search, but not a condition"),
));
$this->handleError($aOptions);
}
function validateString($sString, $aOptions = null) {
$sString = trim($sString);
if (empty($sString)) {
$aOptions['message'] = KTUtil::arrayGet($aOptions,
'message', _kt("An empty string was given"));
$this->handleError($aOptions);
}
$iMaxlen = (int)KTUtil::arrayGet($aOptions, 'max_str_len', false);
if($iMaxlen !== false && $iMaxlen !== 0 && strlen($sString) > $iMaxlen) {
$aOptions['message'] = KTUtil::arrayGet($aOptions,
'max_str_len_message',
_kt("The string is too long: the maximum length in characters is ") . $iMaxlen);
$this->handleError($aOptions);
}
return $sString;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?