dispatchervalidation.inc.php
3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
class KTDispatcherValidation {
function &validateFolder (&$this, $iId, $aOptions = null) {
return KTDispatcherValidation::validateEntity($this, 'Folder', $iId, $aOptions);
}
function &validatePermissionByName (&$this, $iId, $aOptions = null) {
KTUtil::meldOptions($aOptions, array(
'method' => 'getByName',
));
return KTDispatcherValidation::validateEntity($this, 'KTPermission', $iId, $aOptions);
}
function userHasPermissionOnItem(&$this, $oUser, $oPermission, $oItem, $aOptions) {
require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');
if (KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oItem)) {
return;
}
$this->errorPage(_("Insufficient permissions to perform action"));
}
function &validateEntity(&$this, $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)) {
$this->errorPage(sprintf("Invalid identifier provided for: %s", $entity_name));
}
return $oEntity;
}
function notError(&$this, &$res, $aOptions = null) {
$aOptions = (array)$aOptions;
if (PEAR::isError($res)) {
$aOptions = KTUTil::meldOptions($aOptions, array(
'exception' => $res,
));
KTDispatcherValidation::handleError($this, $aOptions);
}
}
function notErrorFalse(&$this, &$res, $aOptions = null) {
$aOptions = (array)$aOptions;
if (PEAR::isError($res) || ($res === false)) {
$aOptions = KTUTil::meldOptions($aOptions, array(
'exception' => $res,
));
KTDispatcherValidation::handleError($this, $aOptions);
}
}
function handleError($this, $aOptions = null) {
$aOptions = (array)$aOptions;
$aRedirectTo = KTUtil::arrayGet($aOptions, 'redirect_to');
$oException = KTUtil::arrayGet($aOptions, 'exception');
$sMessage = KTUtil::arrayGet($aOptions, 'message');
if (is_null($sMessage)) {
if ($oException) {
$sMessage = $oException->toString();
} else {
$sMessage = "An error occurred, and no error message was given";
}
}
if ($aRedirectTo) {
$aRealRedirectTo = array($aRedirectTo[0], $sMessage, KTUtil::arrayGet($aRedirectTo, 1));
call_user_func_array(array($this, 'errorRedirectTo'), $aRealRedirectTo);
}
$this->errorPage($sMessage);
}
function &validateTemplate($this, $sTemplateName, $aOptions = null) {
$oTemplating =& KTTemplating::getSingleton();
$oTemplate =& $oTemplating->loadTemplate($sTemplateName);
$aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', 'Failed to locate template');
KTDispatcherValidation::notError($this, $oTemplate, $aOptions);
return $oTemplate;
}
function &validateWorkflow($this, $iId, $aOptions = null) {
return KTDispatcherValidation::validateEntity($this, 'KTWorkflow', $iId, $aOptions);
}
function &validateWorkflowState($this, $iId, $aOptions = null) {
return KTDispatcherValidation::validateEntity($this, 'KTWorkflowState', $iId, $aOptions);
}
function &validateWorkflowTransition($this, $iId, $aOptions = null) {
return KTDispatcherValidation::validateEntity($this, 'KTWorkflowTransition', $iId, $aOptions);
}
function &validatePermission($this, $iId, $aOptions = null) {
return KTDispatcherValidation::validateEntity($this, 'KTPermission', $iId, $aOptions);
}
}
?>