function getTriggersForTransition($oTransition)
 {
     $oKTWorkflowTriggerRegistry =& KTWorkflowTriggerRegistry::getSingleton();
     $aTriggers = array();
     $aTriggerInstances = KTWorkflowTriggerInstance::getByTransition($oTransition);
     foreach ($aTriggerInstances as $oTriggerInstance) {
         $oTrigger = $oKTWorkflowTriggerRegistry->getWorkflowTrigger($oTriggerInstance->getNamespace());
         if (PEAR::isError($oTrigger)) {
             return $oTrigger;
         }
         $oTrigger->loadConfig($oTriggerInstance);
         $aTriggers[] = $oTrigger;
     }
     return $aTriggers;
 }
 function generateWorkflowTriggers()
 {
     require_once KT_LIB_DIR . '/workflow/workflowutil.inc.php';
     // get all the transitions, and add a trigger to the util with the appropriate settings.
     $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton();
     $aTransitions = KTWorkflowTransition::getList();
     foreach ($aTransitions as $oTransition) {
         // guard perm
         $iGuardPerm = $oTransition->getGuardPermissionId();
         if (!is_null($iGuardPerm)) {
             $sNamespace = 'ktcore.workflowtriggers.permissionguard';
             $oPerm = KTPermission::get($iGuardPerm);
             $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace);
             $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array('transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('perms' => array($oPerm->getName()))));
         }
         // guard group
         $iGuardGroup = $oTransition->getGuardGroupId();
         if (!is_null($iGuardGroup)) {
             $sNamespace = 'ktcore.workflowtriggers.groupguard';
             $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace);
             $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array('transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('group_id' => $iGuardGroup)));
         }
         // guard role
         $iGuardRole = $oTransition->getGuardRoleId();
         if (!is_null($iGuardRole)) {
             $sNamespace = 'ktcore.workflowtriggers.roleguard';
             $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace);
             $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array('transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('role_id' => $iGuardRole)));
         }
         // guard condition
         $iGuardCondition = $oTransition->getGuardConditionId();
         if (!is_null($iGuardCondition)) {
             $sNamespace = 'ktcore.workflowtriggers.conditionguard';
             $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace);
             $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array('transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('condition_id' => $iGuardCondition)));
         }
     }
 }
Beispiel #3
0
 function do_deleteactiontrigger()
 {
     $oTriggerInstance =& KTWorkflowTriggerInstance::get($_REQUEST['fTriggerInstanceId']);
     if (PEAR::isError($oTriggerInstance)) {
         return $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
     }
     // grab the transition ns from the request.
     $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton();
     $this->startTransaction();
     $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($oTriggerInstance->getNamespace());
     if (PEAR::isError($oTrigger)) {
         $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
         exit(0);
     }
     $oTrigger->loadConfig($oTriggerInstance);
     $res = $oTriggerInstance->delete();
     if (PEAR::isError($res)) {
         $this->errorRedirectTo('managetransitionactions', _kt('Unable to delete trigger: ') . $res->getMessage(), 'fWorkflowId=' . $oWorkflow->getId() . '&fTransitionId=' . $oTransition->getId());
         exit(0);
     }
     $this->successRedirectTo('managetransitionactions', _kt('Trigger deleted.'));
     exit(0);
 }