Commit d13403b8a8ea8b7cb44a57e037e1f85442c1a568
1 parent
049a5209
Implement informed users saving and guard roles/groups.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3884 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
87 additions
and
4 deletions
presentation/lookAndFeel/knowledgeTree/administration/workflow/workflows.php
| @@ -12,6 +12,10 @@ require_once(KT_LIB_DIR . '/workflow/workflowtransition.inc.php'); | @@ -12,6 +12,10 @@ require_once(KT_LIB_DIR . '/workflow/workflowtransition.inc.php'); | ||
| 12 | $sectionName = "Administration"; | 12 | $sectionName = "Administration"; |
| 13 | require_once(KT_DIR . "/presentation/webpageTemplate.inc"); | 13 | require_once(KT_DIR . "/presentation/webpageTemplate.inc"); |
| 14 | 14 | ||
| 15 | +require_once(KT_LIB_DIR . '/permissions/permission.inc.php'); | ||
| 16 | +require_once(KT_LIB_DIR . '/groups/Group.inc'); | ||
| 17 | +require_once(KT_LIB_DIR . '/roles/Role.inc'); | ||
| 18 | + | ||
| 15 | class KTWorkflowDispatcher extends KTStandardDispatcher { | 19 | class KTWorkflowDispatcher extends KTStandardDispatcher { |
| 16 | var $bAutomaticTransaction = true; | 20 | var $bAutomaticTransaction = true; |
| 17 | 21 | ||
| @@ -57,6 +61,9 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | @@ -57,6 +61,9 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | ||
| 57 | // {{{ do_saveWorkflow | 61 | // {{{ do_saveWorkflow |
| 58 | function do_saveWorkflow() { | 62 | function do_saveWorkflow() { |
| 59 | $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); | 63 | $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); |
| 64 | + $aOptions = array( | ||
| 65 | + 'redirect_to' => array('editWorkflow', 'fWorkflowId=' . $oWorkflow->getId()), | ||
| 66 | + ); | ||
| 60 | $oWorkflow->setName($_REQUEST['fName']); | 67 | $oWorkflow->setName($_REQUEST['fName']); |
| 61 | $oWorkflow->setHumanName($_REQUEST['fName']); | 68 | $oWorkflow->setHumanName($_REQUEST['fName']); |
| 62 | if (!empty($_REQUEST['fStartStateId'])) { | 69 | if (!empty($_REQUEST['fStartStateId'])) { |
| @@ -151,14 +158,20 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | @@ -151,14 +158,20 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | ||
| 151 | 'query' => 'action=editState&fWorkflowId=' . $oWorkflow->getId() . '&fStateId=' . $oState->getId(), | 158 | 'query' => 'action=editState&fWorkflowId=' . $oWorkflow->getId() . '&fStateId=' . $oState->getId(), |
| 152 | 'name' => 'State ' . $oState->getName(), | 159 | 'name' => 'State ' . $oState->getName(), |
| 153 | ); | 160 | ); |
| 161 | + $aInformed = KTWorkflowUtil::getInformedForState($oState); | ||
| 154 | $oTemplate->setData(array( | 162 | $oTemplate->setData(array( |
| 155 | 'oWorkflow' => $oWorkflow, | 163 | 'oWorkflow' => $oWorkflow, |
| 156 | 'oState' => $oState, | 164 | 'oState' => $oState, |
| 165 | + 'oNotifyRole' => $oRole, | ||
| 157 | 'aTransitionsTo' => $aTransitionsTo, | 166 | 'aTransitionsTo' => $aTransitionsTo, |
| 158 | 'aTransitions' => $aTransitions, | 167 | 'aTransitions' => $aTransitions, |
| 159 | 'aTransitionsSelected' => $aTransitionsSelected, | 168 | 'aTransitionsSelected' => $aTransitionsSelected, |
| 160 | 'aActions' => KTDocumentActionUtil::getDocumentActionsByNames(KTWorkflowUtil::getControlledActionsForWorkflow($oWorkflow)), | 169 | 'aActions' => KTDocumentActionUtil::getDocumentActionsByNames(KTWorkflowUtil::getControlledActionsForWorkflow($oWorkflow)), |
| 161 | 'aActionsSelected' => KTWorkflowUtil::getEnabledActionsForState($oState), | 170 | 'aActionsSelected' => KTWorkflowUtil::getEnabledActionsForState($oState), |
| 171 | + 'aGroups' => Group::getList(), | ||
| 172 | + 'aRoles' => Role::getList(), | ||
| 173 | + 'aUsers' => User::getList(), | ||
| 174 | + 'aInformed' => $aInformed, | ||
| 162 | )); | 175 | )); |
| 163 | return $oTemplate; | 176 | return $oTemplate; |
| 164 | } | 177 | } |
| @@ -207,6 +220,44 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | @@ -207,6 +220,44 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | ||
| 207 | exit(0); | 220 | exit(0); |
| 208 | } | 221 | } |
| 209 | // }}} | 222 | // }}} |
| 223 | + | ||
| 224 | + // {{{ do_saveInform | ||
| 225 | + function do_saveInform() { | ||
| 226 | + $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); | ||
| 227 | + $oState =& $this->oValidator->validateWorkflowState($_REQUEST['fStateId']); | ||
| 228 | + $sTargetAction = 'editState'; | ||
| 229 | + $sTargetParams = 'fWorkflowId=' . $oWorkflow->getId() . '&fStateId=' . $oState->getId(); | ||
| 230 | + $aRoleIds = KTUtil::arrayGet($_REQUEST, 'fRoleIds'); | ||
| 231 | + if (empty($aRoleIds)) { | ||
| 232 | + $aRoleIds = array(); | ||
| 233 | + } | ||
| 234 | + if (!is_array($aRoleIds)) { | ||
| 235 | + $this->errorRedirectTo($sTargetAction, 'Invalid roles specified', $sTargetParams); | ||
| 236 | + } | ||
| 237 | + $aGroupIds = KTUtil::arrayGet($_REQUEST, 'fGroupIds'); | ||
| 238 | + if (empty($aGroupIds)) { | ||
| 239 | + $aGroupIds = array(); | ||
| 240 | + } | ||
| 241 | + if (!is_array($aGroupIds)) { | ||
| 242 | + $this->errorRedirectTo($sTargetAction, 'Invalid groups specified', $sTargetParams); | ||
| 243 | + } | ||
| 244 | + $aUserIds = KTUtil::arrayGet($_REQUEST, 'fUserIds'); | ||
| 245 | + if (empty($aUserIds)) { | ||
| 246 | + $aUserIds = array(); | ||
| 247 | + } | ||
| 248 | + if (!is_array($aUserIds)) { | ||
| 249 | + $this->errorRedirectTo($sTargetAction, 'Invalid users specified', $sTargetParams); | ||
| 250 | + } | ||
| 251 | + $aAllowed = array( | ||
| 252 | + 'role' => $aRoleIds, | ||
| 253 | + 'group' => $aGroupIds, | ||
| 254 | + 'user' => $aUserIds, | ||
| 255 | + ); | ||
| 256 | + KTWorkflowUtil::setInformedForState($oState, $aAllowed); | ||
| 257 | + $this->successRedirectTo($sTargetAction, 'Changes made', $sTargetParams); | ||
| 258 | + } | ||
| 259 | + // }}} | ||
| 260 | + | ||
| 210 | // }}} | 261 | // }}} |
| 211 | 262 | ||
| 212 | // {{{ TRANSITION HANDLING | 263 | // {{{ TRANSITION HANDLING |
| @@ -215,13 +266,26 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | @@ -215,13 +266,26 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | ||
| 215 | function do_newTransition() { | 266 | function do_newTransition() { |
| 216 | $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); | 267 | $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); |
| 217 | $oState =& $this->oValidator->validateWorkflowState($_REQUEST['fTargetStateId']); | 268 | $oState =& $this->oValidator->validateWorkflowState($_REQUEST['fTargetStateId']); |
| 218 | - $oPermission =& $this->oValidator->validatePermission($_REQUEST['fPermissionId']); | 269 | + $iPermissionId = KTUtil::arrayGet($_REQUEST, 'fPermissionId'); |
| 270 | + $iGroupId = KTUtil::arrayGet($_REQUEST, 'fGroupId'); | ||
| 271 | + $iRoleId = KTUtil::arrayGet($_REQUEST, 'fRoleId'); | ||
| 272 | + if ($iPermissionId) { | ||
| 273 | + $this->oValidator->validatePermission($_REQUEST['fPermissionId']); | ||
| 274 | + } | ||
| 275 | + if ($iGroupId) { | ||
| 276 | + $this->oValidator->validateGroup($_REQUEST['fGroupId']); | ||
| 277 | + } | ||
| 278 | + if ($iRoleId) { | ||
| 279 | + $this->oValidator->validateRole($_REQUEST['fRoleId']); | ||
| 280 | + } | ||
| 219 | $res = KTWorkflowTransition::createFromArray(array( | 281 | $res = KTWorkflowTransition::createFromArray(array( |
| 220 | 'workflowid' => $oWorkflow->getId(), | 282 | 'workflowid' => $oWorkflow->getId(), |
| 221 | 'name' => $_REQUEST['fName'], | 283 | 'name' => $_REQUEST['fName'], |
| 222 | 'humanname' => $_REQUEST['fName'], | 284 | 'humanname' => $_REQUEST['fName'], |
| 223 | 'targetstateid' => $oState->getId(), | 285 | 'targetstateid' => $oState->getId(), |
| 224 | - 'guardpermissionid' => $oPermission->getId(), | 286 | + 'guardpermissionid' => $iPermissionId, |
| 287 | + 'guardgroupid' => $iGroupId, | ||
| 288 | + 'guardroleid' => $iRoleId, | ||
| 225 | )); | 289 | )); |
| 226 | $this->oValidator->notError($res, array( | 290 | $this->oValidator->notError($res, array( |
| 227 | 'redirect_to' => array('editWorkflow', 'fWorkflowId=' . $oWorkflow->getId()), | 291 | 'redirect_to' => array('editWorkflow', 'fWorkflowId=' . $oWorkflow->getId()), |
| @@ -252,6 +316,8 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | @@ -252,6 +316,8 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | ||
| 252 | 'oTransition' => $oTransition, | 316 | 'oTransition' => $oTransition, |
| 253 | 'aStates' => KTWorkflowState::getByWorkflow($oWorkflow), | 317 | 'aStates' => KTWorkflowState::getByWorkflow($oWorkflow), |
| 254 | 'aPermissions' => KTPermission::getList(), | 318 | 'aPermissions' => KTPermission::getList(), |
| 319 | + 'aGroups' => Group::getList(), | ||
| 320 | + 'aRoles' => Role::getList(), | ||
| 255 | )); | 321 | )); |
| 256 | return $oTemplate; | 322 | return $oTemplate; |
| 257 | } | 323 | } |
| @@ -259,16 +325,33 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | @@ -259,16 +325,33 @@ class KTWorkflowDispatcher extends KTStandardDispatcher { | ||
| 259 | 325 | ||
| 260 | // {{{ do_saveTransition | 326 | // {{{ do_saveTransition |
| 261 | function do_saveTransition() { | 327 | function do_saveTransition() { |
| 328 | + $aRequest = $this->oValidator->validateDict($_REQUEST, array( | ||
| 329 | + 'fWorkflowId' => array('type' => 'workflow'), | ||
| 330 | + 'fTransitionId' => array('type' => 'workflowtransition'), | ||
| 331 | + )); | ||
| 262 | $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); | 332 | $oWorkflow =& $this->oValidator->validateWorkflow($_REQUEST['fWorkflowId']); |
| 263 | $oTransition =& $this->oValidator->validateWorkflowTransition($_REQUEST['fTransitionId']); | 333 | $oTransition =& $this->oValidator->validateWorkflowTransition($_REQUEST['fTransitionId']); |
| 264 | $oState =& $this->oValidator->validateWorkflowState($_REQUEST['fTargetStateId']); | 334 | $oState =& $this->oValidator->validateWorkflowState($_REQUEST['fTargetStateId']); |
| 265 | - $oPermission =& $this->oValidator->validatePermission($_REQUEST['fPermissionId']); | 335 | + $iPermissionId = KTUtil::arrayGet($_REQUEST, 'fPermissionId', null); |
| 336 | + $iGroupId = KTUtil::arrayGet($_REQUEST, 'fGroupId', null); | ||
| 337 | + $iRoleId = KTUtil::arrayGet($_REQUEST, 'fRoleId', null); | ||
| 338 | + if ($iPermissionId) { | ||
| 339 | + $this->oValidator->validatePermission($_REQUEST['fPermissionId']); | ||
| 340 | + } | ||
| 341 | + if ($iGroupId) { | ||
| 342 | + $this->oValidator->validateGroup($_REQUEST['fGroupId']); | ||
| 343 | + } | ||
| 344 | + if ($iRoleId) { | ||
| 345 | + $this->oValidator->validateRole($_REQUEST['fRoleId']); | ||
| 346 | + } | ||
| 266 | $oTransition->updateFromArray(array( | 347 | $oTransition->updateFromArray(array( |
| 267 | 'workflowid' => $oWorkflow->getId(), | 348 | 'workflowid' => $oWorkflow->getId(), |
| 268 | 'name' => $_REQUEST['fName'], | 349 | 'name' => $_REQUEST['fName'], |
| 269 | 'humanname' => $_REQUEST['fName'], | 350 | 'humanname' => $_REQUEST['fName'], |
| 270 | 'targetstateid' => $oState->getId(), | 351 | 'targetstateid' => $oState->getId(), |
| 271 | - 'guardpermissionid' => $oPermission->getId(), | 352 | + 'guardpermissionid' => $iPermissionId, |
| 353 | + 'guardgroupid' => $iGroupId, | ||
| 354 | + 'guardroleid' => $iRoleId, | ||
| 272 | )); | 355 | )); |
| 273 | $res = $oTransition->update(); | 356 | $res = $oTransition->update(); |
| 274 | $this->oValidator->notErrorFalse($res, array( | 357 | $this->oValidator->notErrorFalse($res, array( |