dispatchervalidation.inc.php
4.78 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?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 &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(_("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)) {
$this->oDispatcher->errorPage(sprintf("Invalid identifier provided for: %s", $entity_name));
}
return $oEntity;
}
function notError(&$res, $aOptions = null) {
$aOptions = (array)$aOptions;
if (PEAR::isError($res)) {
$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');
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->oDispatcher, this, 'errorRedirectTo'), $aRealRedirectTo);
}
$this->oDispatcher->errorPage($sMessage);
}
function &validateTemplate($sTemplateName, $aOptions = null) {
$oTemplating =& KTTemplating::getSingleton();
$oTemplate =& $oTemplating->loadTemplate($sTemplateName);
$aOptions['message'] = KTUtil::arrayGet($aOptions, 'message', '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);
}
}
?>