.
*
* 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 = '
';
$oAux = $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child'));
break;
case 'OUTPUT_DOCUMENT':
$sOptions = '';
$oAux = $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child'));
break;
case 'INPUT_DOCUMENT':
$sOptions = '';
$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 .= '';
}
$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();