diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index ce50d9733..ae6a77777 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -80,186 +80,187 @@ class processMap { * @return string */ - function load($sProcessUID, $bView = false, $sApplicationUID = '', $iDelegation = 0, $sTask = '', $bCT = false) { - try { - $oProcess = new Process ( ); + public function load($sProcessUID, $bView = false, $sApplicationUID = '', $iDelegation = 0, $sTask = '', $bCT = false) + { + try { + $oProcess = new Process ( ); - $aRow = $oProcess->load($sProcessUID); - $oPM->title->label = strip_tags($aRow ['PRO_TITLE']); - $oPM->title->position->x = $aRow ['PRO_TITLE_X']; - $oPM->title->position->y = $aRow ['PRO_TITLE_Y']; - $oPM->task = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TaskPeer::PRO_UID); - $oCriteria->addSelectColumn(TaskPeer::TAS_UID); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); - $oCriteria->addSelectColumn(TaskPeer::TAS_START); - $oCriteria->addSelectColumn(TaskPeer::TAS_POSX); - $oCriteria->addSelectColumn(TaskPeer::TAS_POSY); - $oCriteria->addSelectColumn(TaskPeer::TAS_COLOR); - $oCriteria->addSelectColumn(TaskPeer::TAS_TYPE); - $aConditions = array(); - $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); - $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow1 = $oDataset->getRow()) { - $oTask = null; - $oTask->uid = $aRow1 ['TAS_UID']; - $oTask->task_type = $aRow1 ['TAS_TYPE']; - if ($aRow1 ['TAS_TYPE'] == 'NORMAL') { - if (($aRow1 ['CON_VALUE'] == "")) { //There is no Label in Current SYS_LANG language so try to find in English - by default - $oTask1 = new Task ( ); - $aFields1 = $oTask1->load($oTask->uid); - $aRow1 ['CON_VALUE'] = $oTask1->getTasTitle(); - } - $oTask->label = strip_tags($aRow1 ['CON_VALUE']); - } else { - $oCriteria = new Criteria('workflow'); - $del = DBAdapter::getStringDelimiter (); - $oCriteria->add(SubProcessPeer::PRO_PARENT, $aRow1 ['PRO_UID']); - $oCriteria->add(SubProcessPeer::TAS_PARENT, $aRow1 ['TAS_UID']); - - $oCriteria->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); - $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); - - $oDatasetX = SubProcessPeer::doSelectRS($oCriteria); - $oDatasetX->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDatasetX->next(); - $aRowx = $oDatasetX->getRow(); - if ($oProcess->exists($aRowx ['PRO_UID'])) { - //$aRowy = $oProcess->load($aRowx['PRO_UID']); - //$oTask->label = $aRowy['PRO_TITLE']; - $oTask->label = $aRowx ['TAS_TITLE']; - } else { - $oTask->label = strip_tags($aRow1 ['CON_VALUE']); - } - } - $oTask->taskINI = (strtolower($aRow1 ['TAS_START']) == 'true' ? true : false); - $oTask->position->x = (int) $aRow1 ['TAS_POSX']; - $oTask->position->y = (int) $aRow1 ['TAS_POSY']; - $oTask->derivation = null; - $oTask->derivation->to = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $aRow1 ['TAS_UID']); - $oDataset2 = RoutePeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - while ($aRow2 = $oDataset2->getRow()) { - switch ($aRow2 ['ROU_TYPE']) { - case 'SEQUENTIAL' : - $aRow2 ['ROU_TYPE'] = 0; - break; - case 'SELECT' : - $aRow2 ['ROU_TYPE'] = 1; - break; - case 'EVALUATE' : - $aRow2 ['ROU_TYPE'] = 2; - break; - case 'PARALLEL' : - $aRow2 ['ROU_TYPE'] = 3; - break; - case 'PARALLEL-BY-EVALUATION' : - $aRow2 ['ROU_TYPE'] = 4; - break; - case 'SEC-JOIN' : - $aRow2 ['ROU_TYPE'] = 5; - break; - case 'DISCRIMINATOR' : - $aRow2 ['ROU_TYPE'] = 8; - break; - } - $oTo = null; - $oTo->task = $aRow2 ['ROU_NEXT_TASK']; - $oTo->condition = $aRow2 ['ROU_CONDITION']; - $oTo->executant = $aRow2 ['ROU_TO_LAST_USER']; - $oTo->optional = $aRow2 ['ROU_OPTIONAL']; - $oTask->derivation->type = $aRow2 ['ROU_TYPE']; - $oTask->derivation->to [] = $oTo; - $oDataset2->next(); - } - if ($bCT) { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS CANT'); - $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('DEL_FINISH_DATE'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow3 = $oDataset2->getRow(); - if ($aRow3) { - $aRow2 ['FINISH'] = ''; - } - if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { - $oTask->color = '#FF0000'; - } else { - if ($aRow2 ['CANT'] != 0) { - if ($aRow2 ['FINISH'] == null) { - //$oTask->color = '#FF9900'; - $oTask->color = '#FF0000'; - } else { - $oTask->color = '#006633'; - } - } - else { - $oTask->color = "#939598"; - } - } - } else { - if ($bView && ($sApplicationUID != '') && ($iDelegation > 0) && ($sTask != '')) { + $aRow = $oProcess->load($sProcessUID); + $oPM->title->label = strip_tags($aRow ['PRO_TITLE']); + $oPM->title->position->x = $aRow ['PRO_TITLE_X']; + $oPM->title->position->y = $aRow ['PRO_TITLE_Y']; + $oPM->task = array(); $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS CANT'); - $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('DEL_FINISH_DATE'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow3 = $oDataset2->getRow(); - if ($aRow3) { - $aRow2 ['FINISH'] = ''; - } - if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { - $oTask->color = '#FF0000'; - } else { - if ($aRow2 ['CANT'] != 0) { - if ($aRow2 ['FINISH'] == null) { - $oTask->color = '#FF9900'; + $oCriteria->addSelectColumn(TaskPeer::PRO_UID); + $oCriteria->addSelectColumn(TaskPeer::TAS_UID); + $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); + $oCriteria->addSelectColumn(TaskPeer::TAS_START); + $oCriteria->addSelectColumn(TaskPeer::TAS_POSX); + $oCriteria->addSelectColumn(TaskPeer::TAS_POSY); + $oCriteria->addSelectColumn(TaskPeer::TAS_COLOR); + $oCriteria->addSelectColumn(TaskPeer::TAS_TYPE); + $aConditions = array(); + $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); + $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow1 = $oDataset->getRow()) { + $oTask = null; + $oTask->uid = $aRow1 ['TAS_UID']; + $oTask->task_type = $aRow1 ['TAS_TYPE']; + if ($aRow1 ['TAS_TYPE'] == 'NORMAL') { + if (($aRow1 ['CON_VALUE'] == "")) { //There is no Label in Current SYS_LANG language so try to find in English - by default + $oTask1 = new Task ( ); + $aFields1 = $oTask1->load($oTask->uid); + $aRow1 ['CON_VALUE'] = $oTask1->getTasTitle(); + } + $oTask->label = strip_tags($aRow1 ['CON_VALUE']); } else { - $oTask->color = '#006633'; + $oCriteria = new Criteria('workflow'); + $del = DBAdapter::getStringDelimiter (); + $oCriteria->add(SubProcessPeer::PRO_PARENT, $aRow1 ['PRO_UID']); + $oCriteria->add(SubProcessPeer::TAS_PARENT, $aRow1 ['TAS_UID']); + + $oCriteria->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); + $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); + + $oDatasetX = SubProcessPeer::doSelectRS($oCriteria); + $oDatasetX->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDatasetX->next(); + $aRowx = $oDatasetX->getRow(); + if ($oProcess->exists($aRowx ['PRO_UID'])) { + //$aRowy = $oProcess->load($aRowx['PRO_UID']); + //$oTask->label = $aRowy['PRO_TITLE']; + $oTask->label = $aRowx ['TAS_TITLE']; + } else { + $oTask->label = strip_tags($aRow1 ['CON_VALUE']); + } + } + $oTask->taskINI = (strtolower($aRow1 ['TAS_START']) == 'true' ? true : false); + $oTask->position->x = (int) $aRow1 ['TAS_POSX']; + $oTask->position->y = (int) $aRow1 ['TAS_POSY']; + $oTask->derivation = null; + $oTask->derivation->to = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $aRow1 ['TAS_UID']); + $oDataset2 = RoutePeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + while ($aRow2 = $oDataset2->getRow()) { + switch ($aRow2 ['ROU_TYPE']) { + case 'SEQUENTIAL' : + $aRow2 ['ROU_TYPE'] = 0; + break; + case 'SELECT' : + $aRow2 ['ROU_TYPE'] = 1; + break; + case 'EVALUATE' : + $aRow2 ['ROU_TYPE'] = 2; + break; + case 'PARALLEL' : + $aRow2 ['ROU_TYPE'] = 3; + break; + case 'PARALLEL-BY-EVALUATION' : + $aRow2 ['ROU_TYPE'] = 4; + break; + case 'SEC-JOIN' : + $aRow2 ['ROU_TYPE'] = 5; + break; + case 'DISCRIMINATOR' : + $aRow2 ['ROU_TYPE'] = 8; + break; + } + $oTo = null; + $oTo->task = $aRow2 ['ROU_NEXT_TASK']; + $oTo->condition = $aRow2 ['ROU_CONDITION']; + $oTo->executant = $aRow2 ['ROU_TO_LAST_USER']; + $oTo->optional = $aRow2 ['ROU_OPTIONAL']; + $oTask->derivation->type = $aRow2 ['ROU_TYPE']; + $oTask->derivation->to [] = $oTo; + $oDataset2->next(); + } + if ($bCT) { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS CANT'); + $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('DEL_FINISH_DATE'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow3 = $oDataset2->getRow(); + if ($aRow3) { + $aRow2 ['FINISH'] = ''; + } + if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { + $oTask->color = '#FF0000'; + } else { + if ($aRow2 ['CANT'] != 0) { + if ($aRow2 ['FINISH'] == null) { + //$oTask->color = '#FF9900'; + $oTask->color = '#FF0000'; + } else { + $oTask->color = '#006633'; + } + } + else { + $oTask->color = "#939598"; + } + } + } else { + if ($bView && ($sApplicationUID != '') && ($iDelegation > 0) && ($sTask != '')) { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS CANT'); + $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('DEL_FINISH_DATE'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow3 = $oDataset2->getRow(); + if ($aRow3) { + $aRow2 ['FINISH'] = ''; + } + if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { + $oTask->color = '#FF0000'; + } else { + if ($aRow2 ['CANT'] != 0) { + if ($aRow2 ['FINISH'] == null) { + $oTask->color = '#FF9900'; + } else { + $oTask->color = '#006633'; + } + } else { + $oTask->color = '#939598'; } - } else { - $oTask->color = '#939598'; - } } } } @@ -363,12 +364,12 @@ class processMap { //Load extended task properties from plugin. By JHL Jan 18, 2011 $oPluginRegistry =& PMPluginRegistry::getSingleton(); - $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); + $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); $oPM->taskOptions = array(); foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){ - $taskOption['title']=$taskPropertiesInfo->sName; - $taskOption['id']=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; - $oPM->taskOptions[]=$taskOption; + $taskOption['title']=$taskPropertiesInfo->sName; + $taskOption['id']=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; + $oPM->taskOptions[]=$taskOption; } $oJSON = new Services_JSON(); @@ -378,79 +379,79 @@ class processMap { } } - /* - * Create a Process - * @param array $aData - * @return boolean - */ - - function createProcess($aData) { - try { - $oProcess = new Process ( ); - return $oProcess->create($aData); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Update a Process - * @param array $aData - * @return boolean - */ - - function updateProcess($aData) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($aData ['PRO_UID']); - return $oProcess->update($aData); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Edit the Process Map information - * @param string $sProcessUID - * @return boolean - */ - - function editProcess($sProcessUID) { - try { - $oProcess = new Process (); - - if (!is_null($oProcess)) { - G::loadClass('processes'); - $calendar = new Calendar(); - $files = Processes::getProcessFiles($sProcessUID, 'mail'); - - $templates = array(); - $templates[] = 'dummy'; - - foreach ($files as $file) { - $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + /* + * Create a Process + * @param array $aData + * @return boolean + */ + public function createProcess($aData) + { + try { + $oProcess = new Process ( ); + return $oProcess->create($aData); + } catch (Exception $oError) { + throw ($oError); } + } - $calendarObj = $calendar->getCalendarList(true, true); + /* + * Update a Process + * @param array $aData + * @return boolean + */ + public function updateProcess($aData) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($aData ['PRO_UID']); + return $oProcess->update($aData); + } catch (Exception $oError) { + throw ($oError); + } + } - global $_DBArray; - $_DBArray['_TEMPLATES1'] = $templates; - $_DBArray['availableCalendars'] = $calendarObj['array']; - $_SESSION ['_DBArray'] = $_DBArray; + /* + * Edit the Process Map information + * @param string $sProcessUID + * @return boolean + */ + public function editProcess($sProcessUID) + { + try { + $oProcess = new Process (); - $aFields = $oProcess->load($sProcessUID); - $aFields['PRO_SUMMARY_DYNAFORM'] = (isset($aFields['PRO_DYNAFORMS']['PROCESS']) ? $aFields['PRO_DYNAFORMS']['PROCESS'] : ''); - $aFields['THETYPE'] = 'UPDATE'; - $calendarInfo = $calendar->getCalendarFor($sProcessUID, $sProcessUID, $sProcessUID); + if (!is_null($oProcess)) { + G::loadClass('processes'); + $calendar = new Calendar(); + $files = Processes::getProcessFiles($sProcessUID, 'mail'); - //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar - $aFields['PRO_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; - $aFields['SYS_LANG'] = SYS_LANG; + $templates = array(); + $templates[] = 'dummy'; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_Edit', '', $aFields, 'processes_Save'); - G::RenderPage('publish', 'raw'); + foreach ($files as $file) { + $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + } + + $calendarObj = $calendar->getCalendarList(true, true); + + global $_DBArray; + $_DBArray['_TEMPLATES1'] = $templates; + $_DBArray['availableCalendars'] = $calendarObj['array']; + $_SESSION ['_DBArray'] = $_DBArray; + + $aFields = $oProcess->load($sProcessUID); + $aFields['PRO_SUMMARY_DYNAFORM'] = (isset($aFields['PRO_DYNAFORMS']['PROCESS']) ? $aFields['PRO_DYNAFORMS']['PROCESS'] : ''); + $aFields['THETYPE'] = 'UPDATE'; + $calendarInfo = $calendar->getCalendarFor($sProcessUID, $sProcessUID, $sProcessUID); + + //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar + $aFields['PRO_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; + $aFields['SYS_LANG'] = SYS_LANG; + + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_Edit', '', $aFields, 'processes_Save'); + G::RenderPage('publish', 'raw'); return true; } @@ -458,281 +459,280 @@ class processMap { throw (new Exception('This row doesn\'t exist!')); } } - catch (Exception $oError) { + catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a Process + * @param string $sProcessUID + * @return boolean + */ + public function deleteProcess($sProcessUID) + { + try { + G::LoadClass('case'); + G::LoadClass('reportTables'); + //Instance all classes necesaries + $oProcess = new Process ( ); + $oDynaform = new Dynaform ( ); + $oInputDocument = new InputDocument ( ); + $oOutputDocument = new OutputDocument ( ); + $oTrigger = new Triggers ( ); + $oRoute = new Route ( ); + $oGateway = new Gateway ( ); + $oEvent = new Event ( ); + $oSwimlaneElement = new SwimlanesElements ( ); + $oConfiguration = new Configuration ( ); + $oDbSource = new DbSource ( ); + $oReportTable = new ReportTables ( ); + $oCaseTracker = new CaseTracker ( ); + $oCaseTrackerObject = new CaseTrackerObject ( ); + //Delete the applications of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); + $oDataset = ApplicationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $oCase = new Cases ( ); + while ($aRow = $oDataset->getRow()) { + $oCase->removeCase($aRow ['APP_UID']); + $oDataset->next(); + } + //Delete the tasks of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $this->deleteTask($aRow ['TAS_UID']); + $oDataset->next(); + } + //Delete the dynaforms of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oDynaform->remove($aRow ['DYN_UID']); + $oDataset->next(); + } + //Delete the input documents of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oInputDocument->remove($aRow ['INP_DOC_UID']); + $oDataset->next(); + } + //Delete the output documents of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oOutputDocument->remove($aRow ['OUT_DOC_UID']); + $oDataset->next(); + } + + //Delete the triggers of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oTrigger->remove($aRow ['TRI_UID']); + $oDataset->next(); + } + + //Delete the routes of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oRoute->remove($aRow ['ROU_UID']); + $oDataset->next(); + } + + //Delete the gateways of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(GatewayPeer::PRO_UID, $sProcessUID); + $oDataset = GatewayPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oGateway->remove($aRow ['GAT_UID']); + $oDataset->next(); + } + + //Delete the Event of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(EventPeer::PRO_UID, $sProcessUID); + $oDataset = EventPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oEvent->remove($aRow ['EVN_UID']); + $oDataset->next(); + } + + //Delete the swimlanes elements of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); + $oDataset = SwimlanesElementsPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oSwimlaneElement->remove($aRow ['SWI_UID']); + $oDataset->next(); + } + //Delete the configurations of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ConfigurationPeer::PRO_UID, $sProcessUID); + $oDataset = ConfigurationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oConfiguration->remove($aRow ['CFG_UID'], $aRow ['OBJ_UID'], $aRow ['PRO_UID'], $aRow ['USR_UID'], $aRow ['APP_UID']); + $oDataset->next(); + } + //Delete the DB sources of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); + $oDataset = DbSourcePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + /** + * note added by gustavo cruz gustavo-at-colosa-dot-com 27-01-2010 + * in order to solve the bug 0004389, we use the validation function Exists + * inside the remove function in order to verify if the DbSource record + * exists in the Database, however there is a strange behavior within the + * propel engine, when the first record is erased somehow the "_deleted" + * attribute of the next row is set to true, so when propel tries to erase + * it, obviously it can't and trows an error. With the "Exist" function + * we ensure that if there is the record in the database, the _delete attribute must be false. + * + * note added by gustavo cruz gustavo-at-colosa-dot-com 28-01-2010 + * I have just identified the source of the issue, when is created a $oDbSource DbSource object + * it's used whenever a record is erased or removed in the db, however the problem + * it's that the same object is used every time, and the delete method invoked + * sets the _deleted attribute to true when its called, of course as we use + * the same object, the first time works fine but trowns an error with the + * next record, cos it's the same object and the delete method checks if the _deleted + * attribute it's true or false, the attrib _deleted is setted to true the + * first time and later is never changed, the issue seems to be part of + * every remove function in the model classes, not only DbSource + * i recommend that a more general solution must be achieved to resolve + * this issue in every model class, to prevent future problems. + * */ + $oDbSource->remove($aRow ['DBS_UID'], $sProcessUID); + $oDataset->next(); + } + //Delete the supervisors + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + ProcessUserPeer::doDelete($oCriteria); + //Delete the object permissions + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); + ObjectPermissionPeer::doDelete($oCriteria); + //Delete the step supervisors + $oCriteria = new Criteria('workflow'); + $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); + StepSupervisorPeer::doDelete($oCriteria); + //Delete the report tables + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); + $oDataset = ReportTablePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oReportTable->deleteReportTable($aRow ['REP_TAB_UID']); + $oDataset->next(); + } + //Delete case tracker configuration + $oCaseTracker->remove($sProcessUID); + //Delete case tracker objects + $oCriteria = new Criteria('workflow'); + $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); + ProcessUserPeer::doDelete($oCriteria); + //Delete the process + try { + $oProcess->remove($sProcessUID); + } catch (Exception $oError) { //nada + } + return true; + } catch (Exception $oError) { throw ($oError); } } - /* - * Delete a Process - * @param string $sProcessUID - * @return boolean - */ - - function deleteProcess($sProcessUID) { - try { - G::LoadClass('case'); - G::LoadClass('reportTables'); - //Instance all classes necesaries - $oProcess = new Process ( ); - $oDynaform = new Dynaform ( ); - $oInputDocument = new InputDocument ( ); - $oOutputDocument = new OutputDocument ( ); - $oTrigger = new Triggers ( ); - $oRoute = new Route ( ); - $oGateway = new Gateway ( ); - $oEvent = new Event ( ); - $oSwimlaneElement = new SwimlanesElements ( ); - $oConfiguration = new Configuration ( ); - $oDbSource = new DbSource ( ); - $oReportTable = new ReportTables ( ); - $oCaseTracker = new CaseTracker ( ); - $oCaseTrackerObject = new CaseTrackerObject ( ); - //Delete the applications of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); - $oDataset = ApplicationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $oCase = new Cases ( ); - while ($aRow = $oDataset->getRow()) { - $oCase->removeCase($aRow ['APP_UID']); - $oDataset->next(); - } - //Delete the tasks of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $this->deleteTask($aRow ['TAS_UID']); - $oDataset->next(); - } - //Delete the dynaforms of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oDynaform->remove($aRow ['DYN_UID']); - $oDataset->next(); - } - //Delete the input documents of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oInputDocument->remove($aRow ['INP_DOC_UID']); - $oDataset->next(); - } - //Delete the output documents of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oOutputDocument->remove($aRow ['OUT_DOC_UID']); - $oDataset->next(); - } - - //Delete the triggers of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oTrigger->remove($aRow ['TRI_UID']); - $oDataset->next(); - } - - //Delete the routes of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oRoute->remove($aRow ['ROU_UID']); - $oDataset->next(); - } - - //Delete the gateways of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(GatewayPeer::PRO_UID, $sProcessUID); - $oDataset = GatewayPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oGateway->remove($aRow ['GAT_UID']); - $oDataset->next(); - } - - //Delete the Event of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(EventPeer::PRO_UID, $sProcessUID); - $oDataset = EventPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oEvent->remove($aRow ['EVN_UID']); - $oDataset->next(); - } - - //Delete the swimlanes elements of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); - $oDataset = SwimlanesElementsPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oSwimlaneElement->remove($aRow ['SWI_UID']); - $oDataset->next(); - } - //Delete the configurations of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ConfigurationPeer::PRO_UID, $sProcessUID); - $oDataset = ConfigurationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oConfiguration->remove($aRow ['CFG_UID'], $aRow ['OBJ_UID'], $aRow ['PRO_UID'], $aRow ['USR_UID'], $aRow ['APP_UID']); - $oDataset->next(); - } - //Delete the DB sources of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); - $oDataset = DbSourcePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - - /** - * note added by gustavo cruz gustavo-at-colosa-dot-com 27-01-2010 - * in order to solve the bug 0004389, we use the validation function Exists - * inside the remove function in order to verify if the DbSource record - * exists in the Database, however there is a strange behavior within the - * propel engine, when the first record is erased somehow the "_deleted" - * attribute of the next row is set to true, so when propel tries to erase - * it, obviously it can't and trows an error. With the "Exist" function - * we ensure that if there is the record in the database, the _delete attribute must be false. - * - * note added by gustavo cruz gustavo-at-colosa-dot-com 28-01-2010 - * I have just identified the source of the issue, when is created a $oDbSource DbSource object - * it's used whenever a record is erased or removed in the db, however the problem - * it's that the same object is used every time, and the delete method invoked - * sets the _deleted attribute to true when its called, of course as we use - * the same object, the first time works fine but trowns an error with the - * next record, cos it's the same object and the delete method checks if the _deleted - * attribute it's true or false, the attrib _deleted is setted to true the - * first time and later is never changed, the issue seems to be part of - * every remove function in the model classes, not only DbSource - * i recommend that a more general solution must be achieved to resolve - * this issue in every model class, to prevent future problems. - * */ - $oDbSource->remove($aRow ['DBS_UID'], $sProcessUID); - $oDataset->next(); - } - //Delete the supervisors - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - ProcessUserPeer::doDelete($oCriteria); - //Delete the object permissions - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); - ObjectPermissionPeer::doDelete($oCriteria); - //Delete the step supervisors - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); - StepSupervisorPeer::doDelete($oCriteria); - //Delete the report tables - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - $oDataset = ReportTablePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oReportTable->deleteReportTable($aRow ['REP_TAB_UID']); - $oDataset->next(); - } - //Delete case tracker configuration - $oCaseTracker->remove($sProcessUID); - //Delete case tracker objects - $oCriteria = new Criteria('workflow'); - $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); - ProcessUserPeer::doDelete($oCriteria); - //Delete the process - try { - $oProcess->remove($sProcessUID); - } catch (Exception $oError) { //nada - } - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Save the process title position + * @param string sProcessUID + * @param integer $iX + * @param integer $iY + * @return boolean + */ + public function saveTitlePosition($sProcessUID = '', $iX = 0, $iY = 0) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['PRO_TITLE_X'] = $iX; + $aFields ['PRO_TITLE_Y'] = $iY; + $oProcess->update($aFields); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Save the process title position - * @param string sProcessUID - * @param integer $iX - * @param integer $iY - * @return boolean - */ - - function saveTitlePosition($sProcessUID = '', $iX = 0, $iY = 0) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['PRO_TITLE_X'] = $iX; - $aFields ['PRO_TITLE_Y'] = $iY; - $oProcess->update($aFields); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Steps of Tasks + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function steps($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields = array(); + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DELETE_STEP'); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/steps_List', $this->getStepsCriteria($sTaskUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Steps of Tasks - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function steps($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields = array(); - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DELETE_STEP'); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/steps_List', $this->getStepsCriteria($sTaskUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the steps list criteria object - * @param string $sTaskUID - * @return array - */ - - function getStepsCriteria($sTaskUID = '') { + /* + * Return the steps list criteria object + * @param string $sTaskUID + * @return array + */ + public function getStepsCriteria($sTaskUID = '') + { try { //call plugin $oPluginRegistry = &PMPluginRegistry::getSingleton (); @@ -764,7 +764,7 @@ class processMap { case 'INPUT_DOCUMENT' : $oInputDocument = new InputDocument ( ); $aFields = $oInputDocument->getByUid($aRow ['STEP_UID_OBJ']); - if( $aFields === false ) + if ( $aFields === false ) continue; $sTitle = $aFields ['INP_DOC_TITLE']; break; @@ -772,7 +772,7 @@ class processMap { $oOutputDocument = new OutputDocument ( ); $aFields = $oOutputDocument->getByUid($aRow ['STEP_UID_OBJ']); - if( $aFields === false ) + if ( $aFields === false ) continue; $sTitle = $aFields ['OUT_DOC_TITLE']; break; @@ -810,1562 +810,1437 @@ class processMap { } } - /* - * Return the step triggers list criteria object - * @param string $sStepUID - * @param string $sTaskUID - * @param string $sType - * @return object - */ - - function getStepTriggersCriteria($sStepUID = '', $sTaskUID = '', $sType = '') { - $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(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); - return $oCriteria; - } - - /* - * Return the available building blocks list criteria object - * @param string $sProcessUID - * @param string $sTaskUID - * @return object - */ - - function getAvailableBBCriteria($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'); - $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++; - 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); - } - $aBB [] = array('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => ''); - $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()) { - - if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['INP_DOC_TITLE'] = Content::Load("INP_DOC_TITLE", "", $aRow ['INP_DOC_UID'], SYS_LANG); - } - $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()) { - - if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['OUT_DOC_TITLE'] = Content::Load("OUT_DOC_TITLE", "", $aRow ['OUT_DOC_UID'], SYS_LANG); - } - $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; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Users assigned to Tasks - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function users($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); - - if ($aFields ['TAS_TYPE'] == 'TRUE') { - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); - } else { - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList2', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); - } - - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Users Adhoc assigned to Tasks - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function users_adhoc($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['iType'] = 2; - - $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); - - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortListAdhoc', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); - - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the tasks users list criteria object - * @param string $sTaskUID - * @param integer $iType - * @return array - */ - - function getTaskUsersCriteria($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']); - $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); - } - } - - /* - * Return the available users and users groups list criteria object - * @param string $sTaskUID - * @param integer $iType - * @return object - */ - - function getAvailableUsersCriteria($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 (); - $groups = new Groupwf(); - $start = ''; - $limit = ''; - $filter = ''; - $result = $groups->getAllGroup($start,$limit,$filter); - $c = 0; - foreach ($result['rows'] as $results) { - $c++; + /* + * Return the step triggers list criteria object + * @param string $sStepUID + * @param string $sTaskUID + * @param string $sType + * @return object + */ + public function getStepTriggersCriteria($sStepUID = '', $sTaskUID = '', $sType = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(GroupUserPeer::GRP_UID, $results ['GRP_UID']); - $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $aUsers [] = array ('LABEL' => $results ['GRP_TITLE'] .' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $results ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); - } - $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; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('availableUsers'); - $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addAscendingOrderByColumn('LABEL'); - return $oCriteria; - } catch (Exception $oError) { - throw ($oError); + $oCriteria->addSelectColumn('C.CON_VALUE'); + $oCriteria->addSelectColumn('STEP_UID'); + $oCriteria->addSelectColumn('TRI_UID'); + $oCriteria->addSelectColumn('ST_TYPE'); + $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); + return $oCriteria; } - } - /* - * Conditions of the steps - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function stepsConditions($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/conditions_List', $this->getStepsCriteria($sTaskUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Triggers of the steps - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function stepsTriggers($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['PROCESS'] = $sProcessUID; - $_SESSION ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('view', 'steps/triggers_Tree'); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Add a new task - * @param string $sProcessUID - * @param integer $iX - * @param integer $iY - * @return string - */ - - function addTask($sProcessUID = '', $iX = 0, $iY = 0, $iWidth = 165, $iHeight = 40) { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('TAS_UID'); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $aTasks = array(); - $iTaskNumber = 0; - - while ($oDataset->next()) { - $aRow = $oDataset->getRow(); - - $aTasks[] = $aRow ["TAS_UID"]; - $iTaskNumber = $iTaskNumber + 1; - } - - if ($iTaskNumber > 0) { - $criteria = new Criteria("workflow"); - - $criteria->addSelectColumn(ContentPeer::CON_LANG); - $criteria->addSelectColumn(ContentPeer::CON_VALUE); - $criteria->add(ContentPeer::CON_ID, $aTasks, Criteria::IN); - $criteria->add(ContentPeer::CON_CATEGORY, "TAS_TITLE"); - - $rsSQLCON = ContentPeer::doSelectRS($criteria); - $rsSQLCON->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $numMaxLang = 0; - $numMax = 0; - - while ($rsSQLCON->next()) { - $row = $rsSQLCON->getRow(); - - $conLang = $row["CON_LANG"]; - $conValue = $row["CON_VALUE"]; - - if (preg_match("/^\S+\s(\d+)$/", $conValue, $matches)) { - $n = intval($matches[1]); - - if ($conLang == SYS_LANG) { - if ($n > $numMaxLang) { - $numMaxLang = $n; - } + /* + * Return the available building blocks list criteria object + * @param string $sProcessUID + * @param string $sTaskUID + * @return object + */ + public function getAvailableBBCriteria($sProcessUID = '', $sTaskUID = '') + { + try { + $oTasks = new Tasks ( ); + $aSteps = $oTasks->getStepsOfTask($sTaskUID); + $sUIDs = array(); + foreach ($aSteps as $aStep) { + $sUIDs [] = $aStep ['STEP_UID_OBJ']; } - else { - if ($n > $numMax) { - $numMax = $n; - } + $aBB = array(); + $aBB [] = array('STEP_UID' => 'char', 'STEP_TITLE' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_MODE' => '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++; + 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); + } + $aBB [] = array('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => ''); + $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()) { + if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['INP_DOC_TITLE'] = Content::Load("INP_DOC_TITLE", "", $aRow ['INP_DOC_UID'], SYS_LANG); + } + $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()) { + if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['OUT_DOC_TITLE'] = Content::Load("OUT_DOC_TITLE", "", $aRow ['OUT_DOC_UID'], SYS_LANG); + } + $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; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Users assigned to Tasks + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function users($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); - if ($numMaxLang > 0) { - $numMax = $numMaxLang; + if ($aFields ['TAS_TYPE'] == 'TRUE') { + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); + } else { + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList2', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); } - if ($numMax > 0 && $numMax > $iTaskNumber) { - $iTaskNumber = $numMax + 1; - } - else { - $iTaskNumber = $iTaskNumber + 1; - } + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); } - else { - $iTaskNumber = 1; - } - - $oTask = new Task(); - $oNewTask->label = G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber; - $oNewTask->uid = $oTask->create(array('PRO_UID' => $sProcessUID, 'TAS_TITLE' => $oNewTask->label, 'TAS_POSX' => $iX, 'TAS_POSY' => $iY, 'TAS_WIDTH' => $iWidth, 'TAS_HEIGHT' => $iHeight)); - $oNewTask->statusIcons = array(); - $oNewTask->statusIcons[] = array('label' => '', 'icon' => '/images/alert.gif', 'message' => '', 'url' => ''); - $oJSON = new Services_JSON(); - - return $oJSON->encode($oNewTask); } - catch (Exception $oError) { - throw ($oError); - } - } - /* - * Edit the task properties - * @param string $sTaskUID - * @return boolean - */ + /* + * Users Adhoc assigned to Tasks + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function users_adhoc($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); - function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0) { - $sw_template=false; - try { - switch ($iForm) { - case 1 : - $sFilename = 'tasks/tasks_Definition.xml'; - break; - case 2 : - $sFilename = 'tasks/tasks_AssignmentRules.xml'; - break; - case 3 : - $sFilename = 'tasks/tasks_TimingControl.xml'; - break; - case 4 : - $sFilename = 'tasks/tasks_Owner.xml'; - break; - case 5 : - $sFilename = 'tasks/tasks_Permissions.xml'; - break; - case 6 : - $sFilename = 'tasks/tasks_Labels.xml'; - break; - case 7 : - $sFilename = 'tasks/tasks_Notifications.xml'; - break; - default: - //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011 - $oPluginRegistry =& PMPluginRegistry::getSingleton(); - $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); - $oPM->taskOptions = array(); - foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){ - $id=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; - if($id==$iForm){ - $sFilename=$taskPropertiesInfo->sPage; - $sw_template=true; - } - } + $_SESSION ['iType'] = 2; - //$sFilename = 'tasks/tasks_Owner.xml'; - break; - } - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields ['INDEX'] = $iIndex; - $aFields ['IFORM'] = $iForm; - $aFields ['LANG'] = SYS_LANG; + $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'"; - /** Task Notifications **/ - if($iForm == 7 || $iForm == 1 ) { - G::loadClass('processes'); - $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail'); - - $templates = array(); - $templates[] = 'dummy'; - - foreach ($files as $file) { - $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); - } - - global $_DBArray; - $_DBArray['_TEMPLATES1'] = $templates; - $_SESSION['_DBArray'] = $_DBArray; - - if ($iForm == 7) { - // Additional configuration - G::loadClass('configuration'); - $oConf = new Configurations; - $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', ''); - $conf = $oConf->aConfig; - if( isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) { - $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE']; - $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE']; - } - } - } - - if ($iForm == 3) { //Load Calendar Information - $calendar = new Calendar ( ); - $calendarObj = $calendar->getCalendarList(true, true); - - global $_DBArray; - - $_DBArray ['availableCalendars'] = $calendarObj ['array']; - - $_SESSION ['_DBArray'] = $_DBArray; - - $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID); - - //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar - $aFields ['TAS_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; - } - global $G_PUBLISH; - G::LoadClass('xmlfield_InputPM'); - $G_PUBLISH = new Publisher ( ); - if($sw_template){ - $G_PUBLISH->AddContent('view', $sFilename); - }else{ - $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields); - } - - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the tasks positions - * @param string $sTaskUID - * @param integer $iX - * @param integer $iY - * @return integer - */ - - function saveTaskPosition($sTaskUID = '', $iX = 0, $iY = 0) { - try { - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $aFields ['TAS_UID'] = $sTaskUID; - $aFields ['TAS_POSX'] = $iX; - $aFields ['TAS_POSY'] = $iY; - return $oTask->update($aFields); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a task - * @param string $sTaskUID - * @return boolean - */ - - function deleteTask($sTaskUID = '') { - try { - $oTasks = new Tasks ( ); - $oTasks->deleteTask($sTaskUID); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a gateway - * @param string $sProcessUID - * @param string $sGatewayUID - * @return boolean - */ - - function deleteGateway($sProcessUID = '', $sGatewayUID = '') { - try { - //First get all routes information related to $sGatewayUID - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('ROU_UID'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::GAT_UID, $sGatewayUID); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while($aRow = $oDataset->getRow()){ - $aRoutes [] = $aRow ['ROU_UID']; - $oDataset->next(); - } - - $oGateway = new Gateway ( ); - if($oGateway->gatewayExists($sGatewayUID)) - { $oTasks = new Tasks ( ); - $res = $oGateway->remove($sGatewayUID); - if($res){ - $oRoute = new Route( ); - foreach($aRoutes as $sRouteId){ - $oRoute->remove($sRouteId); - } + $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'] . "'"; + } } - } - return; - } catch (Exception $oError) { - throw ($oError); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $oTask = new Task ( ); + $aTask = $oTask->load($sTaskUID); + + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortListAdhoc', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); + + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Add a gateway - * @param string $sProcessUID - * @param string $sGatewayUID - * @return boolean - */ + /* + * Return the tasks users list criteria object + * @param string $sTaskUID + * @param integer $iType + * @return array + */ + public function getTaskUsersCriteria($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']); + $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 addGateway($oData) { - try { - $oGateway = new Gateway ( ); - $aData = array(); - $aData['PRO_UID'] = $oData->pro_uid; - $aData['GAT_X'] = $oData->position->x; - $aData['GAT_Y'] = $oData->position->y; - $aData['GAT_TYPE'] = $oData->gat_type; - $sGat_uid = $oData->gat_uid; - $oGatewayData = GatewayPeer::retrieveByPK($sGat_uid); - if (is_null($oGatewayData)) { - $sGat_uid = $oGateway->create($aData); - }else{ - $aData['GAT_UID'] = $sGat_uid; - if (isset($oData->tas_from)) - $aData['TAS_UID'] = $oData->tas_from; - if (isset($oData->tas_to)) - $aData['GAT_NEXT_TASK'] = $oData->tas_to; - $oGateway->update($aData); - } - $oEncode->uid = $sGat_uid; + /* + * Return the available users and users groups list criteria object + * @param string $sTaskUID + * @param integer $iType + * @return object + */ + public function getAvailableUsersCriteria($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 (); + $groups = new Groupwf(); + $start = ''; + $limit = ''; + $filter = ''; + $result = $groups->getAllGroup($start,$limit,$filter); + $c = 0; + foreach ($result['rows'] as $results) { + $c++; + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); + $oCriteria->add(GroupUserPeer::GRP_UID, $results ['GRP_UID']); + $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $aUsers [] = array ('LABEL' => $results ['GRP_TITLE'] .' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $results ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); + } + $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; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('availableUsers'); + $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAscendingOrderByColumn('LABEL'); + return $oCriteria; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Conditions of the steps + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + + public function stepsConditions($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/conditions_List', $this->getStepsCriteria($sTaskUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Triggers of the steps + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function stepsTriggers($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $_SESSION ['PROCESS'] = $sProcessUID; + $_SESSION ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('view', 'steps/triggers_Tree'); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a new task + * @param string $sProcessUID + * @param integer $iX + * @param integer $iY + * @return string + */ + public function addTask($sProcessUID = '', $iX = 0, $iY = 0, $iWidth = 165, $iHeight = 40) + { + try { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('TAS_UID'); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aTasks = array(); + $iTaskNumber = 0; + + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + $aTasks[] = $aRow ["TAS_UID"]; + $iTaskNumber = $iTaskNumber + 1; + } + + if ($iTaskNumber > 0) { + $criteria = new Criteria("workflow"); + $criteria->addSelectColumn(ContentPeer::CON_LANG); + $criteria->addSelectColumn(ContentPeer::CON_VALUE); + $criteria->add(ContentPeer::CON_ID, $aTasks, Criteria::IN); + $criteria->add(ContentPeer::CON_CATEGORY, "TAS_TITLE"); + + $rsSQLCON = ContentPeer::doSelectRS($criteria); + $rsSQLCON->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $numMaxLang = 0; + $numMax = 0; + + while ($rsSQLCON->next()) { + $row = $rsSQLCON->getRow(); + + $conLang = $row["CON_LANG"]; + $conValue = $row["CON_VALUE"]; + + if (preg_match("/^\S+\s(\d+)$/", $conValue, $matches)) { + $n = intval($matches[1]); + + if ($conLang == SYS_LANG) { + if ($n > $numMaxLang) { + $numMaxLang = $n; + } + } else { + if ($n > $numMax) { + $numMax = $n; + } + } + } + } + + if ($numMaxLang > 0) { + $numMax = $numMaxLang; + } + + if ($numMax > 0 && $numMax > $iTaskNumber) { + $iTaskNumber = $numMax + 1; + } else { + $iTaskNumber = $iTaskNumber + 1; + } + } else { + $iTaskNumber = 1; + } + + $oTask = new Task(); + $oNewTask->label = G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber; + $oNewTask->uid = $oTask->create(array('PRO_UID' => $sProcessUID, 'TAS_TITLE' => $oNewTask->label, 'TAS_POSX' => $iX, 'TAS_POSY' => $iY, 'TAS_WIDTH' => $iWidth, 'TAS_HEIGHT' => $iHeight)); + $oNewTask->statusIcons = array(); + $oNewTask->statusIcons[] = array('label' => '', 'icon' => '/images/alert.gif', 'message' => '', 'url' => ''); + $oJSON = new Services_JSON(); + + return $oJSON->encode($oNewTask); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Edit the task properties + * @param string $sTaskUID + * @return boolean + */ + public function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0) + { + $sw_template=false; + try { + switch ($iForm) { + case 1 : + $sFilename = 'tasks/tasks_Definition.xml'; + break; + case 2 : + $sFilename = 'tasks/tasks_AssignmentRules.xml'; + break; + case 3 : + $sFilename = 'tasks/tasks_TimingControl.xml'; + break; + case 4 : + $sFilename = 'tasks/tasks_Owner.xml'; + break; + case 5 : + $sFilename = 'tasks/tasks_Permissions.xml'; + break; + case 6 : + $sFilename = 'tasks/tasks_Labels.xml'; + break; + case 7 : + $sFilename = 'tasks/tasks_Notifications.xml'; + break; + default: + //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011 + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); + $oPM->taskOptions = array(); + foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){ + $id=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; + if ($id==$iForm){ + $sFilename=$taskPropertiesInfo->sPage; + $sw_template=true; + } + } + + //$sFilename = 'tasks/tasks_Owner.xml'; + break; + } + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields ['INDEX'] = $iIndex; + $aFields ['IFORM'] = $iForm; + $aFields ['LANG'] = SYS_LANG; + + /** Task Notifications **/ + if ($iForm == 7 || $iForm == 1 ) { + G::loadClass('processes'); + $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail'); + + $templates = array(); + $templates[] = 'dummy'; + + foreach ($files as $file) { + $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + } + + global $_DBArray; + $_DBArray['_TEMPLATES1'] = $templates; + $_SESSION['_DBArray'] = $_DBArray; + + if ($iForm == 7) { + // Additional configuration + G::loadClass('configuration'); + $oConf = new Configurations; + $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', ''); + $conf = $oConf->aConfig; + if ( isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) { + $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE']; + $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE']; + } + } + } + + if ($iForm == 3) { //Load Calendar Information + $calendar = new Calendar ( ); + $calendarObj = $calendar->getCalendarList(true, true); + + global $_DBArray; + + $_DBArray ['availableCalendars'] = $calendarObj ['array']; + + $_SESSION ['_DBArray'] = $_DBArray; + + $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID); + + //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar + $aFields ['TAS_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; + } + global $G_PUBLISH; + G::LoadClass('xmlfield_InputPM'); + $G_PUBLISH = new Publisher ( ); + if ($sw_template){ + $G_PUBLISH->AddContent('view', $sFilename); + } else { + $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields); + } + + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Save the tasks positions + * @param string $sTaskUID + * @param integer $iX + * @param integer $iY + * @return integer + */ + public function saveTaskPosition($sTaskUID = '', $iX = 0, $iY = 0) + { + try { + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $aFields ['TAS_UID'] = $sTaskUID; + $aFields ['TAS_POSX'] = $iX; + $aFields ['TAS_POSY'] = $iY; + return $oTask->update($aFields); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a task + * @param string $sTaskUID + * @return boolean + */ + public function deleteTask($sTaskUID = '') + { + try { + $oTasks = new Tasks ( ); + $oTasks->deleteTask($sTaskUID); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a gateway + * @param string $sProcessUID + * @param string $sGatewayUID + * @return boolean + */ + public function deleteGateway($sProcessUID = '', $sGatewayUID = '') + { + try { + //First get all routes information related to $sGatewayUID + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('ROU_UID'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::GAT_UID, $sGatewayUID); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while($aRow = $oDataset->getRow()){ + $aRoutes [] = $aRow ['ROU_UID']; + $oDataset->next(); + } + + $oGateway = new Gateway ( ); + if ($oGateway->gatewayExists($sGatewayUID)) + { + $oTasks = new Tasks ( ); + $res = $oGateway->remove($sGatewayUID); + if ($res){ + $oRoute = new Route( ); + foreach($aRoutes as $sRouteId){ + $oRoute->remove($sRouteId); + } + } + } + return; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a gateway + * @param string $sProcessUID + * @param string $sGatewayUID + * @return boolean + */ + public function addGateway($oData) + { + try { + $oGateway = new Gateway ( ); + $aData = array(); + $aData['PRO_UID'] = $oData->pro_uid; + $aData['GAT_X'] = $oData->position->x; + $aData['GAT_Y'] = $oData->position->y; + $aData['GAT_TYPE'] = $oData->gat_type; + $sGat_uid = $oData->gat_uid; + $oGatewayData = GatewayPeer::retrieveByPK($sGat_uid); + if (is_null($oGatewayData)) { + $sGat_uid = $oGateway->create($aData); + } else { + $aData['GAT_UID'] = $sGat_uid; + if (isset($oData->tas_from)) { + $aData['TAS_UID'] = $oData->tas_from; + } + if (isset($oData->tas_to)) { + $aData['GAT_NEXT_TASK'] = $oData->tas_to; + } + $oGateway->update($aData); + } + $oEncode->uid = $sGat_uid; + $oJSON = new Services_JSON ( ); + return $oJSON->encode($oEncode); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a new guide + * @param string $sProcessUID + * @param integer $iPosition + * @param string $sDirection + * @return string + */ + public function addGuide($sProcessUID = '', $iPosition = 0, $sDirection = 'vertical') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oSL = new SwimlanesElements ( ); + switch ($sDirection) { + case 'vertical' : + $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => $iPosition, 'SWI_Y' => 0)); + break; + case 'horizontal' : + $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => 0, 'SWI_Y' => $iPosition)); + break; + } + $oJSON = new Services_JSON ( ); + return $oJSON->encode($oNewGuide); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Save the guide position + * @param string $sSEUID + * @param integer $iPosition + * @param string $sDirection + * @return integer + */ + public function saveGuidePosition($sSEUID = '', $iPosition = 0, $sDirection = 'vertical') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + switch ($sDirection) { + case 'vertical' : + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iPosition)); + break; + case 'horizontal' : + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_Y' => $iPosition)); + break; + } + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a guide + * @param string $sUID + * @return boolean + */ + public function deleteGuide($sSEUID = '') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + $oSL->remove($sSEUID); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete all guides + * @param string $sProcessUID + * @return boolean + */ + public function deleteGuides($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); + $oCriteria->add(SwimlanesElementsPeer::SWI_TYPE, 'LINE'); + SwimlanesElementsPeer::doDelete($oCriteria); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a new text + * @param string $sProcessUID + * @param string $sLabel + * @param integer $iX + * @param integer $iY + * @return string + */ + public function addText($sProcessUID = '', $sLabel = '', $iX = 0, $iY = 0 , $sNext_uid = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oSL = new SwimlanesElements ( ); + $oNewText->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'TEXT', 'SWI_TEXT' => $sLabel, 'SWI_X' => $iX, 'SWI_Y' => $iY,'SWI_NEXT_UID' => $sNext_uid)); $oJSON = new Services_JSON ( ); - return $oJSON->encode($oEncode); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Add a new guide - * @param string $sProcessUID - * @param integer $iPosition - * @param string $sDirection - * @return string - */ - - function addGuide($sProcessUID = '', $iPosition = 0, $sDirection = 'vertical') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oSL = new SwimlanesElements ( ); - switch ($sDirection) { - case 'vertical' : - $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => $iPosition, 'SWI_Y' => 0)); - break; - case 'horizontal' : - $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => 0, 'SWI_Y' => $iPosition)); - break; - } - $oJSON = new Services_JSON ( ); - return $oJSON->encode($oNewGuide); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the guide position - * @param string $sSEUID - * @param integer $iPosition - * @param string $sDirection - * @return integer - */ - - function saveGuidePosition($sSEUID = '', $iPosition = 0, $sDirection = 'vertical') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - switch ($sDirection) { - case 'vertical' : - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iPosition)); - break; - case 'horizontal' : - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_Y' => $iPosition)); - break; - } - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a guide - * @param string $sUID - * @return boolean - */ - - function deleteGuide($sSEUID = '') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - $oSL->remove($sSEUID); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete all guides - * @param string $sProcessUID - * @return boolean - */ - - function deleteGuides($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); - $oCriteria->add(SwimlanesElementsPeer::SWI_TYPE, 'LINE'); - SwimlanesElementsPeer::doDelete($oCriteria); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Add a new text - * @param string $sProcessUID - * @param string $sLabel - * @param integer $iX - * @param integer $iY - * @return string - */ - - function addText($sProcessUID = '', $sLabel = '', $iX = 0, $iY = 0 , $sNext_uid = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oSL = new SwimlanesElements ( ); - $oNewText->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'TEXT', 'SWI_TEXT' => $sLabel, 'SWI_X' => $iX, 'SWI_Y' => $iY,'SWI_NEXT_UID' => $sNext_uid)); - $oJSON = new Services_JSON ( ); - return $oJSON->encode($oNewText); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Update a text - * @param string $sSEUID - * @param string $sLabel - * @return integer - */ - - function updateText($sSEUID = '', $sLabel = '' , $sNext_uid = '') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_TEXT' => $sLabel,'SWI_NEXT_UID' => $sNext_uid)); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the text position - * @param string $sSEUID - * @param integer $iX - * @param integer $iY - * @return integer - */ - - function saveTextPosition($sSEUID = '', $iX = 0, $iY = 0) { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iX, 'SWI_Y' => $iY)); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a text - * @param string $sSEUID - * @return boolean - */ - - function deleteText($sSEUID = '') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - $oSL->remove($sSEUID); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the gateways positions - * @param string $sGatewayUID - * @param integer $iX - * @param integer $iY - * @return integer - */ - - function saveGatewayPosition($sGatewayUID = '', $iX = 0, $iY = 0) { - try { - $oGateway = new Gateway ( ); - $aFields = $oGateway->load($sGatewayUID); - - $aFields ['GAT_UID'] = $sGatewayUID; - $aFields ['GAT_X'] = $iX; - $aFields ['GAT_Y'] = $iY; - return $oGateway->update($aFields); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Presents a small list of dynaforms of the process - * @param string $sProcessUID - * @return boolean - */ - - function dynaformsList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_ShortList', $this->getDynaformsCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getDynaformsCriteria($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 $oJSON->encode($oNewText); + } catch (Exception $oError) { + throw ($oError); + } } - - return $oCriteria; + /* + * Update a text + * @param string $sSEUID + * @param string $sLabel + * @return integer + */ + public function updateText($sSEUID = '', $sLabel = '' , $sNext_uid = '') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_TEXT' => $sLabel,'SWI_NEXT_UID' => $sNext_uid)); + } catch (Exception $oError) { + throw ($oError); + } } - /** - * getDynaformsList - * - * @param string $sProcessUID - * @return array $dynaformArray - */ - function getDynaformsList($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(); - 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(); + /* + * Save the text position + * @param string $sSEUID + * @param integer $iX + * @param integer $iY + * @return integer + */ + public function saveTextPosition($sSEUID = '', $iX = 0, $iY = 0) + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iX, 'SWI_Y' => $iY)); + } catch (Exception $oError) { + throw ($oError); + } } - return $dynaformArray; - } - - /* - * Presents a small list of output documents of the process - * @param string $sProcessUID - * @return boolean - */ - - function outputdocsList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'outputdocs/outputdocs_ShortList', $this->getOutputDocumentsCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the output documents list criteria object - * @param string $sProcessUID - * @return object - */ - - function getOutputDocumentsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); - $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_TYPE); - $oCriteria->addSelectColumn(OutputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('OUT_DOC_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); - - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $outputDocArray = array(); - $outputDocArray [] = array('d' => 'char'); - while ($aRow = $oDataset->getRow()) { - if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $outputDocument = new OutputDocument ( ); - $outputDocumentObj = $outputDocument->load($aRow ['OUT_DOC_UID']); - $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; - $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; - } - $outputDocArray [] = $aRow; - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['outputDocArray'] = $outputDocArray; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('outputDocArray'); - - return $oCriteria; - } - - /* - * Presents a small list of input documents of the process - * @param string $sProcessUID Process UID - * @return void - */ - - function inputdocsList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_ShortList', $this->getInputDocumentsCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the input documents list criteria object - * @param string $sProcessUID - * @return object - */ - - function getInputDocumentsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('INP_DOC_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $inputDocArray = ""; - $inputDocArray [] = array('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char'); - while ($aRow = $oDataset->getRow()) { - if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $inputDocument = new InputDocument ( ); - $inputDocumentObj = $inputDocument->load($aRow ['INP_DOC_UID']); - $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; - $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; - } - $inputDocArray [] = $aRow; - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - - $_DBArray ['inputDocArrayMain'] = $inputDocArray; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('inputDocArrayMain'); - - return $oCriteria; - } - - /* - * Presents a small list of triggers of the process - * @param string $sProcessUID - * @return void - */ - - function triggersList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'triggers/triggers_ShortList', $this->getTriggersCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the triggers list criteria object - * @param string $sProcessUID - * @return object - */ - - function getTriggersCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); - $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); - $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); - - - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $triggersArray = ""; - $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); - while ($aRow = $oDataset->getRow()) { - - if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label - $triggerO = new Triggers ( ); - $triggerObj = $triggerO->load($aRow ['TRI_UID']); - $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; - $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; - } - $triggersArray [] = $aRow; - $oDataset->next(); + /* + * Delete a text + * @param string $sSEUID + * @return boolean + */ + public function deleteText($sSEUID = '') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + $oSL->remove($sSEUID); + return true; + } catch (Exception $oError) { + throw ($oError); + } } + /* + * Save the gateways positions + * @param string $sGatewayUID + * @param integer $iX + * @param integer $iY + * @return integer + */ + public function saveGatewayPosition($sGatewayUID = '', $iX = 0, $iY = 0) + { + try { + $oGateway = new Gateway ( ); + $aFields = $oGateway->load($sGatewayUID); - return $oCriteria; - } + $aFields ['GAT_UID'] = $sGatewayUID; + $aFields ['GAT_X'] = $iX; + $aFields ['GAT_Y'] = $iY; + return $oGateway->update($aFields); + } catch (Exception $oError) { + throw ($oError); + } + } - /* - * Return the triggers list in a array - * @param string $sProcessUID - * @return array - */ + /* + * Presents a small list of dynaforms of the process + * @param string $sProcessUID + * @return boolean + */ + public function dynaformsList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_ShortList', $this->getDynaformsCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } - function getTriggers($sProcessUID = '') { - $aTriggers = Array(); - $oCriteria = $this->getTriggersCriteria($sProcessUID); + /* + * Return the dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getDynaformsCriteria($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 = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $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 $oCriteria; + } - while ($oDataset->next()) - array_push($aTriggers, $oDataset->getRow()); + /** + * getDynaformsList + * + * @param string $sProcessUID + * @return array $dynaformArray + */ + public function getDynaformsList($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); - return $aTriggers; - } + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $dynaformArray = array(); + 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; + } - /* - * Presents a small list of Scheduled Tasks of the process - * @param string $sProcessUID - * @return void - */ + /* + * Presents a small list of output documents of the process + * @param string $sProcessUID + * @return boolean + */ + public function outputdocsList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'outputdocs/outputdocs_ShortList', $this->getOutputDocumentsCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } - function caseSchedulerList($sProcessUID = '') { - try { - /* $oCaseScheduler = new CaseScheduler(); - $aRows = $oCaseScheduler->getAll(); - - //$oCaseScheduler->caseSchedulerCron(); - // g::pr($aRows); die; - - $fieldNames = Array( - 'SCH_UID' => 'char', - 'SCH_NAME' => 'char', - 'PRO_UID' => 'char', - 'TAS_UID' => 'char', - 'SCH_TIME_NEXT_RUN' => 'char', - 'SCH_LAST_RUN_TIME' => 'char', - 'SCH_STATE' => 'char', - 'SCH_LAST_STATE' => 'char', - 'USR_UID' => 'char', - 'SCH_OPTION' => 'char', - 'SCH_START_TIME' => 'char', - 'SCH_START_DATE' => 'char', - 'SCH_DAYS_PERFORM_TASK' => 'char', - 'SCH_EVERY_DAYS' => 'char', - 'SCH_WEEK_DAYS' => 'char', - 'SCH_START_DAY' => 'char', - 'SCH_MONTHS' => 'char', - 'SCH_END_DATE' => 'char', - 'SCH_REPEAT_EVERY' => 'char', - 'SCH_REPEAT_UNTIL' => 'char', - 'SCH_REPEAT_STOP_IF_RUNNING' => 'char', - 'PRO_PARENT' => 'char', - 'PRO_TIME' => 'char', - 'PRO_TIMEUNIT' => 'char', - 'PRO_STATUS' => 'char', - 'PRO_TYPE_DAY' => 'char', - 'PRO_TYPE' => 'char', - 'PRO_ASSIGNMENT' => 'char', - 'PRO_SHOW_MAP' => 'char', - 'PRO_SHOW_MESSAGE' => 'char', - 'PRO_SHOW_DELEGATE' => 'char', - 'PRO_SHOW_DYNAFORM' => 'char', - 'PRO_CATEGORY' => 'char', - 'PRO_SUB_CATEGORY' => 'char', - 'PRO_INDUSTRY' => 'char', - 'PRO_UPDATE_DATE' => 'char', - 'PRO_CREATE_DATE' => 'char', - 'PRO_CREATE_USER' => 'char', - 'PRO_HEIGHT' => 'char', - 'PRO_WIDTH' => 'char', - 'PRO_TITLE_X' => 'char', - 'PRO_TITLE_Y' => 'char', - 'PRO_DEBUG' => 'char', - 'PRO_TITLE' => 'char', - 'PRO_DESCRIPTION' => 'char', - 'TAS_TYPE' => 'char', - 'TAS_DURATION' => 'char', - 'TAS_DELAY_TYPE' => 'char', - 'TAS_TEMPORIZER' => 'char', - 'TAS_TYPE_DAY' => 'char', - 'TAS_TIMEUNIT' => 'char', - 'TAS_ALERT' => 'char', - 'TAS_PRIORITY_VARIABLE' => 'char', - 'TAS_ASSIGN_TYPE' => 'char', - 'TAS_ASSIGN_VARIABLE' => 'char', - 'TAS_ASSIGN_LOCATION' => 'char', - 'TAS_ASSIGN_LOCATION_ADHOC' => 'char', - 'TAS_TRANSFER_FLY' => 'char', - 'TAS_LAST_ASSIGNED' => 'char', - 'TAS_USER' => 'char', - 'TAS_CAN_UPLOAD' => 'char', - 'TAS_VIEW_UPLOAD' => 'char', - 'TAS_VIEW_ADDITIONAL_DOCUMENTATION' => 'char', - 'TAS_CAN_CANCEL' => 'char', - 'TAS_OWNER_APP' => 'char', - 'STG_UID' => 'char', - 'TAS_CAN_PAUSE' => 'char', - 'TAS_CAN_SEND_MESSAGE' => 'char', - 'TAS_CAN_DELETE_DOCS' => 'char', - 'TAS_SELF_SERVICE' => 'char', - 'TAS_START' => 'char', - 'TAS_TO_LAST_USER' => 'char', - 'TAS_SEND_LAST_EMAIL' => 'char', - 'TAS_DERIVATION' => 'char', - 'TAS_POSX' => 'char', - 'TAS_POSY' => 'char', - 'TAS_COLOR' => 'char', - 'TAS_TITLE' => 'char', - 'TAS_DESCRIPTION' => 'char', - 'TAS_DEF_TITLE' => 'char', - 'TAS_DEF_DESCRIPTION' => 'char', - 'TAS_DEF_PROC_CODE' => 'char', - 'TAS_DEF_MESSAGE' => 'char' - ); - - - $aRows = array_merge(Array($fieldNames), $aRows); - - // g::pr($aRows); die; + /* + * Return the output documents list criteria object + * @param string $sProcessUID + * @return object + */ + public function getOutputDocumentsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); + $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_TYPE); + $oCriteria->addSelectColumn(OutputDocumentPeer::PRO_UID); + $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('OUT_DOC_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $outputDocArray = array(); + $outputDocArray [] = array('d' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $outputDocument = new OutputDocument ( ); + $outputDocumentObj = $outputDocument->load($aRow ['OUT_DOC_UID']); + $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; + $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; + } + $outputDocArray [] = $aRow; + $oDataset->next(); + } global $_DBArray; - $_DBArray['cases_scheduler'] = $aRows; - $_SESSION['_DBArray'] = $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['outputDocArray'] = $outputDocArray; + $_SESSION ['_DBArray'] = $_DBArray; G::LoadClass('ArrayPeer'); $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('cases_scheduler'); - $G_PUBLISH = new Publisher; + $oCriteria->setDBArrayTable('outputDocArray'); - $G_PUBLISH->AddContent('propeltable', 'paged-table', '/cases/cases_Scheduler_List', $oCriteria, array('CONFIRM' => G::LoadTranslation('ID_MSG_CONFIRM_DELETE_CASE_SCHEDULER'))); - G::RenderPage('publish'); - //return true; */ - $schedulerPath = SYS_URI . "cases/cases_Scheduler_List"; - $html = ""; - echo $html; - } catch (Exception $oError) { - throw ($oError); + return $oCriteria; } - } - /* - * Presents a small list of Scheduled Task Logs of the process - * @param string $sProcessUID - * @return void - */ - - function logCaseSchedulerList($sProcessUID = '') { - try { - $oLogCaseScheduler = new LogCasesScheduler(); - $aRows = $oLogCaseScheduler->getAll(); - - $fieldNames = Array( - 'PRO_UID' => 'char', - 'TAS_UID' => 'char', - 'USR_NAME' => 'char', - 'EXEC_DATE' => 'char', - 'EXEC_HOUR' => 'char', - 'RESULT' => 'char', - 'SCH_UID' => 'char', - 'WS_CREATE_CASE_STATUS' => 'char', - 'WS_ROUTE_CASE_STATUS' => 'char', - ); - - $aRows = array_merge(Array($fieldNames), $aRows); - - $_DBArray['log_cases_scheduler'] = $aRows; - $_SESSION['_DBArray'] = $_DBArray; - - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('log_cases_scheduler'); - - $G_PUBLISH = new Publisher; - $G_PUBLISH->ROWS_PER_PAGE = 10; - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_Scheduler_Log', $oCriteria); - $G_PUBLISH->oPropelTable->rowsPerPage = 10; - G::RenderPage('publish', 'blank'); - } catch (Exception $oError) { - throw ($oError); + /* + * Presents a small list of input documents of the process + * @param string $sProcessUID Process UID + * @return void + */ + public function inputdocsList($sProcessUID = '') + { + try { + return true; + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_ShortList', $this->getInputDocumentsCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Presents a small list of messages of the process - * @param string $sProcessUID - * @return void - */ + /* + * Return the input documents list criteria object + * @param string $sProcessUID + * @return object + */ + public function getInputDocumentsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('INP_DOC_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - function messagesList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['SYS_LANG'] = SYS_LANG; - $G_PUBLISH = new Publisher ( ); - //$G_PUBLISH->AddContent('pagedtable', 'paged-table', 'messages/messages_ShortList', $this->getMessagesCriteria($sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $inputDocArray = ""; + $inputDocArray [] = array('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $inputDocument = new InputDocument ( ); + $inputDocumentObj = $inputDocument->load($aRow ['INP_DOC_UID']); + $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; + $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; + } + $inputDocArray [] = $aRow; + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + + $_DBArray ['inputDocArrayMain'] = $inputDocArray; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('inputDocArrayMain'); + + return $oCriteria; } - } - /* - * Presents a small list of report tables of the process - * @param string $sProcessUID - * @return void - */ - - function reportTablesList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'reportTables/reportTables_ShortList', $this->getReportTablesCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Presents a small list of triggers of the process + * @param string $sProcessUID + * @return void + */ + public function triggersList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'triggers/triggers_ShortList', $this->getTriggersCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Return the report tables list criteria object - * @param string $sProcessUID - * @return object - */ + /* + * Return the triggers list criteria object + * @param string $sProcessUID + * @return object + */ + public function getTriggersCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); + $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); + $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); - function getReportTablesCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); - $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_NAME); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_TYPE); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_CONNECTION); - // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - return $oCriteria; - } + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $triggersArray = ""; + $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label + $triggerO = new Triggers ( ); + $triggerObj = $triggerO->load($aRow ['TRI_UID']); + $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; + $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; + } + $triggersArray [] = $aRow; + $oDataset->next(); + } + return $oCriteria; + } - /* - * Show the current pattern - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ + /* + * Return the triggers list in a array + * @param string $sProcessUID + * @return array + */ + public function getTriggers($sProcessUID = '') + { + $aTriggers = Array(); + $oCriteria = $this->getTriggersCriteria($sProcessUID); - function currentPattern($sProcessUID, $sTaskUID) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - $params = array(); -// $sql = BasePeer::createSelectSql($oCriteria, $params); -// echo $sProcessUID."-".$sTaskUID."-"; -// echo $sql; -// var_dump($aRow); -// die(); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while ($oDataset->next()) { + array_push($aTriggers, $oDataset->getRow()); + } + return $aTriggers; + } + + /* + * Presents a small list of Scheduled Tasks of the process + * @param string $sProcessUID + * @return void + */ + public function caseSchedulerList($sProcessUID = '') + { + try { + $schedulerPath = SYS_URI . "cases/cases_Scheduler_List"; + $html = ""; + echo $html; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Presents a small list of Scheduled Task Logs of the process + * @param string $sProcessUID + * @return void + */ + public function logCaseSchedulerList($sProcessUID = '') + { + try { + $oLogCaseScheduler = new LogCasesScheduler(); + $aRows = $oLogCaseScheduler->getAll(); + + $fieldNames = Array( + 'PRO_UID' => 'char', + 'TAS_UID' => 'char', + 'USR_NAME' => 'char', + 'EXEC_DATE' => 'char', + 'EXEC_HOUR' => 'char', + 'RESULT' => 'char', + 'SCH_UID' => 'char', + 'WS_CREATE_CASE_STATUS' => 'char', + 'WS_ROUTE_CASE_STATUS' => 'char', + ); + + $aRows = array_merge(Array($fieldNames), $aRows); + + $_DBArray['log_cases_scheduler'] = $aRows; + $_SESSION['_DBArray'] = $_DBArray; + + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('log_cases_scheduler'); + + $G_PUBLISH = new Publisher; + $G_PUBLISH->ROWS_PER_PAGE = 10; + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_Scheduler_Log', $oCriteria); + $G_PUBLISH->oPropelTable->rowsPerPage = 10; + G::RenderPage('publish', 'blank'); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Presents a small list of messages of the process + * @param string $sProcessUID + * @return void + */ + public function messagesList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['SYS_LANG'] = SYS_LANG; + $G_PUBLISH = new Publisher ( ); + //$G_PUBLISH->AddContent('pagedtable', 'paged-table', 'messages/messages_ShortList', $this->getMessagesCriteria($sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Presents a small list of report tables of the process + * @param string $sProcessUID + * @return void + */ + public function reportTablesList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'reportTables/reportTables_ShortList', $this->getReportTablesCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Return the report tables list criteria object + * @param string $sProcessUID + * @return object + */ + public function getReportTablesCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); + $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_NAME); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_TYPE); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_CONNECTION); + // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); + return $oCriteria; + } + + /* + * Show the current pattern + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function currentPattern($sProcessUID, $sTaskUID) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + $params = array(); if (is_array($aRow)) { $aFields ['ROU_TYPE'] = $aRow ['ROU_TYPE']; @@ -2453,916 +2328,904 @@ class processMap { } } - $aFields ['action'] = 'savePattern'; - $aFields ['LANG'] = SYS_LANG; - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/' . $sXmlform, '', $aFields, '../patterns/patterns_Ajax'); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - global $G_PUBLISH; - $G_PUBLISH = new Publisher(); - $aMessage = array(); - $aMessage['MESSAGE'] = $oError->getMessage(); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); - G::RenderPage( 'publish','blank'); - die; - } - } - - /* - * Show the new pattern form - * @param string $sProcessUID - * @param string $sTaskUID - * @param string $sNextTask - * @param string $sType - * @return boolean - */ - - function newPattern($sProcessUID, $sTaskUID, $sNextTask, $sType) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - if (is_array($aRow)) { - $aFields ['ROU_TYPE_OLD'] = $aRow ['ROU_TYPE']; - if ($sType == $aFields ['ROU_TYPE_OLD']) { - switch ($sType) { - case 'SELECT' : - $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - $oDataset->next(); - } - break; - case 'EVALUATE' : - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - $oDataset->next(); - } - break; - case 'PARALLEL' : - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $oDataset->next(); - } - break; - case 'PARALLEL-BY-EVALUATION' : - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $oDataset->next(); - } - break; - case 'DISCRIMINATOR' : - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; - while ( $aRow = $oDataset->getRow () ) { - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; - $oDataset->next (); - } - break; - } - } else { - + $aFields ['action'] = 'savePattern'; + $aFields ['LANG'] = SYS_LANG; + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/' . $sXmlform, '', $aFields, '../patterns/patterns_Ajax'); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + global $G_PUBLISH; + $G_PUBLISH = new Publisher(); + $aMessage = array(); + $aMessage['MESSAGE'] = $oError->getMessage(); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); + G::RenderPage( 'publish','blank'); + die; } - } - switch ($sType) { - case 'SEQUENTIAL' : - case 'SEC-JOIN' : - $aFields ['ROU_NEXT_TASK'] = $sNextTask; - break; - case 'SELECT' : - $iRow = (isset($aFields ['GRID_SELECT_TYPE']) ? count($aFields ['GRID_SELECT_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'EVALUATE' : - $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'PARALLEL' : - $iRow = (isset($aFields ['GRID_PARALLEL_TYPE']) ? count($aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'PARALLEL-BY-EVALUATION' : - $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'DISCRIMINATOR' : - $iRow = (isset ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ) ? count ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] ) + 1 : 0); - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - } - $aFields ['action'] = 'savePattern'; - $aFields ['LANG'] = SYS_LANG; - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/patterns_Current', '', $aFields, '../patterns/patterns_Ajax'); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); } - } - /** - * getNumberOfRoutes - * - * @param string $sProcessUID Default value empty - * @param string $sTaskUID Default value empty - * @param string $sNextTask Default value empty - * @param string $sType Default value empty - * @return intenger ( int ) $aRow ['ROUTE_NUMBER'] - */ - function getNumberOfRoutes($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->add(RoutePeer::ROU_NEXT_TASK, $sNextTask); - $oCriteria->add(RoutePeer::ROU_TYPE, $sType); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - return (int) $aRow ['ROUTE_NUMBER']; - } catch (Exception $oError) { - throw ($oError); + /* + * Show the new pattern form + * @param string $sProcessUID + * @param string $sTaskUID + * @param string $sNextTask + * @param string $sType + * @return boolean + */ + public function newPattern($sProcessUID, $sTaskUID, $sNextTask, $sType) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + if (is_array($aRow)) { + $aFields ['ROU_TYPE_OLD'] = $aRow ['ROU_TYPE']; + if ($sType == $aFields ['ROU_TYPE_OLD']) { + switch ($sType) { + case 'SELECT' : + $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + $oDataset->next(); + } + break; + case 'EVALUATE' : + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + $oDataset->next(); + } + break; + case 'PARALLEL' : + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $oDataset->next(); + } + break; + case 'PARALLEL-BY-EVALUATION' : + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $oDataset->next(); + } + break; + case 'DISCRIMINATOR' : + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; + while ( $aRow = $oDataset->getRow () ) { + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; + $oDataset->next (); + } + break; + } + } else { + + } + } + switch ($sType) { + case 'SEQUENTIAL' : + case 'SEC-JOIN' : + $aFields ['ROU_NEXT_TASK'] = $sNextTask; + break; + case 'SELECT' : + $iRow = (isset($aFields ['GRID_SELECT_TYPE']) ? count($aFields ['GRID_SELECT_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'EVALUATE' : + $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'PARALLEL' : + $iRow = (isset($aFields ['GRID_PARALLEL_TYPE']) ? count($aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'PARALLEL-BY-EVALUATION' : + $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'DISCRIMINATOR' : + $iRow = (isset ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ) ? count ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] ) + 1 : 0); + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + } + $aFields ['action'] = 'savePattern'; + $aFields ['LANG'] = SYS_LANG; + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/patterns_Current', '', $aFields, '../patterns/patterns_Ajax'); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * saveNewPattern - * - * @param string $sProcessUID Default value empty - * @param string $sTaskUID Default value empty - * @param string $sNextTask Default value empty - * @param string $sType Default value empty - * @param boolean $sDelete - * @return array void - */ - function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '', $sDelete='') { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); - $oCriteria->addSelectColumn('GAT_UID AS GATEWAY_UID'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->add(RoutePeer::ROU_TYPE, $sType); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['TAS_UID'] = $sTaskUID; - $aFields ['ROU_NEXT_TASK'] = $sNextTask; - $aFields ['ROU_TYPE'] = $sType; - $aFields ['ROU_CASE'] = (int) $aRow ['ROUTE_NUMBER'] + 1; - - $sGatewayUID = $aRow['GATEWAY_UID']; - - if($sDelete && $sGatewayUID != ''){ - $oGateway = new Gateway ( ); - $oGateway->remove($sGatewayUID); - } - //Getting Gateway UID after saving gateway - //if($sType != 'SEQUENTIAL' && $sGatewayUID == '' && $sDelete == '1') - if($sType != 'SEQUENTIAL') - { - $oProcessMap = new processMap(); - $sGatewayUID = $oProcessMap->saveNewGateway($sProcessUID, $sTaskUID, $sNextTask); - } - - $aFields ['GAT_UID'] = (isset($sGatewayUID))?$sGatewayUID:''; - $oRoute = new Route ( ); - $oRoute->create($aFields); - } catch (Exception $oError) { - throw ($oError); + /** + * getNumberOfRoutes + * + * @param string $sProcessUID Default value empty + * @param string $sTaskUID Default value empty + * @param string $sNextTask Default value empty + * @param string $sType Default value empty + * @return intenger ( int ) $aRow ['ROUTE_NUMBER'] + */ + public function getNumberOfRoutes($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') + { + try { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->add(RoutePeer::ROU_NEXT_TASK, $sNextTask); + $oCriteria->add(RoutePeer::ROU_TYPE, $sType); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + return (int) $aRow ['ROUTE_NUMBER']; + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * saveNewGateway - * - * @param string $sProcessUID Default value empty - * @param string $sTaskUID Default value empty - * @param string $sNextTask Default value empty - * @param string $sType Default value empty (Route Type) - * @return string $sGatewayUID - */ - function saveNewGateway($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') { - try { - $oTask = new Task(); - $aTaskDetails = $oTask->load($sTaskUID); - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['TAS_UID'] = $sTaskUID; - $aFields ['GAT_NEXT_TASK'] = $sNextTask; - $aFields ['GAT_X'] = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2; - $aFields ['GAT_Y'] = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10; + /** + * saveNewPattern + * + * @param string $sProcessUID Default value empty + * @param string $sTaskUID Default value empty + * @param string $sNextTask Default value empty + * @param string $sType Default value empty + * @param boolean $sDelete + * @return array void + */ + public function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '', $sDelete='') + { + try { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); + $oCriteria->addSelectColumn('GAT_UID AS GATEWAY_UID'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->add(RoutePeer::ROU_TYPE, $sType); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['TAS_UID'] = $sTaskUID; + $aFields ['ROU_NEXT_TASK'] = $sNextTask; + $aFields ['ROU_TYPE'] = $sType; + $aFields ['ROU_CASE'] = (int) $aRow ['ROUTE_NUMBER'] + 1; - switch($sType) - { - case 'PARALLEL': - $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; - break; - case 'SEC-JOIN': - $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; - break; - case 'EVALUATE': - $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; - break; - case 'PARALLEL-BY-EVALUATION': - $aFields ['GAT_TYPE'] = 'bpmnGatewayInclusive'; - break; - case 'SELECT': - $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; - break; - case 'DISCRIMINATOR': - $aFields ['GAT_TYPE'] = 'bpmnGatewayComplex'; - break; - } + $sGatewayUID = $aRow['GATEWAY_UID']; - $oGateway = new Gateway ( ); + if ($sDelete && $sGatewayUID != ''){ + $oGateway = new Gateway ( ); + $oGateway->remove($sGatewayUID); + } + //Getting Gateway UID after saving gateway + //if ($sType != 'SEQUENTIAL' && $sGatewayUID == '' && $sDelete == '1') + if ($sType != 'SEQUENTIAL') { + $oProcessMap = new processMap(); + $sGatewayUID = $oProcessMap->saveNewGateway($sProcessUID, $sTaskUID, $sNextTask); + } - $sGatewayUID = $oGateway->create($aFields); - - return $sGatewayUID; - - } catch (Exception $oError) { - throw ($oError); + $aFields ['GAT_UID'] = (isset($sGatewayUID))?$sGatewayUID:''; + $oRoute = new Route ( ); + $oRoute->create($aFields); + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Delete a derivation rule - * @param string $sTaskUID - * @return boolean - */ + /** + * saveNewGateway + * + * @param string $sProcessUID Default value empty + * @param string $sTaskUID Default value empty + * @param string $sNextTask Default value empty + * @param string $sType Default value empty (Route Type) + * @return string $sGatewayUID + */ + public function saveNewGateway($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') + { + try { + $oTask = new Task(); + $aTaskDetails = $oTask->load($sTaskUID); + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['TAS_UID'] = $sTaskUID; + $aFields ['GAT_NEXT_TASK'] = $sNextTask; + $aFields ['GAT_X'] = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2; + $aFields ['GAT_Y'] = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10; - function deleteDerivation($sTaskUID = '') { - try { - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - RoutePeer::doDelete($oCriteria); - return true; - return true; - } catch (Exception $oError) { - throw ($oError); + switch($sType) + { + case 'PARALLEL': + $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; + break; + case 'SEC-JOIN': + $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; + break; + case 'EVALUATE': + $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; + break; + case 'PARALLEL-BY-EVALUATION': + $aFields ['GAT_TYPE'] = 'bpmnGatewayInclusive'; + break; + case 'SELECT': + $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; + break; + case 'DISCRIMINATOR': + $aFields ['GAT_TYPE'] = 'bpmnGatewayComplex'; + break; + } + + $oGateway = new Gateway ( ); + $sGatewayUID = $oGateway->create($aFields); + return $sGatewayUID; + + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * getConditionProcessList - * - * @return object $oCriteria - */ - function getConditionProcessList() { - $aProcesses = array(); - $aProcesses [] = array('PRO_UID' => 'char', 'PRO_TITLE' => 'char', 'PRO_DESCRIPTION' => 'char', 'PRO_STATUS' => 'char', 'PRO_CATEGORY' => 'char', 'PRO_CATEGORY_LABEL' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessPeer::PRO_UID); - $oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL); - $oDataset = ProcessPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - - - $oDataset->next(); - $oProcess = new Process ( ); - while ($aRow = $oDataset->getRow()) { - $aProcess = $oProcess->load($aRow ['PRO_UID']); - $aProcesses [] = array('PRO_UID' => $aProcess ['PRO_UID'], 'PRO_TITLE' => $aProcess ['PRO_TITLE'], 'PRO_DESCRIPTION' => $aProcess ['PRO_DESCRIPTION'], 'PRO_STATUS' => ($aProcess ['PRO_STATUS'] == 'ACTIVE' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE')), 'PRO_CATEGORY' => $aProcess ['PRO_CATEGORY'], 'PRO_CATEGORY_LABEL' => $aProcess ['PRO_CATEGORY_LABEL']); - $oDataset->next(); + /* + * Delete a derivation rule + * @param string $sTaskUID + * @return boolean + */ + public function deleteDerivation($sTaskUID = '') + { + try { + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + RoutePeer::doDelete($oCriteria); + return true; + return true; + } catch (Exception $oError) { + throw ($oError); + } } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['processes'] = $aProcesses; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('processes'); - return $oCriteria; - } - /* - * Show the dynaforms for the supervisors - * @param string $sProcessUID - * @return boolean - */ + /** + * getConditionProcessList + * + * @return object $oCriteria + */ + public function getConditionProcessList() + { + $aProcesses = array(); + $aProcesses [] = array('PRO_UID' => 'char', 'PRO_TITLE' => 'char', 'PRO_DESCRIPTION' => 'char', 'PRO_STATUS' => 'char', 'PRO_CATEGORY' => 'char', 'PRO_CATEGORY_LABEL' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessPeer::PRO_UID); + $oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL); + $oDataset = ProcessPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - function supervisorDynaforms($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_Supervisor', $this->getSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + $oDataset->next(); + $oProcess = new Process ( ); + while ($aRow = $oDataset->getRow()) { + $aProcess = $oProcess->load($aRow ['PRO_UID']); + $aProcesses [] = array('PRO_UID' => $aProcess ['PRO_UID'], 'PRO_TITLE' => $aProcess ['PRO_TITLE'], 'PRO_DESCRIPTION' => $aProcess ['PRO_DESCRIPTION'], 'PRO_STATUS' => ($aProcess ['PRO_STATUS'] == 'ACTIVE' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE')), 'PRO_CATEGORY' => $aProcess ['PRO_CATEGORY'], 'PRO_CATEGORY_LABEL' => $aProcess ['PRO_CATEGORY_LABEL']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['processes'] = $aProcesses; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('processes'); + return $oCriteria; } - } - /** - * supervisorInputs - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ - function supervisorInputs($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_Supervisor', $this->getSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Show the dynaforms for the supervisors + * @param string $sProcessUID + * @return boolean + */ + public function supervisorDynaforms($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_Supervisor', $this->getSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * webEntry - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ - function webEntry($sProcessUID) { - try { - global $G_PUBLISH; - global $G_FORM; - $G_PUBLISH = new Publisher ( ); + /** + * supervisorInputs + * + * @param string $sProcessUID + * @return boolean true + * throw Exception $oError + */ + public function supervisorInputs($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_Supervisor', $this->getSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } - if (G::is_https ()) - $http = 'https://'; - else - $http = 'http://'; + /** + * webEntry + * + * @param string $sProcessUID + * @return boolean true + * throw Exception $oError + */ + public function webEntry($sProcessUID) + { + try { + global $G_PUBLISH; + global $G_FORM; + $G_PUBLISH = new Publisher ( ); - $link = $http . $_SERVER ['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sProcessUID . '/'; + if (G::is_https ()) + $http = 'https://'; + else + $http = 'http://'; - $row = array(); - $c = 0; + $link = $http . $_SERVER ['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sProcessUID . '/'; - /* - $oTask = new Task ( ); - $TaskFields = $oTask->kgetassigType ( $sProcessUID , $tas=''); - */ - $TaskFields ['TAS_ASSIGN_TYPE'] = ''; - $row [] = array('W_TITLE' => '', 'W_DELETE' => '', 'TAS_ASSIGN_TYPE' => $TaskFields ['TAS_ASSIGN_TYPE']); + $row = array(); + $c = 0; - if (is_dir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID)) { - $dir = opendir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID); - while ($archivo = readdir($dir)) { //print $archivo." ****
"; - if ($archivo != '.') { - if ($archivo != '..') { - $one = 0; - $two = 0; + /* + $oTask = new Task ( ); + $TaskFields = $oTask->kgetassigType ( $sProcessUID , $tas=''); + */ + $TaskFields ['TAS_ASSIGN_TYPE'] = ''; + $row [] = array('W_TITLE' => '', 'W_DELETE' => '', 'TAS_ASSIGN_TYPE' => $TaskFields ['TAS_ASSIGN_TYPE']); - $alink = $link . $archivo; + if (is_dir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID)) { + $dir = opendir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID); + while ($archivo = readdir($dir)) { //print $archivo." ****
"; + if ($archivo != '.') { + if ($archivo != '..') { + $one = 0; + $two = 0; - $one = count(explode('wsClient.php', $archivo)); - $two = count(explode('Post.php', $archivo)); + $alink = $link . $archivo; - if ($one == 1 && $two == 1) { - $arlink = "" . $alink . ""; - $linkdelete = sprintf("delete", $alink, $archivo, $sProcessUID); - $row [] = array('W_LINK' => $arlink, 'W_FILENAME' => $archivo, 'W_PRO_UID' => $sProcessUID); + $one = count(explode('wsClient.php', $archivo)); + $two = count(explode('Post.php', $archivo)); + + if ($one == 1 && $two == 1) { + $arlink = "" . $alink . ""; + $linkdelete = sprintf("delete", $alink, $archivo, $sProcessUID); + $row [] = array('W_LINK' => $arlink, 'W_FILENAME' => $archivo, 'W_PRO_UID' => $sProcessUID); + } + } } } } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['reports'] = $row; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('reports'); + //if ($TaskFields['TAS_ASSIGN_TYPE'] == 'BALANCED') { + //$G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_WebEntryList', $oCriteria, array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); + /* }else{ + $aMessage['MESSAGE'] = G::loadTranslation( 'WEBEN_ONLY_BALANCED' ); + $G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/showMessage', '',$aMessage ); + + } */ + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); } - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['reports'] = $row; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('reports'); - //if ($TaskFields['TAS_ASSIGN_TYPE'] == 'BALANCED') { - //$G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_WebEntryList', $oCriteria, array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); - /* }else{ - $aMessage['MESSAGE'] = G::loadTranslation( 'WEBEN_ONLY_BALANCED' ); - $G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/showMessage', '',$aMessage ); - - } */ - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * webEntry_new - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ - function webEntry_new($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - -/** - * webEntryByTask - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ -// function webEntryByTask($sProcessUID, $sEventUID) { -// $event = new Event(); -// $event->load($sEventUID); -// $task_uid = $event->getEvnTasUidTo(); -// $tasks = new Tasks(); -// $tasks->get -// $link = $sProcessUID.'/'.str_replace ( ' ', '_', str_replace ( '/', '_',$task_uid)); -// -// return $link; -// } - - /* - * Return the supervisors dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getSupervisorDynaformsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $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(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - return $oCriteria; - } - - /* - * Return the supervisors dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getSupervisorInputsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $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(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - return $oCriteria; - } - - /* - * Show the available dynaforms for the supervisors - * @param string $sProcessUID - * @return boolean - */ - - function availableSupervisorDynaforms($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_AvailableSupervisorDynaforms', $this->getAvailableSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Show the available input documents for the supervisors - * @param string $sProcessUID - * @return boolean - */ - - function availableSupervisorInputs($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_AvailableSupervisorInputs', $this->getAvailableSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the available supervisors dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getAvailableSupervisorDynaformsCriteria($sProcessUID = '') { - $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addSelectColumn(DynaformPeer::PRO_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_TYPE, 'xmlform'); - $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); - return $oCriteria; - } - - /* - * Return the available supervisors input documents list criteria object - * @param string $sProcessUID - * @return object - */ - - function getAvailableSupervisorInputsCriteria($sProcessUID = '') { - $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addSelectColumn(InputDocumentPeer::PRO_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, $aUIDS, Criteria::NOT_IN); - return $oCriteria; - } - - /** - * assignSupervisorStep - * - * @param string $sProcessUID - * @param string $sObjType - * @param string $sObjUID - * @return void - */ - function assignSupervisorStep($sProcessUID, $sObjType, $sObjUID) { - $oStepSupervisor = new StepSupervisor ( ); - $oStepSupervisor->create(array('PRO_UID' => $sProcessUID, 'STEP_TYPE_OBJ' => $sObjType, 'STEP_UID_OBJ' => $sObjUID, 'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, $sObjType))); - } - - /** - * removeSupervisorStep - * - * @param string $sStepUID - * @param string $sProcessUID - * @param string $sObjType - * @param string $sObjUID - * @param integer $iPosition - * @return void - */ - function removeSupervisorStep($sStepUID, $sProcessUID, $sObjType, $sObjUID, $iPosition) { - $oStepSupervisor = new StepSupervisor ( ); - $oStepSupervisor->remove($sStepUID); - $oStepSupervisor->reorderPositions($sProcessUID, $iPosition, $sObjType); - } - - /** - * listProcessesUser - * - * @param string $sProcessUID - * @return object(Criteria) $oCriteria - */ - function listProcessesUser($sProcessUID) { - $aResp = array( - array( - 'LA_PU_UID' => 'char', - 'LA_PRO_UID' => 'char', - 'LA_USR_UID' => 'char', - 'LA_PU_NAME' => 'char', - 'LA_PU_TYPE_NAME' => 'char') - ); - - // Groups - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); - - $aConditions [] = array(ProcessUserPeer::USR_UID, ContentPeer::CON_ID); - $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); - - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - while ($aRow = $oDataset->getRow()) { - $aResp[] = array( - 'LA_PU_UID' => $aRow['PU_UID'], - 'LA_PRO_UID' => $aRow['PRO_UID'], - 'LA_USR_UID' => $aRow['USR_UID'], - 'LA_PU_NAME' => $aRow['GRP_TITLE'], - 'LA_PU_TYPE_NAME' => 'Group'); - $oDataset->next(); } - // Users - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - while ($aRow = $oDataset->getRow()) { - $aResp[] = array( - 'LA_PU_UID' => $aRow['PU_UID'], - 'LA_PRO_UID' => $aRow['PRO_UID'], - 'LA_USR_UID' => $aRow['USR_UID'], - 'LA_PU_NAME' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], - 'LA_PU_TYPE_NAME' => 'User'); - $oDataset->next(); - } - - global $_DBArray; - $_DBArray['data'] = $aResp; - $_SESSION['_DBArray'] = $_DBArray; - $LiCriteria = new Criteria('dbarray'); - $LiCriteria->setDBArrayTable('data'); - - return $LiCriteria; - } - - /** - * listNoProcessesUser - * - * @param string $sProcessUID - * @return object(Criteria) $oCriteria - */ - function listNoProcessesUser($sProcessUID) { - G::LoadSystem('rbac'); - $memcache = & PMmemcached::getSingleton(SYS_SYS); - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->add(ProcessUserPeer::PU_TYPE, '%SUPERVISOR%', Criteria::LIKE); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - $aGRUS = array(); - while ($aRow = $oDataset->getRow()) { - if ($aRow['PU_TYPE'] == 'SUPERVISOR') { - $aUIDS [] = $aRow ['USR_UID']; - } else { - $aGRUS [] = $aRow ['USR_UID']; - } - $oDataset->next(); - } - - $aRespLi = array( - array( - 'UID' => 'char', - 'USER_GROUP' => 'char', - 'TYPE_UID' => 'char', - 'PRO_UID' => 'char') - ); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); - - $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); - $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(GroupwfPeer::GRP_UID, $aGRUS, Criteria::NOT_IN); - - $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - while ($aRow = $oDataset->getRow()) { - $aRespLi[] = array( 'UID' => $aRow['GRP_UID'], - 'USER_GROUP' => $aRow['GRP_TITLE'], - 'TYPE_UID' => 'Group', - 'PRO_UID' => $sProcessUID); - $oDataset->next(); - } - - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - $oRBAC = RBAC::getSingleton (); - while ($aRow = $oDataset->getRow()) { - $memKey = 'rbacSession' . session_id(); - if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { - $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); - $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); - } - $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; - $bInclude = false; - foreach ($aPermissions as $aPermission) { - if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { - $bInclude = true; + /** + * webEntry_new + * + * @param string $sProcessUID + * @return boolean true + * throw Exception $oError + */ + public function webEntry_new($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); } - } - if ($bInclude) { - $aUIDS [] = $aRow ['USR_UID']; - } - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); - $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - while ($aRow = $oDataset->getRow()) { - $aRespLi[] = array('UID' => $aRow['USR_UID'], - 'USER_GROUP' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], - 'TYPE_UID' => 'User', - 'PRO_UID' => $sProcessUID); - $oDataset->next(); } - global $_DBArray; - $_DBArray['data'] = $aRespLi; - $_SESSION['_DBArray'] = $_DBArray; - $LsCriteria = new Criteria('dbarray'); - $LsCriteria->setDBArrayTable('data'); - - return $LsCriteria; - } - - /** - * assignProcessUser - * - * @param string $sProcessUID - * @param string $sUsrUID - * @return void - */ - function assignProcessUser($sProcessUID, $sUsrUID, $sTypeUID) { - $oProcessUser = new ProcessUser ( ); - $puType = 'SUPERVISOR'; - if ($sTypeUID == 'Group') { - $puType = 'GROUP_SUPERVISOR'; + /* + * Return the supervisors dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getSupervisorDynaformsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $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(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + return $oCriteria; } - $oProcessUser->create(array('PU_UID' => G::generateUniqueID (), 'PRO_UID' => $sProcessUID, 'USR_UID' => $sUsrUID, 'PU_TYPE' => $puType)); - } - /** - * removeProcessUser - * - * @param string $sPUUID - * @return void - */ - function removeProcessUser($sPUUID) { - $oProcessUser = new ProcessUser ( ); - $oProcessUser->remove($sPUUID); - } + /* + * Return the supervisors dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getSupervisorInputsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $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(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + return $oCriteria; + } + + /* + * Show the available dynaforms for the supervisors + * @param string $sProcessUID + * @return boolean + */ + public function availableSupervisorDynaforms($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_AvailableSupervisorDynaforms', $this->getAvailableSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Show the available input documents for the supervisors + * @param string $sProcessUID + * @return boolean + */ + public function availableSupervisorInputs($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_AvailableSupervisorInputs', $this->getAvailableSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Return the available supervisors dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getAvailableSupervisorDynaformsCriteria($sProcessUID = '') + { + $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addSelectColumn(DynaformPeer::PRO_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_TYPE, 'xmlform'); + $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); + return $oCriteria; + } + + /* + * Return the available supervisors input documents list criteria object + * @param string $sProcessUID + * @return object + */ + public function getAvailableSupervisorInputsCriteria($sProcessUID = '') + { + $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::PRO_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, $aUIDS, Criteria::NOT_IN); + return $oCriteria; + } + + /** + * assignSupervisorStep + * @param string $sProcessUID + * @param string $sObjType + * @param string $sObjUID + * @return void + */ + public function assignSupervisorStep($sProcessUID, $sObjType, $sObjUID) + { + $oStepSupervisor = new StepSupervisor ( ); + $oStepSupervisor->create(array('PRO_UID' => $sProcessUID, 'STEP_TYPE_OBJ' => $sObjType, 'STEP_UID_OBJ' => $sObjUID, 'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, $sObjType))); + } + + /** + * removeSupervisorStep + * + * @param string $sStepUID + * @param string $sProcessUID + * @param string $sObjType + * @param string $sObjUID + * @param integer $iPosition + * @return void + */ + public function removeSupervisorStep($sStepUID, $sProcessUID, $sObjType, $sObjUID, $iPosition) { + $oStepSupervisor = new StepSupervisor ( ); + $oStepSupervisor->remove($sStepUID); + $oStepSupervisor->reorderPositions($sProcessUID, $iPosition, $sObjType); + } + + /** + * listProcessesUser + * + * @param string $sProcessUID + * @return object(Criteria) $oCriteria + */ + public function listProcessesUser($sProcessUID) + { + $aResp = array( + array( + 'LA_PU_UID' => 'char', + 'LA_PRO_UID' => 'char', + 'LA_USR_UID' => 'char', + 'LA_PU_NAME' => 'char', + 'LA_PU_TYPE_NAME' => 'char') + ); + + // Groups + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); + + $aConditions [] = array(ProcessUserPeer::USR_UID, ContentPeer::CON_ID); + $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); + + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aResp[] = array( + 'LA_PU_UID' => $aRow['PU_UID'], + 'LA_PRO_UID' => $aRow['PRO_UID'], + 'LA_USR_UID' => $aRow['USR_UID'], + 'LA_PU_NAME' => $aRow['GRP_TITLE'], + 'LA_PU_TYPE_NAME' => 'Group'); + $oDataset->next(); + } + + // Users + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); + $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aResp[] = array( + 'LA_PU_UID' => $aRow['PU_UID'], + 'LA_PRO_UID' => $aRow['PRO_UID'], + 'LA_USR_UID' => $aRow['USR_UID'], + 'LA_PU_NAME' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], + 'LA_PU_TYPE_NAME' => 'User'); + $oDataset->next(); + } + + global $_DBArray; + $_DBArray['data'] = $aResp; + $_SESSION['_DBArray'] = $_DBArray; + $LiCriteria = new Criteria('dbarray'); + $LiCriteria->setDBArrayTable('data'); + + return $LiCriteria; + } + + /** + * listNoProcessesUser + * + * @param string $sProcessUID + * @return object(Criteria) $oCriteria + */ + public function listNoProcessesUser($sProcessUID) + { + G::LoadSystem('rbac'); + $memcache = & PMmemcached::getSingleton(SYS_SYS); + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->add(ProcessUserPeer::PU_TYPE, '%SUPERVISOR%', Criteria::LIKE); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + $aGRUS = array(); + while ($aRow = $oDataset->getRow()) { + if ($aRow['PU_TYPE'] == 'SUPERVISOR') { + $aUIDS [] = $aRow ['USR_UID']; + } else { + $aGRUS [] = $aRow ['USR_UID']; + } + $oDataset->next(); + } + + $aRespLi = array( + array( + 'UID' => 'char', + 'USER_GROUP' => 'char', + 'TYPE_UID' => 'char', + 'PRO_UID' => 'char') + ); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); + $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); + + $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); + $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(GroupwfPeer::GRP_UID, $aGRUS, Criteria::NOT_IN); + + $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); + $oDataset = GroupwfPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aRespLi[] = array( 'UID' => $aRow['GRP_UID'], + 'USER_GROUP' => $aRow['GRP_TITLE'], + 'TYPE_UID' => 'Group', + 'PRO_UID' => $sProcessUID); + $oDataset->next(); + } + + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + $oRBAC = RBAC::getSingleton (); + while ($aRow = $oDataset->getRow()) { + $memKey = 'rbacSession' . session_id(); + if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { + $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); + $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); + } + $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; + $bInclude = false; + foreach ($aPermissions as $aPermission) { + if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { + $bInclude = true; + } + } + if ($bInclude) { + $aUIDS [] = $aRow ['USR_UID']; + } + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); + $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aRespLi[] = array('UID' => $aRow['USR_UID'], + 'USER_GROUP' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], + 'TYPE_UID' => 'User', + 'PRO_UID' => $sProcessUID); + $oDataset->next(); + } + + global $_DBArray; + $_DBArray['data'] = $aRespLi; + $_SESSION['_DBArray'] = $_DBArray; + $LsCriteria = new Criteria('dbarray'); + $LsCriteria->setDBArrayTable('data'); + + return $LsCriteria; + } + + /** + * assignProcessUser + * + * @param string $sProcessUID + * @param string $sUsrUID + * @return void + */ + public function assignProcessUser($sProcessUID, $sUsrUID, $sTypeUID) + { + $oProcessUser = new ProcessUser ( ); + $puType = 'SUPERVISOR'; + if ($sTypeUID == 'Group') { + $puType = 'GROUP_SUPERVISOR'; + } + $oProcessUser->create(array('PU_UID' => G::generateUniqueID (), 'PRO_UID' => $sProcessUID, 'USR_UID' => $sUsrUID, 'PU_TYPE' => $puType)); + } + + /** + * removeProcessUser + * + * @param string $sPUUID + * @return void + */ + public function removeProcessUser($sPUUID) + { + $oProcessUser = new ProcessUser ( ); + $oProcessUser->remove($sPUUID); + } /** * getObjectsPermissionsCriteria @@ -3512,59 +3375,62 @@ class processMap { return $oCriteria; } - //new functions - function getAllObjectPermissionCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = ObjectPermissionPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); + //new functions + public function getAllObjectPermissionCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = ObjectPermissionPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - function getExtObjectsPermissions($start, $limit,$sProcessUID) { - G::LoadClass('case'); - Cases::verifyTable (); - $aObjectsPermissions = array(); - //$aObjectsPermissions [] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::TAS_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::USR_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_USER_RELATION); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_TASK_SOURCE); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_PARTICIPATE); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_TYPE); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_ACTION); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_CASE_STATUS); - $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - //Obtain task target - if (($aRow ['TAS_UID'] != '') && ($aRow ['TAS_UID'] != '0')) { - try { - $oTask = new Task ( ); - $aFields = $oTask->load($aRow ['TAS_UID']); - $sTaskTarget = $aFields ['TAS_TITLE']; - } catch (Exception $oError) { - $sTaskTarget = 'All Tasks'; + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; } - } else { + } + + public function getExtObjectsPermissions($start, $limit,$sProcessUID) + { + G::LoadClass('case'); + Cases::verifyTable (); + $aObjectsPermissions = array(); + //$aObjectsPermissions [] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::TAS_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::USR_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_USER_RELATION); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_TASK_SOURCE); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_PARTICIPATE); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_TYPE); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_ACTION); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_CASE_STATUS); + $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + //Obtain task target + if (($aRow ['TAS_UID'] != '') && ($aRow ['TAS_UID'] != '0')) { + try { + $oTask = new Task ( ); + $aFields = $oTask->load($aRow ['TAS_UID']); + $sTaskTarget = $aFields ['TAS_TITLE']; + } catch (Exception $oError) { + $sTaskTarget = 'All Tasks'; + } + } else { $sTaskTarget = G::LoadTranslation('ID_ANY_TASK'); } //Obtain user or group @@ -3634,3408 +3500,3413 @@ class processMap { } break; } - //Participated - if ($aRow ['OP_PARTICIPATE'] == 0) { - $sParticipated = G::LoadTranslation('ID_NO'); - } else { - $sParticipated = G::LoadTranslation('ID_YES'); - } - //Obtain action (permission) - $sAction = G::LoadTranslation('ID_' . $aRow ['OP_ACTION']); - //Add to array - $aObjectsPermissions [] = array('OP_UID' => $aRow ['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow ['OP_CASE_STATUS']); - $oDataset->next(); - } - return $aObjectsPermissions; - } - - /** - * objectsPermissionsList - * - * @param string $sProcessUID - * @return boolean true - */ - function objectsPermissionsList($sProcessUID) { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'processes/processes_ObjectsPermissionsList', $this->getObjectsPermissionsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } - - /** - * newObjectPermission - * - * @param string $sProcessUID - * @return boolean true - */ - function newObjectPermission($sProcessUID) { - $usersGroups = ''; - $aAllObjects = array(); - $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllDynaforms = array(); - $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllInputs = array(); - $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllOutputs = array(); - $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = $this->getDynaformsCriteria($sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; - $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); - $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); - $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); - $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['allObjects'] = $aAllObjects; - $_DBArray ['allDynaforms'] = $aAllDynaforms; - $_DBArray ['allInputs'] = $aAllInputs; - $_DBArray ['allOutputs'] = $aAllOutputs; - $_SESSION ['_DBArray'] = $_DBArray; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_NewObjectPermission', '', array('GROUP_USER' => $usersGroups, 'LANG' => SYS_LANG, 'PRO_UID' => $sProcessUID, 'ID_DELETE' => G::LoadTranslation('ID_DELETE')), 'processes_SaveObjectPermission'); - G::RenderPage('publish', 'raw'); - return true; - } - - /** - * editObjectPermission - * - * @param string $sOP_UID - * @param string $sProcessUID - * @return void - */ - function editObjectPermission($sOP_UID, $sProcessUID) { - - $oCriteria = new Criteria ( ); - $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); - $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRows = $oDataset->getRow(); - - $oCriteria = new Criteria ( ); - $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); - if (GroupwfPeer::doCount($oCriteria) == 1) - $user = '2|' . $aRows ['USR_UID']; - - $oCriteria = new Criteria ( ); - $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); - if (UsersPeer::doCount($oCriteria) == 1) - $user = '1|' . $aRows ['USR_UID']; - - $aFields ['LANG'] = SYS_LANG; - $aFields ['OP_UID'] = $aRows ['OP_UID']; - $aFields ['PRO_UID'] = $aRows ['PRO_UID']; - $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; - $aFields ['TAS_UID'] = $aRows ['TAS_UID']; - $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; - $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; - $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; - $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; - - switch ($aRows ['OP_OBJ_TYPE']) { - /* case 'ANY': - $aFields['OP_OBJ_TYPE'] = ''; - break; */ - case 'DYNAFORM' : - $aFields ['DYNAFORMS'] = $aRows ['OP_OBJ_UID']; - break; - case 'INPUT' : - $aFields ['INPUTS'] = $aRows ['OP_OBJ_UID']; - break; - case 'OUTPUT' : - $aFields ['OUTPUTS'] = $aRows ['OP_OBJ_UID']; - break; - } - - $usersGroups = ' - - - ' );*/ - $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_UID_OBJ' => $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_UID_OBJ' => $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); - } - } - - //new functions - function getAllStepCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the steps list criteria object - * @param string $sTaskUID - * @return array - */ - function getExtStepsCriteria($start, $limit, $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 ); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $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 = ''; - } - } + //Participated + if ($aRow ['OP_PARTICIPATE'] == 0) { + $sParticipated = G::LoadTranslation('ID_NO'); + } else { + $sParticipated = G::LoadTranslation('ID_YES'); } - break; + //Obtain action (permission) + $sAction = G::LoadTranslation('ID_' . $aRow ['OP_ACTION']); + //Add to array + $aObjectsPermissions [] = array('OP_UID' => $aRow ['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow ['OP_CASE_STATUS']); + $oDataset->next(); } - $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); - } - } - - //new functions - function getAllStepTriggerCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepTriggerPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the steps trigger criteria array - * @param string $sTaskUID - * @return array - */ - function getExtStepTriggersCriteria($start, $limit, $sStepUID = '', $sTaskUID = '', $sType = '') - { - //$_SESSION['TASK'] = $sTaskUID; - $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 ); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $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 - { - $_SESSION['TASK'] = $sTaskUID; - $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); - } - } - - //new functions - //deprecated - function getAllDynaformCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = DynaformPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the dynaforms list array - * @param string $sProcessUID - * @return object - */ - function getExtDynaformsList($start, $limit, $sProcessUID = '') - { - //select the main fields for dynaform and the title and description from CONTENT Table - $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 ); - - //if we have pagination, we use it and limit the query - if($start != '') - $oCriteria->setOffset($start); - - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $dynaformArray = array (); - $gridLabel = G::LoadTranslation( 'ID_GRID' ); - $normalLabel = G::LoadTranslation( 'ID_NORMAL' ); - - while ( $aRow = $oDataset->getRow () ) { - //this is a trick to copy the description and title from other language when the current language does not exist for this content row. - 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); - } - - if ( $aRow['DYN_TYPE'] == 'grid' ) $aRow['DYN_TYPE'] = $gridLabel; - if ( $aRow['DYN_TYPE'] == 'xmlform' ) $aRow['DYN_TYPE'] = $normalLabel; - $aRow['TAS_EDIT'] = 0; - $aRow['TAS_VIEW'] = 0; - $dynaformArray [] = $aRow; - $oDataset->next (); - } - $result = array(); - - //Now count how many times the dynaform was used in different tasks in VIEW mode, - $groupbyCriteria = new Criteria ( 'workflow' ); - $groupbyCriteria->clearSelectColumns(); - $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); - $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); - $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); - $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); - $groupbyCriteria->add(StepPeer::STEP_MODE, 'VIEW'); - $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); - $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - foreach ( $dynaformArray as $key => $val ) { - if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_VIEW'] = $aRow['COUNT(TAS_UID)'] ; - } - $oDataset->next (); + return $aObjectsPermissions; } - //Now count how many times the dynaform was used in different tasks in EDIT mode, - $groupbyCriteria = new Criteria ( 'workflow' ); - $groupbyCriteria->clearSelectColumns(); - $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); - $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); - $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); - $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); - $groupbyCriteria->add(StepPeer::STEP_MODE, 'EDIT'); - $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); - $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - foreach ( $dynaformArray as $key => $val ) { - if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_EDIT'] = $aRow['COUNT(TAS_UID)'] ; - } - $oDataset->next (); - } - - //now query to get total dynaform for this process, - //$counCriteria is used to count how many dynaforms there are in this process - $countCriteria = new Criteria ( 'workflow' ); - $countCriteria->clearSelectColumns(); - $countCriteria->addSelectColumn('COUNT(*)'); - $countCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID ); - $oDataset = DynaformPeer::doSelectRS($countCriteria); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - $result['totalCount'] = $aRow[0]; - else - $result['totalCount'] = 0; - $result['data'] = $dynaformArray; - - return $result; - } - - - //new functions - function getAllInputDocumentCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = InputDocumentPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the Input Documents list array - * @param string $sProcessUID - * @return object - */ - function getExtInputDocumentsCriteria($start, $limit,$sProcessUID = '') - { - $aTasks = $this->getAllInputDocsByTask($sProcessUID); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_UID ); - $oCriteria->addSelectColumn ( InputDocumentPeer::PRO_UID ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_VERSIONING ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_DESTINATION_PATH ); - $oCriteria->addAsColumn ( 'INP_DOC_TITLE', 'C1.CON_VALUE' ); - $oCriteria->addAsColumn ( 'INP_DOC_DESCRIPTION', 'C2.CON_VALUE' ); - $oCriteria->addAlias ( 'C1', 'CONTENT' ); - $oCriteria->addAlias ( 'C2', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID' ); - $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); - $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $aConditions = array (); - $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID' ); - $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter ); - $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( InputDocumentPeer::PRO_UID, $sProcessUID ); - - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $inputDocArray = ""; - $inputDocArray [] = array ('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char' ); - while ( $aRow = $oDataset->getRow () ) { - if (($aRow ['INP_DOC_TITLE'] == NULL)||($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $inputDocument = new InputDocument ( ); - $inputDocumentObj = $inputDocument->load ( $aRow ['INP_DOC_UID'] ); - $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; - $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; - } - $aRow['INP_DOC_TASKS'] = isset($aTasks[$aRow ['INP_DOC_UID']]) ? $aTasks[$aRow ['INP_DOC_UID']] :0; - $inputDocArray [] = $aRow; - $oDataset->next (); - } - /*global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['inputDocArrayMain'] = $inputDocArray; - //$_SESSION ['_DBArray']['inputDocArrayMain'] = $_DBArray;*/ - - - return $inputDocArray; - } - - //new functions - function getAllOutputDocumentCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = OutputDocumentPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the Output Documents list array - * @param string $sProcessUID - * @return object - */ - function getExtOutputDocumentsCriteria($start, $limit,$sProcessUID = '') - { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_TYPE ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::PRO_UID ); - $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C1.CON_VALUE' ); - $oCriteria->addAsColumn ( 'OUT_DOC_DESCRIPTION', 'C2.CON_VALUE' ); - $oCriteria->addAlias ( 'C1', 'CONTENT' ); - $oCriteria->addAlias ( 'C2', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID' ); - $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter ); - $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $aConditions = array (); - $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID' ); - $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter ); - $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID ); - - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $outputDocArray = array (); - $outputDocArray [] = array ('d' => 'char' ); - while ( $aRow = $oDataset->getRow () ) { - if (($aRow ['OUT_DOC_TITLE'] == NULL)||($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $outputDocument = new OutputDocument ( ); - $outputDocumentObj = $outputDocument->load ( $aRow ['OUT_DOC_UID'] ); - $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; - $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; - } - $outputDocArray [] = $aRow; - $oDataset->next (); - } - global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['outputDocArray'] = $outputDocArray; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass ( 'ArrayPeer' ); - $oCriteria = new Criteria ( 'dbarray' ); - $oCriteria->setDBArrayTable ( 'outputDocArray' ); - - return $outputDocArray; - } - - /** - * 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::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']; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $aRow ['PRO_TITLE'] = Content::load ( 'PRO_TITLE', '', $aRow ['PRO_UID'] , $lang ); - - 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; - $aRow [$i]['VAR_OUT1'] = $indice; - $aRow [$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 $aRow; - //return $aSubProcess; - - } catch ( Exception $oError ) { - throw ($oError); - } - } - - //new functions - function getAllProcessSupervisorsCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = ProcessUserPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /** - * listProcessesUser for Extjs - * - * @param string $sProcessUID - * @return array(aProcessUser) $aProcessUser - */ - function listExtProcessesSupervisors($start, $limit,$sProcessUID) { - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = ProcessUserPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aProcessUser = ''; - while ( $aRow = $oDataset->getRow () ) { - $aProcessUser [] = array ('PU_UID' => $aRow ['PU_UID'],'USR_UID' => $aRow ['USR_UID'],'PU_TYPE' => $aRow ['PU_TYPE'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME'],'USR_EMAIL' => $aRow ['USR_EMAIL']); - $oDataset->next (); - } - return $aProcessUser; - } - - /** - * listExtNoProcessesUser for Extjs - * - * @param string $sProcessUID - * @return array(aAvailableUser) $aAvailableUser - */ - function listExtNoProcessesUser($sProcessUID) { - G::LoadSystem('rbac'); - $memcache = & PMmemcached::getSingleton(SYS_SYS); - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['USR_UID']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - $oRBAC = RBAC::getSingleton (); - while ($aRow = $oDataset->getRow()) { - $memKey = 'rbacSession' . session_id(); - if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { - $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); - $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); - } - $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; - $bInclude = false; - foreach ($aPermissions as $aPermission) { - if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { - $bInclude = true; - } - } - if ($bInclude) { - $aUIDS [] = $aRow ['USR_UID']; - } - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); - - $oDataset = UsersPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aAvailableUser = ''; - while ( $aRow = $oDataset->getRow () ) { - $aAvailableUser [] = array ('USR_UID' => $aRow ['USR_UID'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME']); - $oDataset->next (); - } - return $aAvailableUser; - } - - //new functions - function getAllSupervisorDynaformsCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepSupervisorPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the supervisors dynaforms list array - * @param string $sProcessUID - * @return array - */ - - function getExtSupervisorDynaformsList($start, $limit,$sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $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(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aProcessDynaform = ''; - while ( $aRow = $oDataset->getRow () ) { - $aProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); - $oDataset->next (); - } - return $aProcessDynaform; - } - - /* - * Return the available supervisors dynaforms list array - * @param string $sProcessUID - * @return array - */ - - function getExtAvailableSupervisorDynaformsList($sProcessUID = '') { - $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addSelectColumn(DynaformPeer::PRO_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_TYPE, 'xmlform'); - $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); - - $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aAvailableProcessDynaform = ''; - while ( $aRow = $oDataset->getRow () ) { - $aAvailableProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID']); - $oDataset->next (); - } - return $aAvailableProcessDynaform; - } - - //new functions - function getAllSupervisorInputsCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepSupervisorPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the supervisors input document list array - * @param string $sProcessUID - * @return array - */ - - function getExtSupervisorInputsList($start, $limit,$sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $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(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aProcessInputDoc = ''; - while ( $aRow = $oDataset->getRow () ) { - $aProcessInputDoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); - $oDataset->next (); - } - return $aProcessInputDoc; - } - - /* - * Return the available supervisors input documents list array - * @param string $sProcessUID - * @return array - */ - - function getExtAvailableSupervisorInputsList($sProcessUID = '') { - $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addSelectColumn(InputDocumentPeer::PRO_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, $aUIDS, Criteria::NOT_IN); - $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aAvailableProcessIODoc = ''; - while ( $aRow = $oDataset->getRow () ) { - $aAvailableProcessIODoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID']); - $oDataset->next (); - } - return $aAvailableProcessIODoc; - } - - //new functions - function getAllDbSourceCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = DbSourcePeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - - /** - * listDBSConnection - * - * @param string $sProcessUID - * @return array(aDBList) $aDBList - */ - function getExtCriteriaDBSList($start, $limit,$sProcessUID) + /** + * objectsPermissionsList + * + * @param string $sProcessUID + * @return boolean true + */ + public function objectsPermissionsList($sProcessUID) { - try - { - $aDBList = array (); - //$aDBList [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' ); - $sDelimiter = DBAdapter::getStringDelimiter(); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'processes/processes_ObjectsPermissionsList', $this->getObjectsPermissionsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } + + /** + * newObjectPermission + * + * @param string $sProcessUID + * @return boolean true + */ + public function newObjectPermission($sProcessUID) + { + $usersGroups = ''; + $aAllObjects = array(); + $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllDynaforms = array(); + $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllInputs = array(); + $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllOutputs = array(); + $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = $this->getDynaformsCriteria($sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; + $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); + $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); + $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); + $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['allObjects'] = $aAllObjects; + $_DBArray ['allDynaforms'] = $aAllDynaforms; + $_DBArray ['allInputs'] = $aAllInputs; + $_DBArray ['allOutputs'] = $aAllOutputs; + $_SESSION ['_DBArray'] = $_DBArray; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_NewObjectPermission', '', array('GROUP_USER' => $usersGroups, 'LANG' => SYS_LANG, 'PRO_UID' => $sProcessUID, 'ID_DELETE' => G::LoadTranslation('ID_DELETE')), 'processes_SaveObjectPermission'); + G::RenderPage('publish', 'raw'); + return true; + } + + /** + * editObjectPermission + * + * @param string $sOP_UID + * @param string $sProcessUID + * @return void + */ + public function editObjectPermission($sOP_UID, $sProcessUID) + { + $oCriteria = new Criteria ( ); + $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRows = $oDataset->getRow(); + + $oCriteria = new Criteria ( ); + $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); + if (GroupwfPeer::doCount($oCriteria) == 1) + $user = '2|' . $aRows ['USR_UID']; + + $oCriteria = new Criteria ( ); + $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); + if (UsersPeer::doCount($oCriteria) == 1) + $user = '1|' . $aRows ['USR_UID']; + + $aFields ['LANG'] = SYS_LANG; + $aFields ['OP_UID'] = $aRows ['OP_UID']; + $aFields ['PRO_UID'] = $aRows ['PRO_UID']; + $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; + $aFields ['TAS_UID'] = $aRows ['TAS_UID']; + $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; + $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; + $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; + $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; + + switch ($aRows ['OP_OBJ_TYPE']) { + /* case 'ANY': + $aFields['OP_OBJ_TYPE'] = ''; + break; */ + case 'DYNAFORM' : + $aFields ['DYNAFORMS'] = $aRows ['OP_OBJ_UID']; + break; + case 'INPUT' : + $aFields ['INPUTS'] = $aRows ['OP_OBJ_UID']; + break; + case 'OUTPUT' : + $aFields ['OUTPUTS'] = $aRows ['OP_OBJ_UID']; + break; + } + + $usersGroups = '' ); + $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_UID_OBJ' => $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); + } + } + + //new functions + public function getAllStepCount(){ + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } + + /* + * Return the steps list criteria object + * @param string $sTaskUID + * @return array + */ + public function getExtStepsCriteria($start, $limit, $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 ); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $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); + } + } + + //new functions + public function getAllStepTriggerCount() { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepTriggerPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } + + /* + * Return the steps trigger criteria array + * @param string $sTaskUID + * @return array + */ + function getExtStepTriggersCriteria($start, $limit, $sStepUID = '', $sTaskUID = '', $sType = '') + { + //$_SESSION['TASK'] = $sTaskUID; + $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 ); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $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 + */ + public function getExtAvailableStepTriggersCriteria($sProcessUID = '',$sStepUID = '', $sTaskUID = '', $sType = '') + { + try { + $_SESSION['TASK'] = $sTaskUID; + $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); + } + } + + //new functions + //deprecated + public function getAllDynaformCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = DynaformPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if (is_array($aRow)) { + return $aRow[0]; + } else { + return 0; + } + } + + /* + * Return the dynaforms list array + * @param string $sProcessUID + * @return object + */ + public function getExtDynaformsList($start, $limit, $sProcessUID = '') + { + //select the main fields for dynaform and the title and description from CONTENT Table + $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 ); + + //if we have pagination, we use it and limit the query + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $dynaformArray = array (); + $gridLabel = G::LoadTranslation( 'ID_GRID' ); + $normalLabel = G::LoadTranslation( 'ID_NORMAL' ); + + while ( $aRow = $oDataset->getRow () ) { + //this is a trick to copy the description and title from other language when the current language does not exist for this content row. + 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); + } + + if ( $aRow['DYN_TYPE'] == 'grid' ) $aRow['DYN_TYPE'] = $gridLabel; + if ( $aRow['DYN_TYPE'] == 'xmlform' ) $aRow['DYN_TYPE'] = $normalLabel; + $aRow['TAS_EDIT'] = 0; + $aRow['TAS_VIEW'] = 0; + $dynaformArray [] = $aRow; + $oDataset->next (); + } + $result = array(); + + //Now count how many times the dynaform was used in different tasks in VIEW mode, + $groupbyCriteria = new Criteria ( 'workflow' ); + $groupbyCriteria->clearSelectColumns(); + $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); + $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); + $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); + $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); + $groupbyCriteria->add(StepPeer::STEP_MODE, 'VIEW'); + $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); + $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + foreach ( $dynaformArray as $key => $val ) { + if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_VIEW'] = $aRow['COUNT(TAS_UID)'] ; + } + $oDataset->next (); + } + + //Now count how many times the dynaform was used in different tasks in EDIT mode, + $groupbyCriteria = new Criteria ( 'workflow' ); + $groupbyCriteria->clearSelectColumns(); + $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); + $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); + $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); + $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); + $groupbyCriteria->add(StepPeer::STEP_MODE, 'EDIT'); + $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); + $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + foreach ( $dynaformArray as $key => $val ) { + if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_EDIT'] = $aRow['COUNT(TAS_UID)'] ; + } + $oDataset->next (); + } + + //now query to get total dynaform for this process, + //$counCriteria is used to count how many dynaforms there are in this process + $countCriteria = new Criteria ( 'workflow' ); + $countCriteria->clearSelectColumns(); + $countCriteria->addSelectColumn('COUNT(*)'); + $countCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID ); + $oDataset = DynaformPeer::doSelectRS($countCriteria); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + $result['totalCount'] = $aRow[0]; + else + $result['totalCount'] = 0; + $result['data'] = $dynaformArray; + + return $result; + } + + + //new functions + public function getAllInputDocumentCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = InputDocumentPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the Input Documents list array + * @param string $sProcessUID + * @return object + */ + public function getExtInputDocumentsCriteria($start, $limit,$sProcessUID = '') + { + $aTasks = $this->getAllInputDocsByTask($sProcessUID); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_UID ); + $oCriteria->addSelectColumn ( InputDocumentPeer::PRO_UID ); + $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_VERSIONING ); + $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_DESTINATION_PATH ); + $oCriteria->addAsColumn ( 'INP_DOC_TITLE', 'C1.CON_VALUE' ); + $oCriteria->addAsColumn ( 'INP_DOC_DESCRIPTION', 'C2.CON_VALUE' ); + $oCriteria->addAlias ( 'C1', 'CONTENT' ); + $oCriteria->addAlias ( 'C2', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID' ); + $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); + $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $aConditions = array (); + $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID' ); + $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter ); + $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( InputDocumentPeer::PRO_UID, $sProcessUID ); + + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $inputDocArray = ""; + $inputDocArray [] = array ('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char' ); + while ( $aRow = $oDataset->getRow () ) { + if (($aRow ['INP_DOC_TITLE'] == NULL)||($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $inputDocument = new InputDocument ( ); + $inputDocumentObj = $inputDocument->load ( $aRow ['INP_DOC_UID'] ); + $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; + $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; + } + $aRow['INP_DOC_TASKS'] = isset($aTasks[$aRow ['INP_DOC_UID']]) ? $aTasks[$aRow ['INP_DOC_UID']] :0; + $inputDocArray [] = $aRow; + $oDataset->next (); + } + /*global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['inputDocArrayMain'] = $inputDocArray; + //$_SESSION ['_DBArray']['inputDocArrayMain'] = $_DBArray;*/ + + + return $inputDocArray; + } + + //new functions + public function getAllOutputDocumentCount(){ + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = OutputDocumentPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the Output Documents list array + * @param string $sProcessUID + * @return object + */ + public function getExtOutputDocumentsCriteria($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_TYPE ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::PRO_UID ); + $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C1.CON_VALUE' ); + $oCriteria->addAsColumn ( 'OUT_DOC_DESCRIPTION', 'C2.CON_VALUE' ); + $oCriteria->addAlias ( 'C1', 'CONTENT' ); + $oCriteria->addAlias ( 'C2', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID' ); + $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter ); + $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $aConditions = array (); + $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID' ); + $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter ); + $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID ); + + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $outputDocArray = array (); + $outputDocArray [] = array ('d' => 'char' ); + while ( $aRow = $oDataset->getRow () ) { + if (($aRow ['OUT_DOC_TITLE'] == NULL)||($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $outputDocument = new OutputDocument ( ); + $outputDocumentObj = $outputDocument->load ( $aRow ['OUT_DOC_UID'] ); + $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; + $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; + } + $outputDocArray [] = $aRow; + $oDataset->next (); + } + global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['outputDocArray'] = $outputDocArray; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass ( 'ArrayPeer' ); + $oCriteria = new Criteria ( 'dbarray' ); + $oCriteria->setDBArrayTable ( 'outputDocArray' ); + + return $outputDocArray; + } + + /** + * 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 + */ + public 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::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']; + $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; + $aRow ['PRO_TITLE'] = Content::load ( 'PRO_TITLE', '', $aRow ['PRO_UID'] , $lang ); + + 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; + $aRow [$i]['VAR_OUT1'] = $indice; + $aRow [$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 $aRow; + //return $aSubProcess; + + } catch ( Exception $oError ) { + throw ($oError); + } + } + + //new functions + public function getAllProcessSupervisorsCount(){ + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = ProcessUserPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /** + * listProcessesUser for Extjs + * + * @param string $sProcessUID + * @return array(aProcessUser) $aProcessUser + */ + public function listExtProcessesSupervisors($start, $limit,$sProcessUID) { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); + $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + $oDataset = ProcessUserPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aProcessUser = ''; + while ( $aRow = $oDataset->getRow () ) { + $aProcessUser [] = array ('PU_UID' => $aRow ['PU_UID'],'USR_UID' => $aRow ['USR_UID'],'PU_TYPE' => $aRow ['PU_TYPE'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME'],'USR_EMAIL' => $aRow ['USR_EMAIL']); + $oDataset->next (); + } + return $aProcessUser; + } + + /** + * listExtNoProcessesUser for Extjs + * + * @param string $sProcessUID + * @return array(aAvailableUser) $aAvailableUser + */ + public function listExtNoProcessesUser($sProcessUID) { + G::LoadSystem('rbac'); + $memcache = & PMmemcached::getSingleton(SYS_SYS); + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['USR_UID']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + $oRBAC = RBAC::getSingleton (); + while ($aRow = $oDataset->getRow()) { + $memKey = 'rbacSession' . session_id(); + if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { + $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); + $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); + } + $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; + $bInclude = false; + foreach ($aPermissions as $aPermission) { + if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { + $bInclude = true; + } + } + if ($bInclude) { + $aUIDS [] = $aRow ['USR_UID']; + } + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); + + $oDataset = UsersPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aAvailableUser = ''; + while ( $aRow = $oDataset->getRow () ) { + $aAvailableUser [] = array ('USR_UID' => $aRow ['USR_UID'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME']); + $oDataset->next (); + } + return $aAvailableUser; + } + + //new functions + public function getAllSupervisorDynaformsCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepSupervisorPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the supervisors dynaforms list array + * @param string $sProcessUID + * @return array + */ + public function getExtSupervisorDynaformsList($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $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(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aProcessDynaform = ''; + while ( $aRow = $oDataset->getRow () ) { + $aProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); + $oDataset->next (); + } + return $aProcessDynaform; + } + + /* + * Return the available supervisors dynaforms list array + * @param string $sProcessUID + * @return array + */ + public function getExtAvailableSupervisorDynaformsList($sProcessUID = '') + { + $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addSelectColumn(DynaformPeer::PRO_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_TYPE, 'xmlform'); + $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); + + $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aAvailableProcessDynaform = ''; + while ( $aRow = $oDataset->getRow () ) { + $aAvailableProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID']); + $oDataset->next (); + } + return $aAvailableProcessDynaform; + } + + //new functions + public function getAllSupervisorInputsCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepSupervisorPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the supervisors input document list array + * @param string $sProcessUID + * @return array + */ + public function getExtSupervisorInputsList($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $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(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aProcessInputDoc = ''; + while ( $aRow = $oDataset->getRow () ) { + $aProcessInputDoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); + $oDataset->next (); + } + return $aProcessInputDoc; + } + + /* + * Return the available supervisors input documents list array + * @param string $sProcessUID + * @return array + */ + public function getExtAvailableSupervisorInputsList($sProcessUID = '') + { + $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::PRO_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, $aUIDS, Criteria::NOT_IN); + $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aAvailableProcessIODoc = ''; + while ( $aRow = $oDataset->getRow () ) { + $aAvailableProcessIODoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID']); + $oDataset->next (); + } + return $aAvailableProcessIODoc; + } + + //new functions + public function getAllDbSourceCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = DbSourcePeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } + + /** + * listDBSConnection + * + * @param string $sProcessUID + * @return array(aDBList) $aDBList + */ + public function getExtCriteriaDBSList($start, $limit,$sProcessUID) + { + try { + $aDBList = array (); + //$aDBList [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' ); + $sDelimiter = DBAdapter::getStringDelimiter(); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_UID); + $oCriteria->addSelectColumn(DbSourcePeer::PRO_UID); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_TYPE); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_SERVER); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_DATABASE_NAME); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_USERNAME); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_PASSWORD); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_PORT); + $oCriteria->addAsColumn('DBS_DESCRIPTION', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions[] = array(DbSourcePeer::DBS_UID, 'C.CON_ID'); + $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'DBS_DESCRIPTION' . $sDelimiter); + $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); + + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + + $oDataset = DbSourcePeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + $aDBList [] = array ('DBS_UID' => $aRow ['DBS_UID'],'DBS_TYPE' => $aRow ['DBS_TYPE'],'DBS_SERVER' => $aRow ['DBS_SERVER'],'DBS_DATABASE_NAME' => $aRow ['DBS_DATABASE_NAME'],'DBS_USERNAME' => $aRow ['DBS_USERNAME'],'DBS_PASSWORD' => $aRow ['DBS_PASSWORD'],'DBS_DESCRIPTION' => $aRow ['DBS_DESCRIPTION'],'DBS_PORT' => $aRow ['DBS_PORT']); + $oDataset->next (); + } + return $aDBList; + } catch ( Exception $e ) { throw ($e); } } /** - * newExtObjectPermission - * - * @param string $sProcessUID - * @param string $sAction - * @return array depending on action - */ - function newExtObjectPermission($sProcessUID,$sAction) + * newExtObjectPermission + * + * @param string $sProcessUID + * @param string $sAction + * @return array depending on action + */ + public function newExtObjectPermission($sProcessUID,$sAction) { - $aAllTasks = array(); - $aAllTasks [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TaskPeer::PRO_UID); - $oCriteria->addSelectColumn(TaskPeer::TAS_UID); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); - $aConditions = array(); - $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); - $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllTasks [] = array('UID' => $aRow ['TAS_UID'], 'LABEL' => $aRow ['CON_VALUE']); - $oDataset->next(); - } - $aUsersGroups = array(); - $aUsersGroups [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); - $aConditions = array(); - $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); - $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsersGroups [] = array('UID' => '2|' . $aRow ['GRP_UID'], 'LABEL' => $aRow ['GRP_TITLE'] . ' (' . G::LoadTranslation('ID_GROUP') . ')'); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsersGroups [] = array('UID' => '1|' . $aRow ['USR_UID'], 'LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')'); - $oDataset->next(); - } - $aAllObjects = array(); - $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllDynaforms = array(); - $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllInputs = array(); - $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllOutputs = array(); - $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = $this->getDynaformsCriteria($sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; - $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); - $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); - $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); - $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - - switch($sAction){ - case 'tasks': - return $aAllTasks; - break; - case 'users': - return $aUsersGroups; - break; - case 'dynaform': - return $aAllDynaforms; - break; - case 'input': - return $aAllInputs; - break; - case 'output': - return $aAllOutputs; - break; - } - } - - function ExtcaseTracker($sProcessUID) { - $oCriteria = new Criteria ( ); - $oCriteria->add(CaseTrackerPeer::PRO_UID, $sProcessUID); - $oCaseTracker = new CaseTracker ( ); - if (CaseTrackerPeer::doCount($oCriteria) === 0) { - $aCaseTracker = array('PRO_UID' => $sProcessUID, 'CT_MAP_TYPE' => 'PROCESSMAP', 'CT_DERIVATION_HISTORY' => 1, 'CT_MESSAGE_HISTORY' => 1); - $oCaseTracker->create($aCaseTracker); - } else { - $aCaseTracker = $oCaseTracker->load($sProcessUID); - } - return $aCaseTracker; - /*global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'tracker/tracker_Configuration', '', $aCaseTracker, '../tracker/tracker_Save'); - G::RenderPage('publish', 'raw'); - return true;*/ - } - - //new functions - function getAllCaseTrackerObjectCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = CaseTrackerObjectPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /** - * getCaseTrackerObjectsCriteria - * - * @param string $sProcessUID - * @return object(Criteria) $oCriteria - */ - function getExtCaseTrackerObjectsCriteria($start, $limit,$sProcessUID) { - $aObjects = array(); - $aObjects [] = array('CTO_TITLE' => 'char', 'CTO_UID' => 'char', 'CTO_TYPE_OBJ' => 'char', 'CTO_UID_OBJ' => 'char', 'CTO_CONDITION' => 'char', 'CTO_POSITION' => 'integer'); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn(CaseTrackerObjectPeer::CTO_POSITION); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - try { - switch ($aRow ['CTO_TYPE_OBJ']) { - case 'DYNAFORM' : - $oDynaform = new Dynaform ( ); - $aFields = $oDynaform->load($aRow ['CTO_UID_OBJ']); - $sTitle = $aFields ['DYN_TITLE']; - break; - case 'INPUT_DOCUMENT' : - $oInputDocument = new InputDocument ( ); - $aFields = $oInputDocument->load($aRow ['CTO_UID_OBJ']); - $sTitle = $aFields ['INP_DOC_TITLE']; - break; - case 'OUTPUT_DOCUMENT' : - $oOutputDocument = new OutputDocument ( ); - $aFields = $oOutputDocument->load($aRow ['CTO_UID_OBJ']); - $sTitle = $aFields ['OUT_DOC_TITLE']; - break; + $aAllTasks = array(); + $aAllTasks [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TaskPeer::PRO_UID); + $oCriteria->addSelectColumn(TaskPeer::TAS_UID); + $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); + $aConditions = array(); + $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); + $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllTasks [] = array('UID' => $aRow ['TAS_UID'], 'LABEL' => $aRow ['CON_VALUE']); + $oDataset->next(); } - $aObjects [] = array('CTO_TITLE' => $sTitle, 'CTO_UID' => $aRow ['CTO_UID'], 'CTO_TYPE_OBJ' => $aRow ['CTO_TYPE_OBJ'], 'CTO_UID_OBJ' => $aRow ['CTO_UID_OBJ'], 'CTO_CONDITION' => $aRow ['CTO_CONDITION'], 'CTO_POSITION' => $aRow ['CTO_POSITION']); - } + $aUsersGroups = array(); + $aUsersGroups [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); + $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); + $aConditions = array(); + $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); + $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); + $oDataset = GroupwfPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsersGroups [] = array('UID' => '2|' . $aRow ['GRP_UID'], 'LABEL' => $aRow ['GRP_TITLE'] . ' (' . G::LoadTranslation('ID_GROUP') . ')'); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsersGroups [] = array('UID' => '1|' . $aRow ['USR_UID'], 'LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')'); + $oDataset->next(); + } + $aAllObjects = array(); + $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllDynaforms = array(); + $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllInputs = array(); + $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllOutputs = array(); + $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = $this->getDynaformsCriteria($sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; + $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); + $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); + $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); + $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - catch (Exception $oError) { //Nothing - } - $oDataset->next(); + switch($sAction){ + case 'tasks': + return $aAllTasks; + break; + case 'users': + return $aUsersGroups; + break; + case 'dynaform': + return $aAllDynaforms; + break; + case 'input': + return $aAllInputs; + break; + case 'output': + return $aAllOutputs; + break; + } } - // return $aObjects; - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['objects'] = $aObjects; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('objects'); - $oCriteria->addAscendingOrderByColumn('CTO_POSITION'); - return $aObjects; - } - - /** - * getAvailableCaseTrackerObjectsCriteria - * - * @param string $sProcessUID Default value empty - * @return object(Criteria) $oCriteria - */ - function getAvailableExtCaseTrackerObjects($sProcessUID = '') { - $oCriteria = $this->getCaseTrackerObjectsCriteria($sProcessUID); - $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aDynaformsUIDS = array(); - $aInputsUIDS = array(); - $aOutputsUIDS = array(); - while ($aRow = $oDataset->getRow()) { - switch ($aRow ['CTO_TYPE_OBJ']) { - case 'DYNAFORM' : - $aDynaformsUIDS [] = $aRow ['CTO_UID_OBJ']; - break; - case 'INPUT_DOCUMENT' : - $aInputsUIDS [] = $aRow ['CTO_UID_OBJ']; - break; - case 'OUTPUT_DOCUMENT' : - $aOutputsUIDS [] = $aRow ['CTO_UID_OBJ']; - break; - } - $oDataset->next(); + public function ExtcaseTracker($sProcessUID) + { + $oCriteria = new Criteria ( ); + $oCriteria->add(CaseTrackerPeer::PRO_UID, $sProcessUID); + $oCaseTracker = new CaseTracker ( ); + if (CaseTrackerPeer::doCount($oCriteria) === 0) { + $aCaseTracker = array('PRO_UID' => $sProcessUID, 'CT_MAP_TYPE' => 'PROCESSMAP', 'CT_DERIVATION_HISTORY' => 1, 'CT_MESSAGE_HISTORY' => 1); + $oCaseTracker->create($aCaseTracker); + } else { + $aCaseTracker = $oCaseTracker->load($sProcessUID); + } + return $aCaseTracker; } - $aAvailableObjects = array(); - $aAvailableObjects [] = array('OBJECT_UID' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT_TITLE' => '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_TYPE, 'xmlform'); - $oCriteria->add(DynaformPeer::DYN_UID, $aDynaformsUIDS, Criteria::NOT_IN); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['DYN_UID'], 'OBJECT_TYPE' => 'DYNAFORM', 'OBJECT_TITLE' => $aRow ['DYN_TITLE']); - $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, $aInputsUIDS, Criteria::NOT_IN); - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['INP_DOC_UID'], 'OBJECT_TYPE' => 'INPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['INP_DOC_TITLE']); - $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, $aOutputsUIDS, Criteria::NOT_IN); - - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['OUT_DOC_UID'], 'OBJECT_TYPE' => 'OUTPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['OUT_DOC_TITLE']); - $oDataset->next(); - } - return $aAvailableObjects; - /*global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['availableObjects'] = $aAvailableObjects; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('availableObjects'); - return $oCriteria;*/ - } //new functions - function getAllReportTableCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = ReportTablePeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - function getExtReportTables($start, $limit,$sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); - $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); - // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = ReportTablePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aReportTable[] = array('REP_TAB_UID' => $aRow ['REP_TAB_UID'], 'REP_TAB_TITLE' => $aRow['REP_TAB_TITLE']); - $oDataset->next(); - } - return $aReportTable; - } - - - function getExtAvailableUsersList($sTaskUID = '', $iType = 2) { - 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); + public function getAllCaseTrackerObjectCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = CaseTrackerObjectPeer::doSelectRS($c); $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 $_SESSION ['_DBArray']['availableUsers']; - } catch (Exception $oError) { - throw ($oError); - } - } + $aRow = $oDataset->getRow(); - -function getExtTaskUsersAdHocCriteria($start, $limit,$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); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $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(); + if ( is_array($aRow) ) { + return $aRow[0]; } else { - $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')'; + return 0; } - $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); - } - } - - - /** - * editObjectPermission - * - * @param string $sOP_UID - * @param string $sProcessUID - * @return void - */ - function editExtObjectPermission($sProcessUID , $sOP_UID ) { - - $oCriteria = new Criteria ( ); - $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); - $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRows = $oDataset->getRow(); - - $oCriteria = new Criteria ( ); - $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); - if (GroupwfPeer::doCount($oCriteria) == 1) - $user = '2|' . $aRows ['USR_UID']; - - $oCriteria = new Criteria ( ); - $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); - if (UsersPeer::doCount($oCriteria) == 1) - $user = '1|' . $aRows ['USR_UID']; - - - $aFields ['LANG'] = SYS_LANG; - $aFields ['OP_UID'] = $aRows ['OP_UID']; - $aFields ['PRO_UID'] = $aRows ['PRO_UID']; - $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; - $aFields ['TAS_UID'] = $aRows ['TAS_UID']; - $aFields ['OP_GROUP_USER'] = $user; - $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; - $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; - $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; - $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; - - - - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $aFields['TASK_TARGET_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['TAS_UID'] , $lang ); - $aFields['TASK_SOURCE_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['OP_TASK_SOURCE'] , $lang ); - $oUser = UsersPeer::retrieveByPK( $aRows ['USR_UID'] ); - if (!is_null($oUser)) - $aFields ['USR_FULLNAME'] = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname() ; - else - throw(new Exception( "The row '" . $aRows ['USR_UID'] . "' in table USER doesn't exist!" )); - - - switch ($aRows ['OP_OBJ_TYPE']) { - /* case 'ANY': - $aFields['OP_OBJ_TYPE'] = ''; - break; */ - case 'DYNAFORM' : - $aFields ['DYNAFORM'] = $aRows ['OP_OBJ_UID']; - $aFields ['DYNAFORM_NAME'] = Content::load ( 'DYN_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); - break; - case 'INPUT' : - $aFields ['INPUT'] = $aRows ['OP_OBJ_UID']; - $aFields ['INPUT_NAME'] = Content::load ( 'INP_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); - break; - case 'OUTPUT' : - $aFields ['OUTPUT'] = $aRows ['OP_OBJ_UID']; - $aFields ['OUTPUT_NAME'] = Content::load ( 'OUT_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); - break; } - return $aFields; - } + /** + * getCaseTrackerObjectsCriteria + * + * @param string $sProcessUID + * @return object(Criteria) $oCriteria + */ + public function getExtCaseTrackerObjectsCriteria($start, $limit,$sProcessUID) + { + $aObjects = array(); + $aObjects [] = array('CTO_TITLE' => 'char', 'CTO_UID' => 'char', 'CTO_TYPE_OBJ' => 'char', 'CTO_UID_OBJ' => 'char', 'CTO_CONDITION' => 'char', 'CTO_POSITION' => 'integer'); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(CaseTrackerObjectPeer::CTO_POSITION); + $this->tmpCriteria = clone $oCriteria; - - function getExtusersadhoc($start, $limit,$sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['iType'] = 2; - - $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'] . "'"; + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + try { + switch ($aRow ['CTO_TYPE_OBJ']) { + case 'DYNAFORM' : + $oDynaform = new Dynaform ( ); + $aFields = $oDynaform->load($aRow ['CTO_UID_OBJ']); + $sTitle = $aFields ['DYN_TITLE']; + break; + case 'INPUT_DOCUMENT' : + $oInputDocument = new InputDocument ( ); + $aFields = $oInputDocument->load($aRow ['CTO_UID_OBJ']); + $sTitle = $aFields ['INP_DOC_TITLE']; + break; + case 'OUTPUT_DOCUMENT' : + $oOutputDocument = new OutputDocument ( ); + $aFields = $oOutputDocument->load($aRow ['CTO_UID_OBJ']); + $sTitle = $aFields ['OUT_DOC_TITLE']; + break; + } + $aObjects [] = array('CTO_TITLE' => $sTitle, 'CTO_UID' => $aRow ['CTO_UID'], 'CTO_TYPE_OBJ' => $aRow ['CTO_TYPE_OBJ'], 'CTO_UID_OBJ' => $aRow ['CTO_UID_OBJ'], 'CTO_CONDITION' => $aRow ['CTO_CONDITION'], 'CTO_POSITION' => $aRow ['CTO_POSITION']); + } catch (Exception $oError) { //Nothing } - } - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $oTask = new Task ( ); - $aTask = $oTask->load($sTaskUID); - //$assignedUsers = getExtTaskUsersCriteria($sTaskUID, $_SESSION ['iType']); - $this->getExtTaskUsersAdHocCriteria ($start, $limit, $sTaskUID, $_SESSION ['iType'] ); - return $_SESSION ['_DBArray']['taskUsers']; - - } catch ( Exception $oError ) { - throw ($oError); + $oDataset->next(); + } + // return $aObjects; + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['objects'] = $aObjects; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('objects'); + $oCriteria->addAscendingOrderByColumn('CTO_POSITION'); + return $aObjects; } - } -function saveExtddEvents($oData) -{ - $oTask = new Task(); - $oEvent = new Event(); - $sEvn_uid = ''; - $aData = array(); - $aData['PRO_UID'] = $oData->uid; - $aData['EVN_TYPE'] = $oData->evn_type; - $aData['EVN_POSX'] = $oData->position->x; - $aData['EVN_POSY'] = $oData->position->y; + /** + * getAvailableCaseTrackerObjectsCriteria + * + * @param string $sProcessUID Default value empty + * @return object(Criteria) $oCriteria + */ + public function getAvailableExtCaseTrackerObjects($sProcessUID = '') + { + $oCriteria = $this->getCaseTrackerObjectsCriteria($sProcessUID); + $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aDynaformsUIDS = array(); + $aInputsUIDS = array(); + $aOutputsUIDS = array(); + while ($aRow = $oDataset->getRow()) { + switch ($aRow ['CTO_TYPE_OBJ']) { + case 'DYNAFORM' : + $aDynaformsUIDS [] = $aRow ['CTO_UID_OBJ']; + break; + case 'INPUT_DOCUMENT' : + $aInputsUIDS [] = $aRow ['CTO_UID_OBJ']; + break; + case 'OUTPUT_DOCUMENT' : + $aOutputsUIDS [] = $aRow ['CTO_UID_OBJ']; + break; + } + $oDataset->next(); + } + $aAvailableObjects = array(); + $aAvailableObjects [] = array('OBJECT_UID' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT_TITLE' => '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_TYPE, 'xmlform'); + $oCriteria->add(DynaformPeer::DYN_UID, $aDynaformsUIDS, Criteria::NOT_IN); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['DYN_UID'], 'OBJECT_TYPE' => 'DYNAFORM', 'OBJECT_TITLE' => $aRow ['DYN_TITLE']); + $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, $aInputsUIDS, Criteria::NOT_IN); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['INP_DOC_UID'], 'OBJECT_TYPE' => 'INPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['INP_DOC_TITLE']); + $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, $aOutputsUIDS, Criteria::NOT_IN); - $aData['EVN_STATUS'] = 'ACTIVE'; - $aData['EVN_WHEN'] = '1'; - $aData['EVN_ACTION'] = ''; - - if(preg_match("/Inter/", $aData['EVN_TYPE'])){ - $aData['EVN_RELATED_TO'] = 'MULTIPLE'; - } - if(preg_match("/Start/", $aData['EVN_TYPE'])){ - $aData['EVN_RELATED_TO'] = 'MULTIPLE'; - } - $sEvn_uid = $oData->evn_uid; - $oEventData = EventPeer::retrieveByPK($sEvn_uid); - if (is_null($oEventData)) { - $sEvn_uid = $oEvent->create($aData); - }else{ - $aData['EVN_UID'] = $sEvn_uid; - $oEvent->update($aData); - } - $oEncode->uid = $sEvn_uid; - $oJSON = new Services_JSON ( ); - return $oJSON->encode($oEncode); - } - - -function saveExtEvents($oData) -{ - $oTask = new Task(); - $oEvent = new Event(); - $sEvn_uid = ''; - $sEvn_type = $oData->evn_type; - $output = 0; - $aDataEvent = array(); - $aDataTask = array(); - $aDataEvent['EVN_UID'] = $oData->evn_uid; - $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; - $aDataEvent['EVN_TYPE'] = $oData->evn_type; - - if(preg_match("/Start/", $sEvn_type)){ - if(isset($oData->tas_uid) && $oData->tas_uid != '') { - $aDataTask['TAS_UID'] = $oData->tas_uid; - $aDataTask['TAS_START'] = $oData->tas_start; - $aDataTask['EVN_TYPE'] = $oData->evn_type; - $aDataTask['TAS_EVN_UID'] = $oData->evn_uid; - $oTask->update($aDataTask); - - $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_uid; - $output = $oEvent->update($aDataEvent); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['OUT_DOC_UID'], 'OBJECT_TYPE' => 'OUTPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['OUT_DOC_TITLE']); + $oDataset->next(); + } + return $aAvailableObjects; } - } - else if(preg_match("/Inter/", $sEvn_type)){ - $aDataEvent['EVN_TAS_UID_FROM'] = $oData->tas_from; - $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_to; - $output = $oEvent->update($aDataEvent); - } - return $output; -} + //new functions + public function getAllReportTableCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = ReportTablePeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); - //new functions - function getAllTriggersCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = TriggersPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } + public function getExtReportTables($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); + $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); + // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - /* - * Return the triggers list criteria object - * @param string $sProcessUID - * @return object - */ + $this->tmpCriteria = clone $oCriteria; - function getExtTriggersList($start, $limit, $sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); - $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $this->tmpCriteria = clone $oCriteria; - - $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') $oCriteria->setLimit($limit); - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $triggersArray = ""; - $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); - while ($aRow = $oDataset->getRow()) { - - if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label - $triggerO = new Triggers ( ); - $triggerObj = $triggerO->load($aRow ['TRI_UID']); - $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; - $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; - } - $triggersArray [] = $aRow; - $oDataset->next(); + $oDataset = ReportTablePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aReportTable[] = array('REP_TAB_UID' => $aRow ['REP_TAB_UID'], 'REP_TAB_TITLE' => $aRow['REP_TAB_TITLE']); + $oDataset->next(); + } + return $aReportTable; } - return $triggersArray; - } - function getAllInputDocsByTask($sPRO_UID){ - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn('COUNT(*) AS CNT'); - $oCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); - $oCriteria->add(StepPeer::STEP_TYPE_OBJ,'INPUT_DOCUMENT'); - $oCriteria->add(StepPeer::PRO_UID, $sPRO_UID); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $aIDocs = array(); - while ($oDataset->next()){ - $row = $oDataset->getRow(); - $aIDocs[$row['STEP_UID_OBJ']] = $row['CNT']; + public function getExtAvailableUsersList($sTaskUID = '', $iType = 2) { + 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); + $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 $_SESSION ['_DBArray']['availableUsers']; + } catch (Exception $oError) { + throw ($oError); + } } - return $aIDocs; - } - function getMaximunTaskX($processUid) { - $criteria = new Criteria('workflow'); - $criteria->addSelectColumn('MAX(TAS_POSX) AS MAX_X'); - $criteria->add(TaskPeer::PRO_UID, $processUid); - $dataset = TaskPeer::doSelectRS($criteria); - $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $dataset->next(); + public function getExtTaskUsersAdHocCriteria($start, $limit,$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); + $this->tmpCriteria = clone $oCriteria; - $row = $dataset->getRow(); + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $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']); + $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); + } + } - return (int)$row['MAX_X']; - } + /** + * editObjectPermission + * + * @param string $sOP_UID + * @param string $sProcessUID + * @return void + */ + public function editExtObjectPermission($sProcessUID , $sOP_UID ) + { + $oCriteria = new Criteria ( ); + $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRows = $oDataset->getRow(); + + $oCriteria = new Criteria ( ); + $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); + if (GroupwfPeer::doCount($oCriteria) == 1) { + $user = '2|' . $aRows ['USR_UID']; + } + + $oCriteria = new Criteria ( ); + $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); + if (UsersPeer::doCount($oCriteria) == 1) { + $user = '1|' . $aRows ['USR_UID']; + } + + $aFields ['LANG'] = SYS_LANG; + $aFields ['OP_UID'] = $aRows ['OP_UID']; + $aFields ['PRO_UID'] = $aRows ['PRO_UID']; + $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; + $aFields ['TAS_UID'] = $aRows ['TAS_UID']; + $aFields ['OP_GROUP_USER'] = $user; + $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; + $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; + $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; + $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; + + $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; + $aFields['TASK_TARGET_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['TAS_UID'] , $lang ); + $aFields['TASK_SOURCE_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['OP_TASK_SOURCE'] , $lang ); + $oUser = UsersPeer::retrieveByPK( $aRows ['USR_UID'] ); + if (!is_null($oUser)) + $aFields ['USR_FULLNAME'] = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname() ; + else + throw(new Exception( "The row '" . $aRows ['USR_UID'] . "' in table USER doesn't exist!" )); + + + switch ($aRows ['OP_OBJ_TYPE']) { + /* case 'ANY': + $aFields['OP_OBJ_TYPE'] = ''; + break; */ + case 'DYNAFORM' : + $aFields ['DYNAFORM'] = $aRows ['OP_OBJ_UID']; + $aFields ['DYNAFORM_NAME'] = Content::load ( 'DYN_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); + break; + case 'INPUT' : + $aFields ['INPUT'] = $aRows ['OP_OBJ_UID']; + $aFields ['INPUT_NAME'] = Content::load ( 'INP_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); + break; + case 'OUTPUT' : + $aFields ['OUTPUT'] = $aRows ['OP_OBJ_UID']; + $aFields ['OUTPUT_NAME'] = Content::load ( 'OUT_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); + break; + } + return $aFields; + } + + public function getExtusersadhoc($start, $limit,$sProcessUID = '', $sTaskUID = '') { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $_SESSION ['iType'] = 2; + + $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); + //$assignedUsers = getExtTaskUsersCriteria($sTaskUID, $_SESSION ['iType']); + $this->getExtTaskUsersAdHocCriteria ($start, $limit, $sTaskUID, $_SESSION ['iType'] ); + return $_SESSION ['_DBArray']['taskUsers']; + + } catch ( Exception $oError ) { + throw ($oError); + } + } + + public function saveExtddEvents($oData) + { + $oTask = new Task(); + $oEvent = new Event(); + $sEvn_uid = ''; + $aData = array(); + $aData['PRO_UID'] = $oData->uid; + $aData['EVN_TYPE'] = $oData->evn_type; + $aData['EVN_POSX'] = $oData->position->x; + $aData['EVN_POSY'] = $oData->position->y; + + $aData['EVN_STATUS'] = 'ACTIVE'; + $aData['EVN_WHEN'] = '1'; + $aData['EVN_ACTION'] = ''; + + if (preg_match("/Inter/", $aData['EVN_TYPE'])) { + $aData['EVN_RELATED_TO'] = 'MULTIPLE'; + } + if (preg_match("/Start/", $aData['EVN_TYPE'])) { + $aData['EVN_RELATED_TO'] = 'MULTIPLE'; + } + $sEvn_uid = $oData->evn_uid; + $oEventData = EventPeer::retrieveByPK($sEvn_uid); + if (is_null($oEventData)) { + $sEvn_uid = $oEvent->create($aData); + } else { + $aData['EVN_UID'] = $sEvn_uid; + $oEvent->update($aData); + } + $oEncode->uid = $sEvn_uid; + $oJSON = new Services_JSON ( ); + return $oJSON->encode($oEncode); + } + + public function saveExtEvents($oData) + { + $oTask = new Task(); + $oEvent = new Event(); + $sEvn_uid = ''; + $sEvn_type = $oData->evn_type; + $output = 0; + $aDataEvent = array(); + $aDataTask = array(); + $aDataEvent['EVN_UID'] = $oData->evn_uid; + $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; + $aDataEvent['EVN_TYPE'] = $oData->evn_type; + + if (preg_match("/Start/", $sEvn_type)) { + if (isset($oData->tas_uid) && $oData->tas_uid != '') { + $aDataTask['TAS_UID'] = $oData->tas_uid; + $aDataTask['TAS_START'] = $oData->tas_start; + $aDataTask['EVN_TYPE'] = $oData->evn_type; + $aDataTask['TAS_EVN_UID'] = $oData->evn_uid; + $oTask->update($aDataTask); + + $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_uid; + $output = $oEvent->update($aDataEvent); + } + } + else if (preg_match("/Inter/", $sEvn_type)) { + $aDataEvent['EVN_TAS_UID_FROM'] = $oData->tas_from; + $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_to; + $output = $oEvent->update($aDataEvent); + } + return $output; + } + + + //new functions + public function getAllTriggersCount() { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = TriggersPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the triggers list criteria object + * @param string $sProcessUID + * @return object + */ + public function getExtTriggersList($start, $limit, $sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); + $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $this->tmpCriteria = clone $oCriteria; + + $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $triggersArray = ""; + $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label + $triggerO = new Triggers ( ); + $triggerObj = $triggerO->load($aRow ['TRI_UID']); + $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; + $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; + } + $triggersArray [] = $aRow; + $oDataset->next(); + } + return $triggersArray; + } + + public function getAllInputDocsByTask($sPRO_UID) + { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn('COUNT(*) AS CNT'); + $oCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); + $oCriteria->add(StepPeer::STEP_TYPE_OBJ,'INPUT_DOCUMENT'); + $oCriteria->add(StepPeer::PRO_UID, $sPRO_UID); + $oDataset = StepPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aIDocs = array(); + while ($oDataset->next()){ + $row = $oDataset->getRow(); + $aIDocs[$row['STEP_UID_OBJ']] = $row['CNT']; + } + return $aIDocs; + } + + public function getMaximunTaskX ($processUid) + { + $criteria = new Criteria('workflow'); + $criteria->addSelectColumn('MAX(TAS_POSX) AS MAX_X'); + $criteria->add(TaskPeer::PRO_UID, $processUid); + + $dataset = TaskPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $dataset->next(); + + $row = $dataset->getRow(); + + return (int)$row['MAX_X']; + } } +