. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ use ProcessMaker\Plugins\PluginRegistry; $c = new Criteria(); $c->add(StepPeer::PRO_UID, $_SESSION['PROCESS']); $c->add(StepPeer::TAS_UID, $_SESSION['TASK']); $c->addAscendingOrderByColumn(StepPeer::STEP_POSITION); $oPluginRegistry = PluginRegistry::loadSingleton(); $externalSteps = $oPluginRegistry->getSteps(); $oTree = new PmTree(); $oTree->nodeType = "blank"; $oTree->name = 'Steps'; $oTree->showSign = false; $tasUid = $_SESSION['TASK']; $rs = StepPeer::doSelect($c); $oCase = new Cases(); $Fields = $oCase->loadCase($_SESSION['APPLICATION']); $oPMScript = new PMScript(); $oPMScript->setFields($Fields['APP_DATA']); foreach ($rs as $key => $aRow) { $bAccessStep = false; if (trim($aRow->getStepCondition()) != '') { $oPMScript->setScript($aRow->getStepCondition()); $bAccessStep = $oPMScript->evaluate(); } else { $bAccessStep = true; } if ($bAccessStep) { switch ($aRow->getStepTypeObj()) { case 'DYNAFORM': $oDocument = DynaformPeer::retrieveByPK($aRow->getStepUidObj()); $stepTitle = $oDocument->getDynTitle(); break; case 'OUTPUT_DOCUMENT': $oDocument = OutputDocumentPeer::retrieveByPK($aRow->getStepUidObj()); $stepTitle = $oDocument->getOutDocTitle(); break; case 'INPUT_DOCUMENT': $oDocument = InputDocumentPeer::retrieveByPK($aRow->getStepUidObj()); $stepTitle = $oDocument->getInpDocTitle(); $sType = $oDocument->getInpDocFormNeeded(); break; case 'EXTERNAL': $stepTitle = 'unknown ' . $aRow->getStepUidObj(); $oPluginRegistry = PluginRegistry::loadSingleton(); /** @var \ProcessMaker\Plugins\Interfaces\StepDetail $val */ foreach ($externalSteps as $val) { if ($val->equalStepIdTo($aRow->getStepUidObj())) { $stepTitle = $val->getStepTitle(); //default title $sNamespace = $val->getNamespace(); $oPlugin = $oPluginRegistry->getPlugin($sNamespace); $classFile = PATH_PLUGINS . $oPlugin->sNamespace . PATH_SEP . 'class.' . $oPlugin->sNamespace . '.php'; if (file_exists($classFile)) { require_once($classFile); $sClassName = $sNamespace . 'class'; $obj = new $sClassName(); if (method_exists($obj, 'getExternalStepTitle')) { $stepTitle = $obj->getExternalStepTitle($aRow->getStepUidObj(), $tasUid, $aRow->getStepPosition()); } } } } break; default: $stepTitle = $aRow->getStepUid(); } $oNode = $oTree->addChild($aRow->getStepUid(), ' ' . $stepTitle, array('nodeType' => 'parent')); $oNode->plus = ''; $oNode->minus = ''; switch ($aRow->getStepTypeObj()) { case 'DYNAFORM': $sOptions = ''; $sOptions .= ''; $sOptions .= '
' . G::LoadTranslation('ID_EDIT') . '
'; $oAux = $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child')); break; case 'OUTPUT_DOCUMENT': $sOptions = ''; $oCriteria = new Criteria('workflow'); $oCriteria->add(AppDocumentPeer::APP_UID, $_SESSION['APPLICATION']); $oCriteria->add(AppDocumentPeer::DEL_INDEX, $_SESSION['INDEX']); $oCriteria->add(AppDocumentPeer::DOC_UID, $aRow->getStepUidObj()); $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'); $oDataset = AppDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); if ($aRow2 = $oDataset->getRow()) { $sOptions .= ''; $sOptions .= ''; $sOptions .= ''; } else { $sOptions .= ''; } $sOptions .= '
' . G::LoadTranslation('ID_VIEW') . '' . G::LoadTranslation('ID_GENERATE') . '' . G::LoadTranslation('ID_DELETE') . '' . G::LoadTranslation('ID_GENERATE') . '
'; $oAux = $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child')); break; case 'INPUT_DOCUMENT': $sOptions = ''; $sOptions .= ''; $sOptions .= '
' . ($sType == 'REAL' ? G::LoadTranslation('ID_NEW') : G::LoadTranslation('ID_ATTACH')) . '
'; $oCri = new Criteria; $oCri->add(AppDocumentPeer::APP_UID, $_SESSION['APPLICATION']); $oCri->add(AppDocumentPeer::DEL_INDEX, $_SESSION['INDEX']); $oCri->add(AppDocumentPeer::DOC_UID, $aRow->getStepUidObj()); $oCri->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT'); $oCri->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX); $aDocuments = AppDocumentPeer::doSelect($oCri); if (sizeof($aDocuments) !== 0) { $i = 1; $sOptions .= ''; reset($aDocuments); while ($oDocument = current($aDocuments)) { $aRow2 = $oDocument->toArray(BasePeer::TYPE_FIELDNAME); $oAux1 = new AppDocument(); $aAux = $oAux1->load($aRow2['APP_DOC_UID']); $sOptions .= ''; if ($aAux['APP_DOC_FILENAME'] != '') { $sAux = $aAux['APP_DOC_FILENAME']; } else { $sAux = $aAux['APP_DOC_COMMENT']; } $sOptions .= ''; global $oPluginRegistry; if (!$oPluginRegistry->existsTrigger(PM_CASE_DOCUMENT_LIST)) { if (isset($_GET['DOC'])) { $sOptions .= ''; } else { $sOptions .= ''; } $sOptions .= ''; } $sOptions .= ''; $i++; next($aDocuments); } $sOptions .= '
' . $i . '.' . G::LoadTranslation('ID_VIEW') . '' . G::LoadTranslation('ID_VIEW') . '' . G::LoadTranslation('ID_DELETE') . '
'; } $oAux = $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child')); break; case 'MESSAGE': $sOptions = ''; $sOptions .= ''; $sOptions .= '
'; $oAux = $oNode->addChild($aRow['STEP_UID'] . '_node', $sOptions, array('nodeType' => 'child')); break; case 'EXTERNAL': $aActions = array('action' => 'label'); $oPluginRegistry = PluginRegistry::loadSingleton(); /** @var \ProcessMaker\Plugins\Interfaces\StepDetail $val */ foreach ($externalSteps as $keyStep => $val) { if ($val->equalStepIdTo($aRow->getStepUidObj())) { $stepTitle = $val->getStepTitle(); //default title $sNamespace = $val->getNamespace(); $oPlugin = $oPluginRegistry->getPlugin($sNamespace); $classFile = PATH_PLUGINS . $oPlugin->sNamespace . PATH_SEP . 'class.' . $oPlugin->sNamespace . '.php'; if (file_exists($classFile)) { require_once($classFile); $sClassName = $sNamespace . 'class'; $obj = new $sClassName(); if (method_exists($obj, 'getExternalStepAction')) { $aActions = $obj->getExternalStepAction($aRow->getStepUidObj(), $aRow->getStepPosition()); } } } } $sOptions = ""; $sOptions .= "
"; foreach ($aActions as $action => $label) { $styleAction = $_GET['UID'] == $aRow->getStepUidObj() && $_GET['POSITION'] == $aRow->getStepPosition() && $_GET['ACTION'] == $action ? 'background-color:orange;color:white;padding-left:5px;padding-right:5px; ' : ''; $sOptions .= " " . $label . ""; } $sOptions .= '
'; $oAux = $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child')); } $oAux->point = ''; } } $oNode = $oTree->addChild('-1', '[ ' . G::LoadTranslation('ID_ASSIGN_TASK') . ' ]', array('nodeType' => 'parent')); $oNode->plus = ''; $oNode->minus = ''; echo $oTree->render();