workflowsv2.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 1,695 行 · 第 1/5 页

SVN-BASE
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 + -
显示快捷键?