workflowsv2.php.tmp
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· TMP 代码 · 共 1,695 行 · 第 1/5 页
TMP
1,695 行
'url' => KTUtil::addQueryStringSelf($this->meldPersistQuery("fStateId=","permissionsoverview",true)), ); $this->aBreadcrumbs[] = array( 'name' => $this->oState->getHumanName(), 'url' => KTUtil::addQueryStringSelf($this->meldPersistQuery("","managepermissions",true)), ); $this->oPage->setBreadcrumbDetails(_kt("Allocate Permissions")); $aUsefulPermissions = KTPermission::getDocumentRelevantList(); $aPermissionGrid = array(); $aStatePermAssigns = KTWorkflowStatePermissionAssignment::getByState($this->oState); foreach ($aStatePermAssigns as $oPermAssign) { $aPermissionGrid[$oPermAssign->getPermissionId()] = $oPermAssign; } $aPermissionsToJSON = array(); foreach($aUsefulPermissions as $oP) { $perm_id = $oP->getId(); if ($aPermissionGrid[$perm_id]) { $aPermissionsToJSON[] = array('id'=>$oP->getId(), 'name'=>$oP->getHumanName()); } } $oJSON = new Services_JSON; $sJSONPermissions = $oJSON->encode($aPermissionsToJSON); $oTemplate->setData(array( 'context' => $this, 'perm_grid' => $aPermissionGrid, 'perms' => $aUsefulPermissions, 'form' => $oForm, 'jsonpermissions' => $sJSONPermissions, 'args' => $this->meldPersistQuery("","setpermissionallocations",true), )); return $oTemplate->render(); } // JSON helper. from permissions. function &_getPermissionsMap() { $aStatePermAssigns = KTWorkflowStatePermissionAssignment::getByState($this->oState); $aPermissionsMap = array('role'=>array(), 'group'=>array()); foreach ($aStatePermAssigns as $oPermAssign) { $oDescriptor = KTPermissionDescriptor::get($oPermAssign->getDescriptorId()); $iPermissionId = $oPermAssign->getPermissionId(); // groups $aGroupIds = $oDescriptor->getGroups(); foreach ($aGroupIds as $iId) { $aPermissionsMap['group'][$iId][$iPermissionId] = true; } // roles $aRoleIds = $oDescriptor->getRoles(); foreach ($aRoleIds as $iId) { $aPermissionsMap['role'][$iId][$iPermissionId] = true; } } return $aPermissionsMap; } function json_getEntities($optFilter = null) { $sFilter = KTUtil::arrayGet($_REQUEST, 'filter', false); if($sFilter == false && $optFilter != null) { $sFilter = $optFilter; } $bSelected = KTUtil::arrayGet($_REQUEST, 'selected', false); $aEntityList = array('off' => _kt('-- Please filter --')); // get permissions map $aPermissionsMap =& $this->_getPermissionsMap(); if($bSelected || $sFilter && trim($sFilter)) { if(!$bSelected) { $aEntityList = array(); } $aGroups = Group::getList(sprintf('name like "%%%s%%"', $sFilter)); foreach($aGroups as $oGroup) { $aPerm = @array_keys($aPermissionsMap['group'][$oGroup->getId()]); if(!is_array($aPerm)) { $aPerm = array(); } if($bSelected) { if(count($aPerm)) $aEntityList['g'.$oGroup->getId()] = array('type' => 'group', 'display' => 'Group: ' . $oGroup->getName(), 'name' => $oGroup->getName(), 'permissions' => $aPerm, 'id' => $oGroup->getId(), 'selected' => true); } else { $aEntityList['g'.$oGroup->getId()] = array('type' => 'group', 'display' => 'Group: ' . $oGroup->getName(), 'name' => $oGroup->getName(), 'permissions' => $aPerm, 'id' => $oGroup->getId()); } } $aRoles = Role::getList(sprintf('name like "%%%s%%"', $sFilter)); foreach($aRoles as $oRole) { $aPerm = @array_keys($aPermissionsMap['role'][$oRole->getId()]); if(!is_array($aPerm)) { $aPerm = array(); } if($bSelected) { if(count($aPerm)) $aEntityList['r'.$oRole->getId()] = array('type' => 'role', 'display' => 'Role: ' . $oRole->getName(), 'name' => $oRole->getName(), 'permissions' => $aPerm, 'id' => $oRole->getId(), 'selected' => true); } else { $aEntityList['r'.$oRole->getId()] = array('type' => 'role', 'display' => 'Role: ' . $oRole->getName(), 'name' => $oRole->getName(), 'permissions' => $aPerm, 'id' => $oRole->getId()); } } } return $aEntityList; } function do_setpermissionallocations() { $aPermissionAllowed = (array) KTUtil::arrayGet($_REQUEST, 'foo'); // thanks BD. $this->startTransaction(); $aStatePermAssigns = KTWorkflowStatePermissionAssignment::getByState($this->oState); // we now walk the alloc'd perms, and go. foreach ($aStatePermAssigns as $oPermAssign) { $aAllowed = (array) $aPermissionAllowed[$oPermAssign->getPermissionId()]; // is already role, group, etc. $oDescriptor = KTPermissionUtil::getOrCreateDescriptor($aAllowed); if (PEAR::isError($oDescriptor)) { $this->errorRedirectTo('allocatepermissions', _kt('Failed to allocate as specified.')); } $oPermAssign->setDescriptorId($oDescriptor->getId()); $res = $oPermAssign->update(); if (PEAR::isError($res)) { $this->errorRedirectTo('allocatepermissions', _kt('Failed to allocate as specified.')); } } KTPermissionUtil::updatePermissionLookupForState($this->oState); $this->successRedirectTo('managepermissions', _kt('Permissions Allocated.')); } // ACTIONS function do_actionsoverview() { $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/actions_overview'); $this->oPage->setBreadcrumbDetails(_kt("Actions")); $this->breadcrumbs_security(); $actions = KTUtil::keyArray(KTDocumentActionUtil::getAllDocumentActions(), 'getName'); $blacklist = array('ktcore.actions.document.displaydetails'); foreach ($blacklist as $name) { unset($actions[$name]); } $states = KTWorkflowState::getByWorkflow($this->oWorkflow); $action_grid = array(); foreach ($states as $oState) { $state_actions = array(); $disabled = KTWorkflowUtil::getDisabledActionsForState($oState); foreach ($disabled as $name) { $state_actions[$name] = $name; } $action_grid[$oState->getId()] = $state_actions; } $oTemplate->setData(array( 'context' => $this, 'states' => $states, 'actions' => $actions, 'grid' => $action_grid, )); return $oTemplate->render(); } function do_editactions() { $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/actions_edit'); $this->oPage->setBreadcrumbDetails(_kt("Edit Actions")); $actions = KTUtil::keyArray(KTDocumentActionUtil::getAllDocumentActions(), 'getName'); $blacklist = array('ktcore.actions.document.displaydetails'); $this->breadcrumbs_security(); foreach ($blacklist as $name) { unset($actions[$name]); } $states = KTWorkflowState::getByWorkflow($this->oWorkflow); $action_grid = array(); foreach ($states as $oState) { $state_actions = array(); $disabled = KTWorkflowUtil::getDisabledActionsForState($oState); foreach ($disabled as $name) { $state_actions[$name] = $name; } $action_grid[$oState->getId()] = $state_actions; } $oTemplate->setData(array( 'context' => $this, 'states' => $states, 'actions' => $actions, 'grid' => $action_grid, 'args' => $this->meldPersistQuery("","saveactions", true), )); return $oTemplate->render(); } function do_saveactions() { $disabled_actions = (array) $_REQUEST['fActions']; $states = KTWorkflowState::getByWorkflow($this->oWorkflow); $actions = KTUtil::keyArray(KTDocumentActionUtil::getAllDocumentActions(), 'getName'); $this->startTransaction(); foreach ($states as $oState) { $disable = array(); $state_disabled = (array) $disabled_actions[$oState->getId()]; if (!empty($state_disabled)) { foreach ($actions as $name => $oAction) { if ($state_disabled[$name]) { $disable[] = $name; } } } $res = KTWorkflowUtil::setDisabledActionsForState($oState, $disable); } $this->successRedirectTo('actionsoverview', _kt('Disabled actions updated.')); } function do_transitionsecurityoverview() { $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/transition_guards_overview'); $this->oPage->setBreadcrumbDetails(_kt("Overview")); $this->oPage->setTitle(_kt("Transition Restrictions Overview")); $this->breadcrumbs_security(); $this->aBreadcrumbs[] = array( 'name' => _kt("Transition Restrictions"), 'url' => KTUtil::addQueryStringSelf($this->meldPersistQuery("", "transitionsecurityoverview", true)), ); $transitions = KTWorkflowTransition::getByWorkflow($this->oWorkflow); $oTemplate->setData(array( 'context' => $this, 'transitions' => $transitions, )); return $oTemplate->render(); } // helper function describeTransitionGuards($oTransition) { $restrictions = KTWorkflowUtil::getGuardTriggersForTransition($oTransition); if (empty($restrictions)) { return _kt("No restrictions in place for this transition."); } $restriction_text = array(); foreach ($restrictions as $oGuard) { $restriction_text[] = $oGuard->getConfigDescription(); } return implode('. ', $restriction_text); } function form_addtransitionguard() { $oForm = new KTForm; $oForm->setOptions(array( 'identifier' => 'ktcore.admin.workflow.addguard', 'label' => _kt("Add New Transition Restriction"), 'action' => 'addguard', 'cancel_action' => 'manageguards', 'fail_action' => 'manageguards', 'submit_label' => _kt("Add Restriction"), 'context' => $this, )); $oTriggerSingleton =& KTWorkflowTriggerRegistry::getSingleton(); $aTriggerList = $oTriggerSingleton->listWorkflowTriggers(); $vocab = array(); foreach ($aTriggerList as $ns => $aTriggerInfo) { $aInfo = $aTriggerInfo; // i am lazy. //var_dump($aInfo); $actions = array(); if ($aInfo['guard']) { $actions[] = _kt('Guard'); } else { continue; } if ($aInfo['action']) { $actions[] = _kt('Action'); } $sActStr = implode(', ', $actions); $vocab[$ns] = sprintf(_kt("%s (%s)"), $aInfo['name'], $sActStr); } $oForm->setWidgets(array( array('ktcore.widgets.selection', array( 'label' => _kt("Restriction Type"), 'name' => 'guard_name', 'vocab' => $vocab, 'simple_select' => false, 'required' => true, )), )); $oForm->setValidators(array( array('ktcore.validators.string', array( 'test' => 'guard_name', 'output' => 'guard_name', )), )); return $oForm; } function do_manageguards() { $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/restrictions_edit'); $this->oPage->setBreadcrumbDetails(_kt("Manage Restrictions")); $this->breadcrumbs_security(
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?