diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php
index 4b8fb2ecb..2a1b1e9ee 100644
--- a/workflow/engine/classes/class.processMap.php
+++ b/workflow/engine/classes/class.processMap.php
@@ -4004,7 +4004,6 @@ class processMap {
}
}
-}
// processMap
/****************************All Functions for New ProcessMap******************************************************/
/*
@@ -4255,4 +4254,662 @@ class processMap {
} catch ( Exception $oError ) {
throw ($oError);
}
- }
\ No newline at end of file
+ }
+
+ /*
+ * Users assigned to Tasks
+ * @param string $sProcessUID
+ * @param string $sTaskUID
+ * @return boolean
+ */
+ function usersExtList($sProcessUID = '', $sTaskUID = '')
+ {
+ try {
+ $oProcess = new Process ( );
+ $aFields = $oProcess->load ( $sProcessUID );
+ $oTask = new Task ( );
+ $aFields = $oTask->load ( $sTaskUID );
+
+ $_SESSION ['iType'] = 1;
+
+ $aFields ['TASK'] = $sTaskUID;
+ $aFields ['TYPE'] = $_SESSION ['iType'];
+ $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation ( 'ID_DE_ASSIGN' );
+ $aFields ['CONFIRM'] = G::LoadTranslation ( 'ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE' );
+ $aFields ['UIDS'] = "'0'";
+
+ $oTasks = new Tasks ( );
+ $oGroups = new Groups ( );
+ $aAux1 = $oTasks->getGroupsOfTask ( $sTaskUID, $_SESSION ['iType'] );
+ foreach ( $aAux1 as $aGroup ) {
+ $aAux2 = $oGroups->getUsersOfGroup ( $aGroup ['GRP_UID'] );
+ foreach ( $aAux2 as $aUser ) {
+ $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'";
+ }
+ }
+ global $G_PUBLISH;
+ $G_PUBLISH = new Publisher ( );
+ $oTask = new Task ( );
+ $aTask = $oTask->load ( $sTaskUID );
+
+ $this->getExtTaskUsersCriteria ( $sTaskUID, $_SESSION ['iType'] );
+ return $_SESSION ['_DBArray']['taskUsers'];
+
+ } catch ( Exception $oError ) {
+ throw ($oError);
+ }
+ }
+
+ function getExtTaskUsersCriteria($sTaskUID = '', $iType = 1)
+ {
+ try {
+ $aUsers = array ();
+ $aUsers [] = array ('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer' );
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addAsColumn ( 'GRP_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addSelectColumn ( TaskUserPeer::TAS_UID );
+ $oCriteria->addSelectColumn ( TaskUserPeer::USR_UID );
+ $oCriteria->addSelectColumn ( TaskUserPeer::TU_TYPE );
+ $oCriteria->addSelectColumn ( TaskUserPeer::TU_RELATION );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (TaskUserPeer::USR_UID, 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( TaskUserPeer::TAS_UID, $sTaskUID );
+ $oCriteria->add ( TaskUserPeer::TU_TYPE, $iType );
+ $oCriteria->add ( TaskUserPeer::TU_RELATION, 2 );
+ $oDataset = TaskUserPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ $c = 0;
+ while ( $aRow = $oDataset->getRow () ) {
+ $c ++;
+ $oGroup = new Groupwf ( );
+ $aFields = $oGroup->load ( $aRow ['USR_UID'] );
+ if ($aFields ['GRP_STATUS'] == 'ACTIVE') {
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( 'COUNT(*) AS MEMBERS_NUMBER' );
+ $oCriteria->add ( GroupUserPeer::GRP_UID, $aRow ['USR_UID'] );
+ $oDataset2 = GroupUserPeer::doSelectRS ( $oCriteria );
+ $oDataset2->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset2->next ();
+ $aRow2 = $oDataset2->getRow ();
+ } else {
+ $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation ( 'ID_GROUP_INACTIVE' ) . ')';
+ }
+ //$aUsers [] = array ('LABEL' => (! isset ( $aRow2 ['GROUP_INACTIVE'] ) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION'] );
+ $aUsers [] = array ('LABEL' => (! isset ( $aRow2 ['GROUP_INACTIVE'] ) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION'] );
+ $oDataset->next ();
+ }
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( UsersPeer::USR_FIRSTNAME );
+ $oCriteria->addSelectColumn ( UsersPeer::USR_LASTNAME );
+ $oCriteria->addSelectColumn ( TaskUserPeer::TAS_UID );
+ $oCriteria->addSelectColumn ( TaskUserPeer::USR_UID );
+ $oCriteria->addSelectColumn ( TaskUserPeer::TU_TYPE );
+ $oCriteria->addSelectColumn ( TaskUserPeer::TU_RELATION );
+ $oCriteria->addJoin ( TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN );
+ $oCriteria->add ( TaskUserPeer::TAS_UID, $sTaskUID );
+ $oCriteria->add ( TaskUserPeer::TU_TYPE, $iType );
+ $oCriteria->add ( TaskUserPeer::TU_RELATION, 1 );
+ $oDataset = TaskUserPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aUsers [] = array ('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION'] );
+ $oDataset->next ();
+ }
+ global $_DBArray;
+ $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
+ $_DBArray ['taskUsers'] = $aUsers;
+ $_SESSION ['_DBArray'] = $_DBArray;
+ G::LoadClass ( 'ArrayPeer' );
+ $oCriteria = new Criteria ( 'dbarray' );
+ $oCriteria->setDBArrayTable ( 'taskUsers' );
+ $oCriteria->addDescendingOrderByColumn ( TaskUserPeer::TU_RELATION );
+ $oCriteria->addAscendingOrderByColumn ( 'LABEL' );
+ return $oCriteria;
+ } catch ( Exception $oError ) {
+ throw ($oError);
+ }
+ }
+
+
+ function getAvailableExtUsersCriteria($sTaskUID = '', $iType = 1)
+ {
+ try {
+ $oTasks = new Tasks ( );
+ $aAux = $oTasks->getGroupsOfTask ( $sTaskUID, $iType );
+ $aUIDS1 = array ();
+ $aUIDS2 = array ();
+ foreach ( $aAux as $aGroup ) {
+ $aUIDS1 [] = $aGroup ['GRP_UID'];
+ }
+ $aAux = $oTasks->getUsersOfTask ( $sTaskUID, $iType );
+ foreach ( $aAux as $aUser ) {
+ $aUIDS2 [] = $aUser ['USR_UID'];
+ }
+ $aUsers = array ();
+ //$aUsers [] = array ('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer' );
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( GroupwfPeer::GRP_UID );
+ $oCriteria->addAsColumn ( 'GRP_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (GroupwfPeer::GRP_UID, 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( GroupwfPeer::GRP_STATUS, 'ACTIVE' );
+ $oCriteria->add ( GroupwfPeer::GRP_UID, $aUIDS1, Criteria::NOT_IN );
+ //$oCriteria->add(GroupwfPeer::GRP_UID, '', Criteria::NOT_EQUAL);
+ $oDataset = GroupwfPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ $c = 0;
+ while ( $aRow = $oDataset->getRow () ) {
+ $c ++;
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( 'COUNT(*) AS MEMBERS_NUMBER' );
+ $oCriteria->add ( GroupUserPeer::GRP_UID, $aRow ['GRP_UID'] );
+ $oDataset2 = GroupUserPeer::doSelectRS ( $oCriteria );
+ $oDataset2->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset2->next ();
+ $aRow2 = $oDataset2->getRow ();
+ //$aUsers [] = array ('LABEL' => $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2 );
+ $aUsers [] = array ('LABEL' => $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2 );
+ $oDataset->next ();
+ }
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( UsersPeer::USR_UID );
+ $oCriteria->addSelectColumn ( UsersPeer::USR_FIRSTNAME );
+ $oCriteria->addSelectColumn ( UsersPeer::USR_LASTNAME );
+ $oCriteria->add ( UsersPeer::USR_STATUS, 'ACTIVE' );
+ $oCriteria->add ( UsersPeer::USR_UID, $aUIDS2, Criteria::NOT_IN );
+ $oDataset = UsersPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aUsers [] = array ('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 1 );
+ $oDataset->next ();
+ }
+ global $_DBArray;
+ $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
+ $_DBArray ['availableUsers'] = $aUsers;
+ $_SESSION ['_DBArray'] = $_DBArray;
+
+ //return $oCriteria;
+ return $_SESSION ['_DBArray']['availableUsers'];
+ } catch ( Exception $oError ) {
+ throw ($oError);
+ }
+ }
+
+ /*
+ * Return the Additional PM tables list created by user
+ * @return object
+ */
+ function getExtAdditionalTablesList($sTab_UID='')
+ {
+ $oCriteria = new Criteria('workflow');
+ $oCriteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_UID);
+ $oCriteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_NAME);
+ $oCriteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_DESCRIPTION);
+ $oCriteria->add(AdditionalTablesPeer::ADD_TAB_UID, '', Criteria::NOT_EQUAL);
+
+ $oDataset = AdditionalTablesPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aAdditionalTables [] = array ('ADD_TAB_UID' => $aRow ['ADD_TAB_UID'], 'ADD_TAB_NAME' => $aRow ['ADD_TAB_NAME'], 'ADD_TAB_DESCRIPTION' => $aRow ['ADD_TAB_DESCRIPTION']);
+ $oDataset->next ();
+ }
+ /*
+ $oAdditionalTables = new AdditionalTables();
+ $aData = $oAdditionalTables->load($sTab_UID, true);
+ $addTabName = $aData['ADD_TAB_NAME'];
+ foreach ($aData['FIELDS'] as $iRow => $aRow) {
+ if ($aRow['FLD_KEY'] == 1) {
+ $aFields['FIELDS'][$iRow] = $aRow;
+ }
+ }*/
+
+ return $aAdditionalTables;
+ }
+
+ /*
+ * Return the available building blocks list criteria object
+ * @param string $sProcessUID
+ * @param string $sTaskUID
+ * @return object
+ */
+ function getExtAvailableBBCriteria($sProcessUID = '', $sTaskUID = '')
+ {
+ try {
+ $oTasks = new Tasks ( );
+ $aSteps = $oTasks->getStepsOfTask ( $sTaskUID );
+ $sUIDs = array ();
+ foreach ( $aSteps as $aStep ) {
+ $sUIDs [] = $aStep ['STEP_UID_OBJ'];
+ }
+ $aBB = array ();
+ $aBB [] = array ('STEP_UID' => 'char', 'STEP_TITLE' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' );
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( DynaformPeer::DYN_UID );
+ $oCriteria->addAsColumn ( 'DYN_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (DynaformPeer::DYN_UID, 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID );
+ $oCriteria->add ( DynaformPeer::DYN_UID, $sUIDs, Criteria::NOT_IN );
+ $oCriteria->add ( DynaformPeer::DYN_TYPE, 'xmlform' );
+ $oDataset = DynaformPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ $i = 0;
+ while ( $aRow = $oDataset->getRow () ) {
+ $i ++;
+ /*$aBB [] = array ('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => '' );*/
+ $aBB [] = array ('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => 'EDIT', 'STEP_UID_OBJ' => $aRow ['DYN_UID']);
+ $oDataset->next ();
+ }
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_UID );
+ $oCriteria->addAsColumn ( 'INP_DOC_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( InputDocumentPeer::PRO_UID, $sProcessUID );
+ $oCriteria->add ( InputDocumentPeer::INP_DOC_UID, $sUIDs, Criteria::NOT_IN );
+ $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aBB [] = array ('STEP_UID' => $aRow ['INP_DOC_UID'], 'STEP_TITLE' => $aRow ['INP_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'INPUT_DOCUMENT', 'STEP_MODE' => '' );
+ $oDataset->next ();
+ }
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID );
+ $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID );
+ $oCriteria->add ( OutputDocumentPeer::OUT_DOC_UID, $sUIDs, Criteria::NOT_IN );
+ $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aBB [] = array ('STEP_UID' => $aRow ['OUT_DOC_UID'], 'STEP_TITLE' => $aRow ['OUT_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'OUTPUT_DOCUMENT', 'STEP_MODE' => '' );
+ $oDataset->next ();
+ }
+
+ //call plugin
+ $oPluginRegistry = &PMPluginRegistry::getSingleton ();
+ $externalSteps = $oPluginRegistry->getSteps ();
+ if (is_array ( $externalSteps ) && count ( $externalSteps ) > 0) {
+ foreach ( $externalSteps as $key => $stepVar ) {
+ $aBB [] = array ('STEP_UID' => $stepVar->sStepId, 'STEP_TITLE' => $stepVar->sStepTitle, 'STEP_TYPE_OBJ' => 'EXTERNAL', 'STEP_MODE' => '' );
+ }
+ }
+
+ global $_DBArray;
+ $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
+ $_DBArray ['availableBB'] = $aBB;
+ $_SESSION ['_DBArray'] = $_DBArray;
+ G::LoadClass ( 'ArrayPeer' );
+ $oCriteria = new Criteria ( 'dbarray' );
+ $oCriteria->setDBArrayTable ( 'availableBB' );
+ $oCriteria->addAscendingOrderByColumn ( 'STEP_TYPE_OBJ' );
+ $oCriteria->addAscendingOrderByColumn ( 'STEP_TITLE' );
+ //return $oCriteria;
+ return $_SESSION ['_DBArray']['availableBB'];
+ } catch ( Exception $oError ) {
+ throw ($oError);
+ }
+ }
+
+ /*
+ * Return the steps list criteria object
+ * @param string $sTaskUID
+ * @return array
+ */
+ function getExtStepsCriteria($sTaskUID = '')
+ {
+ try {
+ //call plugin
+ $oPluginRegistry = &PMPluginRegistry::getSingleton ();
+ $externalSteps = $oPluginRegistry->getSteps ();
+
+ $aSteps = array ();
+ $aSteps [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' );
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->add ( StepPeer::TAS_UID, $sTaskUID );
+ $oCriteria->addAscendingOrderByColumn ( StepPeer::STEP_POSITION );
+ $oDataset = StepPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $urlEdit = '';
+ $linkEditValue = '';
+
+ switch ($aRow ['STEP_TYPE_OBJ']) {
+ case 'DYNAFORM' :
+ $oDynaform = new Dynaform ( );
+ $aFields = $oDynaform->load ( $aRow ['STEP_UID_OBJ'] );
+ $sTitle = $aFields ['DYN_TITLE'];
+ /** @@@init2 PROCCESS FOR DIRECT EDIT LINK @by erik@colosa.com ON DATE 02/06/2008 18:48:13*/
+ $DYN_UID = $aFields ['DYN_UID'];
+ $urlEdit = "dynaformEdit('" . $DYN_UID . "', '" . $aRow ['PRO_UID'] . "');";
+ $linkEditValue = 'Edit';
+ /** @@@end2*/
+ break;
+ case 'INPUT_DOCUMENT' :
+ $oInputDocument = new InputDocument ( );
+ $aFields = $oInputDocument->load ( $aRow ['STEP_UID_OBJ'] );
+ $sTitle = $aFields ['INP_DOC_TITLE'];
+ break;
+ case 'OUTPUT_DOCUMENT' :
+ $oOutputDocument = new OutputDocument ( );
+ $aFields = $oOutputDocument->load ( $aRow ['STEP_UID_OBJ'] );
+ $sTitle = $aFields ['OUT_DOC_TITLE'];
+ break;
+ case 'EXTERNAL' :
+ $sTitle = 'unknown ' . $aRow ['STEP_UID'];
+ foreach ( $externalSteps as $key => $val ) {
+ if ($val->sStepId == $aRow ['STEP_UID_OBJ']) {
+ $sTitle = $val->sStepTitle;
+ if (trim ( $val->sSetupStepPage ) != '') {
+ $urlEdit = "externalStepEdit('" . $aRow ['STEP_UID'] . "', '" . $val->sSetupStepPage . "');";
+ $linkEditValue = 'Edit';
+ } else {
+ $urlEdit = "";
+ $linkEditValue = '';
+ }
+ }
+ }
+ break;
+ }
+ $aSteps [] = array ('STEP_TITLE' => $sTitle, 'STEP_UID' => $aRow ['STEP_UID'], 'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'], 'STEP_CONDITION' => $aRow ['STEP_CONDITION'], 'STEP_POSITION' => $aRow ['STEP_POSITION'], 'urlEdit' => $urlEdit, 'linkEditValue' => $linkEditValue, 'PRO_UID' => $aRow ['PRO_UID'],'STEP_MODE' => $aRow['STEP_MODE'],'STEP_UID_OBJ' => $aRow['STEP_UID_OBJ'] );
+ $oDataset->next ();
+ }
+
+ global $_DBArray;
+ $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
+ $_DBArray ['steps'] = $aSteps;
+ $_SESSION ['_DBArray'] = $_DBArray;
+ G::LoadClass ( 'ArrayPeer' );
+ $oCriteria = new Criteria ( 'dbarray' );
+ $oCriteria->setDBArrayTable ( 'steps' );
+ $oCriteria->addAscendingOrderByColumn ( 'STEP_POSITION' );
+ //return $oCriteria;
+ return $_SESSION ['_DBArray']['steps'];
+ } catch ( Exception $oError ) {
+ throw ($oError);
+ }
+ }
+
+ /*
+ * Return the steps trigger criteria array
+ * @param string $sTaskUID
+ * @return array
+ */
+ function getExtStepTriggersCriteria($sStepUID = '', $sTaskUID = '', $sType = '')
+ {
+ $aBB = array ();
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( 'C.CON_VALUE' );
+ $oCriteria->addSelectColumn ( 'STEP_UID' );
+ $oCriteria->addSelectColumn ( 'TRI_UID' );
+ $oCriteria->addSelectColumn ( 'ST_TYPE' );
+ $oCriteria->addSelectColumn ( 'ST_CONDITION' );
+ $oCriteria->addSelectColumn ( StepTriggerPeer::ST_POSITION );
+ $oCriteria->addAsColumn ( 'TRI_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (StepTriggerPeer::TRI_UID, 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( StepTriggerPeer::STEP_UID, $sStepUID );
+ $oCriteria->add ( StepTriggerPeer::TAS_UID, $sTaskUID );
+ $oCriteria->add ( StepTriggerPeer::ST_TYPE, $sType );
+ $oCriteria->addAscendingOrderByColumn ( StepTriggerPeer::ST_POSITION );
+ $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aBB [] = array ('CON_VALUE' => $aRow ['CON_VALUE'],'STEP_UID' => $aRow ['STEP_UID'], 'ST_TYPE' => $aRow ['ST_TYPE'],'ST_POSITION' => $aRow ['ST_POSITION'],'ST_CONDITION' => $aRow ['ST_CONDITION'], 'TRI_UID' => $aRow ['TRI_UID'],'TRI_TITLE' => $aRow ['TRI_TITLE'] );
+ $oDataset->next ();
+ }
+ return $aBB;
+ }
+
+ /*
+ * Return the available step triggers list object
+ * @param string $sStepUID
+ * @param string $sTaskUID
+ * @param string $sType
+ * @return object
+ */
+ function getExtAvailableStepTriggersCriteria($sProcessUID = '',$sStepUID = '', $sTaskUID = '', $sType = '')
+ {
+ try
+ {
+ $oCriteria = new Criteria('workflow');
+ $oCriteria->addSelectColumn('TRI_UID');
+ $oCriteria->add(StepTriggerPeer::TAS_UID , $sTaskUID);
+ $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID);
+ $oCriteria->add(StepTriggerPeer::ST_TYPE , $sType);
+ $oDataset = StepTriggerPeer::doSelectRS($oCriteria);
+ $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $oDataset->next();
+ $sUIDs = "'0'";
+ $aUIDs = array();
+ while ($aRow = $oDataset->getRow()) {
+ $sUIDs .= ",'" . $aRow['TRI_UID'] . "'";
+ $aUIDs[] = $aRow['TRI_UID'];
+ $oDataset->next();
+ }
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria('workflow');
+ //$oCriteria->addSelectColumn ( ContentPeer::CON_ID );
+ $oCriteria->addSelectColumn('TRI_UID');
+ $oCriteria->addSelectColumn('C.CON_VALUE');
+ $oCriteria->addAsColumn ( 'TRI_TITLE', 'C.CON_VALUE' );
+ $oCriteria->addAlias ( 'C', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array ('TRI_UID', 'C.CON_ID' );
+ $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add(TriggersPeer::TRI_UID, $aUIDs, Criteria::NOT_IN);
+ $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID);
+ $oDataset = TriggersPeer::doSelectRS($oCriteria);
+ $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $oDataset->next();
+ while ( $aRow = $oDataset->getRow () ) {
+ $aBB [] = array ('CON_VALUE' => $aRow ['CON_VALUE'],'STEP_UID' => $sStepUID, 'ST_TYPE' => $sType,'TRI_UID' => $aRow ['TRI_UID'],'TRI_TITLE' => $aRow ['TRI_TITLE'] );
+ $oDataset->next ();
+ }
+ return $aBB;
+ }
+ catch ( Exception $e ) {
+ throw ($e);
+ }
+ }
+
+ /*
+ * Return the dynaforms list array
+ * @param string $sProcessUID
+ * @return object
+ */
+ function getExtDynaformsList($sProcessUID = '')
+ {
+ $sDelimiter = DBAdapter::getStringDelimiter ();
+ $oCriteria = new Criteria ( 'workflow' );
+ $oCriteria->addSelectColumn ( DynaformPeer::DYN_UID );
+ $oCriteria->addSelectColumn ( DynaformPeer::PRO_UID );
+ $oCriteria->addSelectColumn ( DynaformPeer::DYN_TYPE );
+ $oCriteria->addAsColumn ( 'DYN_TITLE', 'C1.CON_VALUE' );
+ $oCriteria->addAsColumn ( 'DYN_DESCRIPTION', 'C2.CON_VALUE' );
+ $oCriteria->addAlias ( 'C1', 'CONTENT' );
+ $oCriteria->addAlias ( 'C2', 'CONTENT' );
+ $aConditions = array ();
+ $aConditions [] = array (DynaformPeer::DYN_UID, 'C1.CON_ID' );
+ $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter );
+ $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $aConditions = array ();
+ $aConditions [] = array (DynaformPeer::DYN_UID, 'C2.CON_ID' );
+ $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter );
+ $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
+ $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $oCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID );
+
+ $oDataset = DynaformPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ $dynaformArray = array ();
+ $dynaformArray [] = array ('d' => 'char' );
+ while ( $aRow = $oDataset->getRow () ) {
+ if (($aRow ['DYN_TITLE'] == NULL)||($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label
+
+ $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE","",$aRow ['DYN_UID'],SYS_LANG);
+
+ }
+ if (($aRow ['DYN_DESCRIPTION'] == NULL)||($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label
+
+ $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION","",$aRow ['DYN_UID'],SYS_LANG);
+
+ }
+ $dynaformArray [] = $aRow;
+ $oDataset->next ();
+ }
+
+ return $dynaformArray;
+ }
+
+ /**
+ * subProcess_Properties New Processmap
+ *
+ * @param string $sProcessUID
+ * @param string $sTaskUID
+ * @param string $sIndex
+ * @param string $sType (0=>'Asynchronous' , 1=>'Synchronous')
+ * @return void
+ * @throw Exception $oError
+ */
+ function subProcessExtProperties($sProcessUID = '', $sTaskUID = '', $sIndex = '',$sType = '')
+ {
+ try { //echo "$sProcessUID = '', $sTaskUID = '', $sIndex = ''";
+ $SP_VARIABLES_OUT = array ();
+ $SP_VARIABLES_IN = array ();
+
+ /* Prepare page before to show */
+ global $_DBArray;
+ $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
+ $_DBArray ['NewCase'] = $this->subProcess_TaskIni ( $sProcessUID );
+ unset ( $_DBArray ['TheProcesses'] );
+ $_DBArray ['TheProcesses'] [] = array ('pro_uid' => 'char', 'value' => 'char' );
+ $i = 0;
+ foreach ( $_DBArray ['NewCase'] as $aRow ) {
+ if ($i > 0) {
+ $_DBArray ['TheProcesses'] [] = array ('pro_uid' => $aRow ['pro_uid'] . '_' . $i, 'value' => $aRow ['value'] );
+ }
+ $i ++;
+ }
+ //print'
';print_r($_DBArray['NewCase']);print'
';
+ $oCriteria = new Criteria ( 'workflow' );
+ $del = DBAdapter::getStringDelimiter ();
+ $oCriteria->add ( SubProcessPeer::PRO_PARENT, $sProcessUID );
+ $oCriteria->add ( SubProcessPeer::PRO_PARENT, $sProcessUID );
+ $oCriteria->add ( SubProcessPeer::TAS_PARENT, $sTaskUID );
+
+ $oCriteria->addAsColumn ( 'CON_VALUE', 'C1.CON_VALUE', 'CON_TITLE' );
+ $oCriteria->addAlias ( "C1", 'CONTENT' );
+ $tasTitleConds = array ();
+ $tasTitleConds [] = array (SubProcessPeer::TAS_PARENT, 'C1.CON_ID' );
+ $tasTitleConds [] = array ('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del );
+ $tasTitleConds [] = array ('C1.CON_LANG', $del . SYS_LANG . $del );
+ $oCriteria->addJoinMC ( $tasTitleConds, Criteria::LEFT_JOIN );
+
+ $oDataset = SubProcessPeer::doSelectRS ( $oCriteria );
+ $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next ();
+ $aRow = $oDataset->getRow ();
+ /*while($aRow = $oDataset->getRow ()) {
+
+ $aSubProcess [] = array ('CON_VALUE' => $aRow ['CON_VALUE'], 'TAS_UID' => $sTaskUID, 'TASKS' => $sTaskUID,'TAS_TITLE' => $aRow ['CON_VALUE'],
+ 'SPROCESS_NAME' => $aRow ['CON_VALUE']
+ );
+ $oDataset->next ();
+ }*/
+
+ $aRow ['TASKS'] = $aRow ['TAS_UID'];
+ //print "
".$aRow['TASKS']."
";
+ //$aRow['SPROCESS_NAME'] = $aRow['TAS_TITLE'];
+ $aRow ['TAS_TITLE'] = $aRow ['CON_VALUE'];
+ $aRow ['SPROCESS_NAME'] = $aRow ['CON_VALUE'];
+
+ if($sType == 0)
+ {
+ $SP_VARIABLES_OUT = unserialize ( $aRow ['SP_VARIABLES_OUT'] );
+ if (is_array ( $SP_VARIABLES_OUT )) {
+ $i = 0;
+ $aRow1 = array();
+ foreach ( $SP_VARIABLES_OUT as $indice => $valor ) {
+ $aRow1 [$i] = $aRow;
+ $aRow1 [$i]['VAR_OUT1'] = $indice;
+ $aRow1 [$i]['VAR_OUT2'] = $valor;
+ //$aRow1 [$i]['PROCESSES'] = $_DBArray ['TheProcesses'];
+ $i ++;
+ }
+ }
+ }
+
+ if($sType == 1)
+ {
+ $SP_VARIABLES_IN = unserialize ( $aRow ['SP_VARIABLES_IN'] );
+ if (is_array ( $SP_VARIABLES_IN )) {
+ $j = 0;
+ foreach ( $SP_VARIABLES_IN as $indice => $valor ) {
+ $aRow1 [$j] = $aRow;
+ $aRow1 [$j] ['VAR_IN1'] = $indice;
+ $aRow1 [$j] ['VAR_IN2'] = $valor;
+ //$aRow1 [$i]['PROCESSES'] = $_DBArray ['TheProcesses'];
+ $j ++;
+ }
+ }
+ }
+ $aRow ['INDEX'] = $sIndex;
+ //print '
';print_r($aRow);
+ return $aRow1;
+ //return $aSubProcess;
+
+ } catch ( Exception $oError ) {
+ throw ($oError);
+ }
+ }
+
+}
+