workflowsv2.php.tmp

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

TMP
1,695
字号
			        	if($aTransitionsMap[oldId][$i] == $oTrigger->getTransitionId()){			        		$iTransitionId = $aTransitionsMap[newId][$i];			        		$res = KTWorkflowTriggerInstance::createFromArray(array(				            'transitionid' => $iTransitionId,				            'namespace' =>  $oTrigger->getNamespace(),				            'config' => $oTrigger->getConfigArrayText(),				        	));				        	if (PEAR::isError($res)) {				            	return $this->errorRedirectToMain(sprintf(_kt("Unable to add trigger: %s"), $res->getMessage()));				        	}			        	}			        }	        	}	        }        }        return $this->successRedirectToMain(sprintf(_kt("%s successfully copied as %s"), $oSelWorkflow->getName(), $oNewWorkflow->getName()));    }    function do_newWorkflow() {        // subdispatch this to the NewWorkflowWizard.        require_once(dirname(__FILE__) . '/workflow/newworkflow.inc.php');        $oSubDispatcher =& new KTNewWorkflowWizard;        $oSubDispatcher->redispatch('wizard', null, $this);        exit(0);    }    // -------------------- Overview -----------------    // basic view page.    function do_view() {        $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/view');        $this->oPage->setBreadcrumbDetails(_kt("Overview"));        if (!$this->oWorkflow->getIsEnabled()) {            $this->addInfoMessage(_kt("This workflow is currently marked as disabled.  No new documents can be assigned to this workflow until it is enabled.  To change this, please edit the workflow's base properties."));        }        if ($this->oWorkflow->getStartStateId() == false) {            $this->addErrorMessage(_kt("No start state is specified for this workflow.  No new documents can be assigned to this workflow until one is assigned. To change this, please edit the workflow's base properties."));        }        // for the basic view        $start_state_id = $this->oWorkflow->getStartStateId();        $oState = KTWorkflowState::get($start_state_id);        if (PEAR::isError($oState)) {            $state_name = _kt('No starting state.');        } else {            $state_name = $oState->getName();        }        // we want to "outsource" some of the analysis        if ($this->HAVE_GRAPHVIZ) {            $graph_data = $this->get_graph($this->oWorkflow);            if (!empty($graph_data['errors'])) {                foreach ($graph_data['errors'] as $error) {                    $this->addErrorMessage($error);                }            }            if (!empty($graph_data['info'])) {                foreach ($graph_data['info'] as $info) {                    $this->addInfoMessage($info);                }            }        }        $oTemplate->setData(array(            'context' => $this,            'workflow_name' => $this->oWorkflow->getName(),            'state_name' => $state_name,            'workflow' => $this->oWorkflow,            'have_graphviz' => $this->HAVE_GRAPHVIZ,        ));        return $oTemplate->render();    }    function form_coreedit() {        $oForm = new KTForm;        $oForm->setOptions(array(            'context' => $this,            'action' => 'setcore',            'fail_action' => 'editcore',            'cancel_action' => 'view',            'label' => _kt('Edit Workflow Details'),            'submit_label' => _kt('Update Workflow Details'),        ));        $oForm->setWidgets(array(            array('ktcore.widgets.string',array(                'label' => _kt("Workflow Name"),                'description' => _kt("Each workflow must have a unique name."),                'name' => 'workflow_name',                'required' => true,                'value' => sanitizeForHTML($this->oWorkflow->getName()),            )),            array('ktcore.widgets.entityselection', array(                'label' => _kt("Starting State"),                'description' => _kt('When a document has this workflow applied to it, which state should it initially have.'),                'name' => 'start_state',                'label_method' => 'getHumanName',                'vocab' => KTWorkflowState::getByWorkflow($this->oWorkflow),                'value' => $this->oWorkflow->getStartStateId(),                'required' => true,            )),            array('ktcore.widgets.boolean', array(                'label' => _kt('Enabled'),                'description' => _kt('If a workflow is disabled, no new documents may be placed in it.  Documents which were previously in the workflow continue to be able to change state, however.'),                'name' => 'enabled',                'value' => $this->oWorkflow->getIsEnabled(),            )),        ));        $oForm->setValidators(array(            array('ktcore.validators.string', array(                'test' => 'workflow_name',                'output' => 'workflow_name',            )),            array('ktcore.validators.entity', array(                'test' => 'start_state',                'class' => 'KTWorkflowState',                'output' => 'start_state',            )),            array('ktcore.validators.boolean', array(                'test' => 'enabled',                'output' => 'enabled',            ))        ));        return $oForm;    }    function do_editcore() {        $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/edit_core');        $this->oPage->setBreadcrumbDetails(_kt("Edit Details"));        $oForm = $this->form_coreedit();        $oTemplate->setData(array(            'context' => $this,            'workflow_name' => $this->oWorkflow->getName(),            'edit_form' => $oForm,        ));        return $oTemplate->render();    }    function do_setcore() {        $oForm = $this->form_coreedit();        $res = $oForm->validate();        $data = $res['results'];        $errors = $res['errors'];        if (!empty($errors)) {            $oForm->handleError();        }        $this->startTransaction();        $this->oWorkflow->setName($data['workflow_name']);        $this->oWorkflow->setHumanName($data['workflow_name']);        $this->oWorkflow->setStartStateId($data['start_state']->getId());        $this->oWorkflow->setIsEnabled($data['enabled']);        $res = $this->oWorkflow->update();        if (PEAR::isError($res)) {            $oForm->handleError(sprintf(_kt("Failed to update workflow: %s"), $res->getMessage()));        }        $this->successRedirectTo("view",_kt("Workflow updated."));    }    // ----------------- Basic - States & Transition ---------------------    function breadcrumbs_basic() {        $this->aBreadcrumbs[] = array(            'url' => KTUtil::addQueryStringSelf($this->meldPersistQuery("", "basic")),            'name' => _kt("States and Transitions"),        );    }    function do_basic() {        $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/basic_overview');        $this->breadcrumbs_basic();        $this->oPage->setBreadcrumbDetails(_kt("Overview"));        $aStates = KTWorkflowState::getByWorkflow($this->oWorkflow);        $aTransitions = KTWorkflowTransition::getByWorkflow($this->oWorkflow);        if ($this->HAVE_GRAPHVIZ) {            $graph_data = $this->get_graph($this->oWorkflow);            if (!empty($graph_data['errors'])) {                foreach ($graph_data['errors'] as $error) {                    $this->addErrorMessage($error);                }            }            if (!empty($graph_data['info'])) {                foreach ($graph_data['info'] as $info) {                    $this->addInfoMessage($info);                }            }        }        $oTemplate->setData(array(            'context' => $this,            'workflow_name' => $this->oWorkflow->getName(),            'states' => $aStates,            'transitions' => $aTransitions,        ));        return $oTemplate->render();    }    function form_transitionconnections() {        $oForm = new KTForm;        $oForm->setOptions(array(            'label' => _kt('Configure Workflow Process'),            'description' => _kt('The process a document follows is controlled by the way that the transitions between states are setup.  A document starts the workflow in the initial state, and then follows transitions between states.  Which users can perform these transitions can be configured in the "Security" section.'),            'submit_label' => _kt('Update Process'),            'cancel_action' => 'basic',            'action' => 'setconnections',            'fail_action' => 'transitionconnections', // consistency - this is not really used.            'context' => $this,        ));        return $oForm;    }    function do_transitionconnections() {        // we don't use a traditional form here, since the grid is too complex        // and its essentially one-shot.        //        //        $oForm = $this->form_transitionconnections();        $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/configure_process');        $this->breadcrumbs_basic();        $this->oPage->setBreadcrumbDetails(_kt("Edit Transition Connections"));        // we want to re-use this for *subsets*.        $transition_ids = KTUtil::arrayGet($_REQUEST, 'transition_ids');        $bRestrict = is_array($transition_ids);        $transitions = KTWorkflowTransition::getByWorkflow($this->oWorkflow);        $availability = array();        foreach ($transitions as $oTransition) {            if ($bRestrict) {                if ($transition_ids[$oTransition->getId()]) {                    $final_transitions[] = $oTransition;                } else {                    continue;                }            }            $sources = KTWorkflowAdminUtil::getSourceStates($oTransition, array('ids' => true));            $aSources = array();            foreach ($sources as $source) { $aSources[$source] = $source; }            $availability[$oTransition->getId()] = $aSources;        }        if ($bRestrict) {            $transitions = $final_transitions;        }        if ($this->HAVE_GRAPHVIZ) {            $graph_data = $this->get_graph($this->oWorkflow);            if (!empty($graph_data['errors'])) {                foreach ($graph_data['errors'] as $error) {                    $this->addErrorMessage($error);                }            }            if (!empty($graph_data['info'])) {                foreach ($graph_data['info'] as $info) {                    $this->addInfoMessage($info);                }            }        }        $oTemplate->setData(array(            'context' => $this,            'form' => $oForm,            'states' => KTWorkflowState::getByWorkflow($this->oWorkflow),            'transitions' => $transitions,            'availability' => $availability,        ));        return $oTemplate->render();    }    function do_setconnections() {        // we *must* ensure that transitions are not set to originate from their        // destination.        //        // we can ignore it here, because its dealt with in workflowadminutil        $to = (array) KTUtil::arrayGet($_REQUEST, 'fTo');        $from = (array) KTUtil::arrayGet($_REQUEST, 'fFrom');        // we do not trust any of this data.        $states = KTWorkflowState::getByWorkflow($this->oWorkflow);        $states = KTUtil::keyArray($states);        $transitions = KTWorkflowTransition::getByWorkflow($this->oWorkflow);        $this->startTransaction();        foreach ($transitions as $oTransition) {            $dest_id = $to[$oTransition->getId()];            $oDestState = $states[$dest_id];            if (!is_null($oDestState)) {                $oTransition->setTargetStateId($dest_id);                $res = $oTransition->update();                if (PEAR::isError($res)) {                    $this->errorRedirectTo('basic', sprintf(_kt("Unexpected error updating transition: %s"), $res->getMessage()));                }            }            // hook up source states.            $source_state_ids = array();            $sources = (array) $from[$oTransition->getId()];            foreach ($sources as $state_id => $discard) {                // test existence                $oState = $states[$state_id];                if (!is_null($oState) && ($dest_id != $state_id)) {                    $source_state_ids[] = $oState->getId();                }            }			$aFromTransitionID = array_keys($_REQUEST['fFrom']);			//run through all transitions to change			foreach ($aFromTransitionID as $iCurrentId)			{

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?