Files
luos/workflow/engine/classes/class.processMap.php

7000 lines
308 KiB
PHP
Raw Normal View History

2010-12-02 23:34:41 +00:00
<?php
/**
* class.processMap.php
2011-02-01 12:49:40 +00:00
* @package workflow.engine.ProcessMaker
2010-12-02 23:34:41 +00:00
*
* ProcessMaker Open Source Edition
2011-02-01 12:49:40 +00:00
* Copyright (C) 2004 - 2011 Colosa Inc.
2010-12-02 23:34:41 +00:00
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
2011-02-03 11:13:21 +00:00
*/
/**
2011-02-01 12:49:40 +00:00
* @package workflow.engine.ProcessMaker
2010-12-02 23:34:41 +00:00
*/
G::LoadThirdParty('pear/json', 'class.json');
G::LoadClass('groups');
G::LoadClass('tasks');
G::LoadClass('xmlfield_InputPM');
G::LoadClass('calendar');
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/CaseTracker.php';
require_once 'classes/model/CaseTrackerObject.php';
require_once 'classes/model/Configuration.php';
require_once 'classes/model/Content.php';
require_once 'classes/model/DbSource.php';
require_once 'classes/model/Dynaform.php';
require_once 'classes/model/Event.php';
require_once 'classes/model/Groupwf.php';
require_once 'classes/model/InputDocument.php';
require_once 'classes/model/ObjectPermission.php';
require_once 'classes/model/OutputDocument.php';
require_once 'classes/model/Process.php';
require_once 'classes/model/ProcessUser.php';
require_once 'classes/model/ReportTable.php';
require_once 'classes/model/Route.php';
require_once 'classes/model/CaseScheduler.php';
require_once 'classes/model/LogCasesScheduler.php';
require_once 'classes/model/Step.php';
require_once 'classes/model/StepSupervisor.php';
require_once 'classes/model/StepTrigger.php';
require_once 'classes/model/SubProcess.php';
require_once 'classes/model/SwimlanesElements.php';
require_once 'classes/model/Task.php';
require_once 'classes/model/TaskUser.php';
require_once 'classes/model/Triggers.php';
require_once 'classes/model/Users.php';
require_once 'classes/model/Gateway.php';
require_once 'classes/model/om/BaseUsers.php';
2010-12-02 23:34:41 +00:00
/**
* processMap - Process Map class
2011-02-03 11:13:21 +00:00
* @package workflow.engine.ProcessMaker
2010-12-02 23:34:41 +00:00
* @author Julio Cesar Laura Avendano
* @copyright 2007 COLOSA
*/
class processMap {
/*
* Load the process map data
* @param string $sProcessUID
* @param boolean $bView
* @param string $sApplicationUID
* @param integer $iDelegation
* @param string $sTask
* @return string
*/
2012-10-05 13:00:58 -04:00
public function load($sProcessUID, $bView = false, $sApplicationUID = '', $iDelegation = 0, $sTask = '', $bCT = false)
{
try {
$oProcess = new Process ( );
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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();
2010-12-02 23:34:41 +00:00
$oCriteria = new Criteria('workflow');
2012-10-05 13:00:58 -04:00
$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();
2010-12-02 23:34:41 +00:00
$oCriteria = new Criteria('workflow');
2012-10-05 13:00:58 -04:00
$oCriteria->add(RoutePeer::PRO_UID, $sProcessUID);
$oCriteria->add(RoutePeer::TAS_UID, $aRow1 ['TAS_UID']);
$oDataset2 = RoutePeer::doSelectRS($oCriteria);
2010-12-02 23:34:41 +00:00
$oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset2->next();
2012-10-05 13:00:58 -04:00
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();
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
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';
2010-12-02 23:34:41 +00:00
} else {
2012-10-05 13:00:58 -04:00
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';
2010-12-02 23:34:41 +00:00
}
}
}
}
$msg = array();
G::LoadClass('derivation');
$Derivation = new Derivation();
$users = $Derivation->getAllUsersFromAnyTask($aRow1 ['TAS_UID']);
$sw_error = false;
if (count($users) == 0) {
$sw_error = true;
$msg[] = G::LoadTranslation('ID_NO_USERS');
}
G::LoadClass('ArrayPeer');
$stepsCriteria = $this->getStepsCriteria($aRow1 ['TAS_UID']);
$oDatasetSteps = ArrayBasePeer::doSelectRS($stepsCriteria);
$oDatasetSteps->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDatasetSteps->next();
$countDynaform = 0;
$countOutput = 0;
$countInput = 0;
$countExternal = 0;
while ($aRowSteps = $oDatasetSteps->getRow()) {
switch ($aRowSteps ['STEP_TYPE_OBJ']) {
case 'DYNAFORM' :
$countDynaform++;
break;
case 'INPUT_DOCUMENT' :
$countInput++;
break;
case 'OUTPUT_DOCUMENT' :
$countOutput++;
break;
case 'EXTERNAL' :
$countExternal++;
break;
}
$oDatasetSteps->next();
}
$totalSteps = $countDynaform + $countInput + $countOutput + $countExternal;
if ($totalSteps == 0) {
$sw_error = true;
$msg[] = G::LoadTranslation('ID_TASK_NO_STEPS');
}
if ($sw_error) {
$oTask->statusIcons[] = array('label' => implode(",", $msg), 'icon' => '/images/alert.gif', 'message' => implode(", ", $msg), 'url' => '');
}
$oPM->task [] = $oTask;
$oDataset->next();
}
$oPM->executant [] = G::LoadTranslation('ID_RULES_AND_USER_GROUPS');
$oPM->executant [] = G::LoadTranslation('ID_ADD_USER_OF_TASK');
$oPM->tasExtra [0]->label = '-- ' . G::LoadTranslation('ID_END_OF_PROCESS') . ' --';
$oPM->tasExtra [0]->uid = 'end';
$oPM->tasExtra [1]->label = '-- ' . G::LoadTranslation('ID_TAREA_COLGANTE') . ' --';
$oPM->tasExtra [1]->uid = 'leaf';
$oPM->guide = array();
$oPM->text = array();
$oPM->statusIcons = array();
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(SwimlanesElementsPeer::SWI_UID);
// $oCriteria->addSelectColumn ( ContentPeer::CON_VALUE );
$oCriteria->addAsColumn("CON_VALUE", "CASE WHEN CONTENT.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE SWIMLANES_ELEMENTS.SWI_UID=A.CON_ID ) ELSE CONTENT.CON_VALUE END ");
$oCriteria->addSelectColumn(SwimlanesElementsPeer::SWI_TYPE);
$oCriteria->addSelectColumn(SwimlanesElementsPeer::SWI_X);
$oCriteria->addSelectColumn(SwimlanesElementsPeer::SWI_Y);
$aConditions = array();
$aConditions [] = array(0 => SwimlanesElementsPeer::SWI_UID, 1 => ContentPeer::CON_ID);
$aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'SWI_TEXT' . DBAdapter::getStringDelimiter ());
$aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ());
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID);
$oDataset = SwimlanesElementsPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
switch (strtolower($aRow ['SWI_TYPE'])) {
case 'line' :
$oGuide = null;
$oGuide->uid = $aRow ['SWI_UID'];
$oGuide->position = ($aRow ['SWI_X'] > 0 ? $aRow ['SWI_X'] : $aRow ['SWI_Y']);
$oGuide->direction = ($aRow ['SWI_X'] > 0 ? 'vertical' : 'horizontal');
$oPM->guide [] = $oGuide;
break;
case 'text' :
$oText = null;
$oText->uid = $aRow ['SWI_UID'];
$oText->label = strip_tags(($aRow ['CON_VALUE'] != '' ? str_replace(chr(92), '&#92;', str_replace('<', '&lt;', $aRow ['CON_VALUE'])) : '-'));
// $oText->label = '->' . $aRow ['CON_VALUE'] . '<-' ;
$oText->position->x = $aRow ['SWI_X'];
$oText->position->y = $aRow ['SWI_Y'];
$oPM->text [] = $oText;
break;
}
$oDataset->next();
}
$oPM->derivation = array('Sequential', 'Evaluate (manual)', 'Evaluate (auto)', 'Parallel (fork)', 'Parallel by evaluation (fork)', 'Parallel (sequential join)', 'Parallel (sequential main join)');
2011-02-11 11:39:57 +00:00
2011-01-18 22:14:46 +00:00
//Load extended task properties from plugin. By JHL Jan 18, 2011
$oPluginRegistry =& PMPluginRegistry::getSingleton();
2012-10-05 13:00:58 -04:00
$activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties();
2011-01-18 22:14:46 +00:00
$oPM->taskOptions = array();
foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){
2012-10-05 13:00:58 -04:00
$taskOption['title']=$taskPropertiesInfo->sName;
$taskOption['id']=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName;
$oPM->taskOptions[]=$taskOption;
2011-01-18 22:14:46 +00:00
}
2010-12-02 23:34:41 +00:00
$oJSON = new Services_JSON();
2010-12-02 23:34:41 +00:00
return $oJSON->encode($oPM);
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* Edit the Process Map information
* @param string $sProcessUID
* @return boolean
*/
public function editProcess($sProcessUID)
{
try {
$oProcess = new Process ();
2012-10-05 13:00:58 -04:00
if (!is_null($oProcess)) {
G::loadClass('processes');
$calendar = new Calendar();
$files = Processes::getProcessFiles($sProcessUID, 'mail');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$templates = array();
$templates[] = 'dummy';
2012-10-05 13:00:58 -04:00
foreach ($files as $file) {
$templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']);
}
2012-10-05 13:00:58 -04:00
$calendarObj = $calendar->getCalendarList(true, true);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
global $_DBArray;
$_DBArray['_TEMPLATES1'] = $templates;
$_DBArray['availableCalendars'] = $calendarObj['array'];
$_SESSION ['_DBArray'] = $_DBArray;
2012-10-05 13:00:58 -04:00
$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);
2012-10-05 13:00:58 -04:00
//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;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_Edit', '', $aFields, 'processes_Save');
G::RenderPage('publish', 'raw');
2010-12-02 23:34:41 +00:00
return true;
}
else {
throw (new Exception('This row doesn\'t exist!'));
2010-12-02 23:34:41 +00:00
}
}
2012-10-05 13:00:58 -04:00
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) {
2010-12-02 23:34:41 +00:00
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* Return the steps list criteria object
* @param string $sTaskUID
* @return array
*/
public function getStepsCriteria($sTaskUID = '')
{
2010-12-02 23:34:41 +00:00
try {
2012-10-05 13:00:58 -04:00
//call plugin
$oPluginRegistry = &PMPluginRegistry::getSingleton ();
$externalSteps = $oPluginRegistry->getSteps();
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$aSteps = array();
$aSteps [] = array('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer');
2010-12-02 23:34:41 +00:00
$oCriteria = new Criteria('workflow');
2012-10-05 13:00:58 -04:00
$oCriteria->add(StepPeer::TAS_UID, $sTaskUID);
$oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
$oDataset = StepPeer::doSelectRS($oCriteria);
2010-12-02 23:34:41 +00:00
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
2012-10-05 13:00:58 -04:00
$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->getByUid($aRow ['STEP_UID_OBJ']);
if ( $aFields === false )
continue;
$sTitle = $aFields ['INP_DOC_TITLE'];
break;
case 'OUTPUT_DOCUMENT' :
$oOutputDocument = new OutputDocument ( );
$aFields = $oOutputDocument->getByUid($aRow ['STEP_UID_OBJ']);
if ( $aFields === false )
continue;
$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']);
2010-12-02 23:34:41 +00:00
$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;
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* 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 ();
2010-12-02 23:34:41 +00:00
$oCriteria = new Criteria('workflow');
2012-10-05 13:00:58 -04:00
$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
*/
public function getAvailableBBCriteria($sProcessUID = '', $sTaskUID = '')
{
try {
$oTasks = new Tasks ( );
$aSteps = $oTasks->getStepsOfTask($sTaskUID);
$sUIDs = array();
foreach ($aSteps as $aStep) {
$sUIDs [] = $aStep ['STEP_UID_OBJ'];
BUG 7225 "Existe un problema al adicionar una tarea" SOLVED - Al adicionar una tarea en un proceso en un determinado idioma no toma en cuenta la numeracion correspondiente - En el idioma ingles e adicionan dos tareas en un proceso, luego se cambia al idioma españal adicionar una tarea esta se agrega con la etiqueta "Tarea 2", lo correcto era "Tarea 3" - Se cambio el algoritmo de generacion de la etiqueta para una tarea, el algoritmo toma en cuenta la numeracion de las tareas no importando el idioma, tambien el algoritmo toma en cuenta el formato de la etiqueta de una tarea (G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber), se debe tener en cuenta que el idioma por defecto es el ingles (en) el cual tiene mayor prioridad que los otros idiomas. Tomar en cuenta los siguientes casos: * Se crea un nuevo proceso Idioma ingles se adicionan dos tareas -> "Task 1", "Task 2" (2 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task 1", "Task 2", "Tarea 3" * Se crea un nuevo proceso Idioma ingles se tienen las siguientes tareas -> "Task 4", "Task 5", "Task 6" (3 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task 4", "Task 5", "Task 6", "Tarea 7" * Se crea un nuevo proceso Idioma ingles se tienen las siguientes tareas -> "Task One", "Task Two", "Task 4" (3 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task One", "Task Two", "Task 4", "Tarea 5" * Se crea un nuevo proceso Idioma ingles se tienen las siguientes tareas -> "Task One", "Task 2", "Task Two", "Task Three" (4 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task One", "Task 2", "Task Two", "Task Three", "Tarea 5"
2012-04-19 10:28:02 -04:00
}
2012-10-05 13:00:58 -04:00
$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' => '<select id="STEP_MODE_' . $aRow ['DYN_UID'] . '">
<option value="EDIT">Edit</option>
<option value="VIEW">View</option>
</select>');
$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' => '<input type="hidden" id="STEP_MODE_' . $aRow ['INP_DOC_UID'] . '">');
$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' => '<input type="hidden" id="STEP_MODE_' . $aRow ['OUT_DOC_UID'] . '">');
$oDataset->next();
BUG 7225 "Existe un problema al adicionar una tarea" SOLVED - Al adicionar una tarea en un proceso en un determinado idioma no toma en cuenta la numeracion correspondiente - En el idioma ingles e adicionan dos tareas en un proceso, luego se cambia al idioma españal adicionar una tarea esta se agrega con la etiqueta "Tarea 2", lo correcto era "Tarea 3" - Se cambio el algoritmo de generacion de la etiqueta para una tarea, el algoritmo toma en cuenta la numeracion de las tareas no importando el idioma, tambien el algoritmo toma en cuenta el formato de la etiqueta de una tarea (G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber), se debe tener en cuenta que el idioma por defecto es el ingles (en) el cual tiene mayor prioridad que los otros idiomas. Tomar en cuenta los siguientes casos: * Se crea un nuevo proceso Idioma ingles se adicionan dos tareas -> "Task 1", "Task 2" (2 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task 1", "Task 2", "Tarea 3" * Se crea un nuevo proceso Idioma ingles se tienen las siguientes tareas -> "Task 4", "Task 5", "Task 6" (3 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task 4", "Task 5", "Task 6", "Tarea 7" * Se crea un nuevo proceso Idioma ingles se tienen las siguientes tareas -> "Task One", "Task Two", "Task 4" (3 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task One", "Task Two", "Task 4", "Tarea 5" * Se crea un nuevo proceso Idioma ingles se tienen las siguientes tareas -> "Task One", "Task 2", "Task Two", "Task Three" (4 tareas) se cambia a españy se adiciona una tarea, se tienen -> "Task One", "Task 2", "Task Two", "Task Three", "Tarea 5"
2012-04-19 10:28:02 -04:00
}
2012-10-05 13:00:58 -04:00
//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' => '<input type="hidden" id="STEP_MODE_' . $stepVar->sStepId . '">');
}
}
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);
}
2012-10-05 13:00:58 -04:00
}
2012-10-05 13:00:58 -04:00
/*
* 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'] . "'";
}
}
2012-10-05 13:00:58 -04:00
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$oTask = new Task ( );
$aTask = $oTask->load($sTaskUID);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
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);
}
2010-12-02 23:34:41 +00:00
2012-10-09 09:47:25 -04:00
<<<<<<< HEAD
2012-10-05 13:00:58 -04:00
G::RenderPage('publish', 'raw');
return true;
} catch (Exception $oError) {
throw ($oError);
2012-10-09 09:47:25 -04:00
=======
2010-12-02 23:34:41 +00:00
//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'] : "";
}
if ($iForm == 2) {
if ($aFields['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE' && $aFields['TAS_GROUP_VARIABLE'] != '') {
$aFields['TAS_ASSIGN_TYPE'] = 'SELF_SERVICE_EVALUATE';
}
}
2010-12-02 23:34:41 +00:00
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);
2012-10-09 09:47:25 -04:00
>>>>>>> upstream/master
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$_SESSION ['iType'] = 2;
2012-10-05 13:00:58 -04:00
$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 ( );
2012-10-05 13:00:58 -04:00
$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'] . "'";
}
}
2012-10-05 13:00:58 -04:00
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$oTask = new Task ( );
$aTask = $oTask->load($sTaskUID);
2012-10-05 13:00:58 -04:00
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortListAdhoc', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields);
2011-02-12 13:04:17 +00:00
2012-10-05 13:00:58 -04:00
G::RenderPage('publish', 'raw');
return true;
} catch (Exception $oError) {
throw ($oError);
}
2011-02-12 13:04:17 +00:00
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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'] = '<strong>(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')</strong>';
}
$aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' <a href="#" onclick="usersGroup(\'' . $aRow ['USR_UID'] . '\', \'' . $c . '\');return false;"><font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')</strong></font></a> <br /><div id="users' . $c . '" style="display: none"></div>' : $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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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'] .' <a href="#" onclick="usersGroup(\'' . $results ['GRP_UID'] . '\', \'' . $c . '\');return false;"><font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')</strong></font></a> <br /><div id="users' . $c . '" style="display: none"></div>', '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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* Conditions of the steps
* @param string $sProcessUID
* @param string $sTaskUID
* @return boolean
*/
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
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;
}
}
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
if ($numMaxLang > 0) {
$numMax = $numMaxLang;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
if ($numMax > 0 && $numMax > $iTaskNumber) {
$iTaskNumber = $numMax + 1;
} else {
$iTaskNumber = $iTaskNumber + 1;
}
} else {
$iTaskNumber = 1;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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();
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
return $oJSON->encode($oNewTask);
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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']);
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
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'];
}
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
if ($iForm == 3) { //Load Calendar Information
$calendar = new Calendar ( );
$calendarObj = $calendar->getCalendarList(true, true);
2012-10-05 13:00:58 -04:00
global $_DBArray;
2012-10-05 13:00:58 -04:00
$_DBArray ['availableCalendars'] = $calendarObj ['array'];
2012-10-05 13:00:58 -04:00
$_SESSION ['_DBArray'] = $_DBArray;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
//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);
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
G::RenderPage('publish', 'raw');
return true;
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$aFields ['TAS_UID'] = $sTaskUID;
$aFields ['TAS_POSX'] = $iX;
$aFields ['TAS_POSY'] = $iY;
return $oTask->update($aFields);
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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();
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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($oNewText);
} catch (Exception $oError) {
throw ($oError);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$aFields ['GAT_UID'] = $sGatewayUID;
$aFields ['GAT_X'] = $iX;
$aFields ['GAT_Y'] = $iY;
return $oGateway->update($aFields);
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
return $oCriteria;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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();
}
2010-12-02 23:34:41 +00:00
global $_DBArray;
2012-10-05 13:00:58 -04:00
$_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : '');
$_DBArray ['inputDocArrayMain'] = $inputDocArray;
$_SESSION ['_DBArray'] = $_DBArray;
2010-12-02 23:34:41 +00:00
G::LoadClass('ArrayPeer');
$oCriteria = new Criteria('dbarray');
2012-10-05 13:00:58 -04:00
$oCriteria->setDBArrayTable('inputDocArrayMain');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
return $oCriteria;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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');
2011-02-11 11:39:57 +00:00
2012-10-05 13:00:58 -04:00
$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;
2010-12-02 23:34:41 +00:00
}
2011-02-11 11:39:57 +00:00
2012-10-05 13:00:58 -04:00
/*
* Return the triggers list in a array
* @param string $sProcessUID
* @return array
*/
public function getTriggers($sProcessUID = '')
{
$aTriggers = Array();
$oCriteria = $this->getTriggersCriteria($sProcessUID);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$oDataset = RoutePeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
while ($oDataset->next()) {
array_push($aTriggers, $oDataset->getRow());
}
return $aTriggers;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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 = "<iframe WIDTH=820 HEIGHT=530 FRAMEBORDER=0 src='" . $schedulerPath .'?PRO_UID=' .$sProcessUID. "'></iframe>";
echo $html;
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$_DBArray['log_cases_scheduler'] = $aRows;
$_SESSION['_DBArray'] = $_DBArray;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$oCriteria = new Criteria('dbarray');
$oCriteria->setDBArrayTable('log_cases_scheduler');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
/*
* 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();
2010-12-02 23:34:41 +00:00
if (is_array($aRow)) {
$aFields ['ROU_TYPE'] = $aRow ['ROU_TYPE'];
$aFields ['ROU_TYPE_OLD'] = $aRow ['ROU_TYPE'];
switch ($aRow ['ROU_TYPE']) {
case 'SEQUENTIAL' :
case 'SEC-JOIN' :
$aFields ['ROU_UID'] = $aRow ['ROU_UID'];
$aFields ['ROU_NEXT_TASK'] = $aRow ['ROU_NEXT_TASK'];
$aFields ['ROU_TO_LAST_USER'] = $aRow ['ROU_TO_LAST_USER'];
if ($aRow ['ROU_TYPE'] == 'SEQUENTIAL') {
$sXmlform = 'patterns_Sequential';
} else {
$sXmlform = 'patterns_ParallelJoin';
}
break;
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();
}
$sXmlform = 'patterns_Select';
break;
case 'EVALUATE' :
G::LoadClass('xmlfield_InputPM');
$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();
}
$sXmlform = 'patterns_Evaluate';
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();
}
$sXmlform = 'patterns_Parallel';
break;
case 'PARALLEL-BY-EVALUATION' :
G::LoadClass('xmlfield_InputPM');
$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'];
$aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL'];
2010-12-02 23:34:41 +00:00
$oDataset->next();
}
$sXmlform = 'patterns_ParallelByEvaluation';
break;
case 'DISCRIMINATOR' :
G::LoadClass ( 'xmlfield_InputPM' );
$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'];
G::LoadClass('tasks');
$oTasks = new Tasks();
$routeData = $oTasks->getRouteByType($sProcessUID, $aRow['ROU_NEXT_TASK'], $aRow['ROU_TYPE']);
$aFields['ROUTE_COUNT'] = count($routeData);
$sXmlform = 'patterns_Discriminator';
break;
default:
throw new Exception(G::loadTranslation('ID_INVALID_ROU_TYPE_DEFINITION_ON_ROUTE_TABLE'));
break;
2010-12-02 23:34:41 +00:00
}
}
2012-10-05 13:00:58 -04:00
$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;
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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 {
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
}
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);
2010-12-02 23:34:41 +00:00
}
}
2012-10-05 13:00:58 -04:00
/**
* 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);
}
}
2012-10-05 13:00:58 -04:00
/**
* 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;
$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);
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$aFields ['GAT_UID'] = (isset($sGatewayUID))?$sGatewayUID:'';
$oRoute = new Route ( );
$oRoute->create($aFields);
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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;
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;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$oGateway = new Gateway ( );
$sGatewayUID = $oGateway->create($aFields);
return $sGatewayUID;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
} catch (Exception $oError) {
throw ($oError);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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();
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
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;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* 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 ( );
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
if (G::is_https ())
$http = 'https://';
else
$http = 'http://';
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$link = $http . $_SERVER ['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sProcessUID . '/';
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$row = array();
$c = 0;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
$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']);
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." **** <hr>";
if ($archivo != '.') {
if ($archivo != '..') {
$one = 0;
$two = 0;
$alink = $link . $archivo;
$one = count(explode('wsClient.php', $archivo));
$two = count(explode('Post.php', $archivo));
if ($one == 1 && $two == 1) {
$arlink = "<a href='" . $alink . "' target='blank'><font color='#9999CC'>" . $alink . "</font></a>";
$linkdelete = sprintf("<a href='javascript:webEntry_delete(\"%s\",\"%s\",\"%s\");'><font color='red'>delete</font></a>", $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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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;
}
/*
* 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);
}
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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)));
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* 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);
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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')
);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
// 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);
2010-12-02 23:34:41 +00:00
2012-10-09 09:47:25 -04:00
<<<<<<< HEAD
2012-10-05 13:00:58 -04:00
$oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR');
$oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID);
$oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
2012-10-09 09:47:25 -04:00
=======
2010-12-02 23:34:41 +00:00
/**
* 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();
2012-10-09 09:47:25 -04:00
>>>>>>> upstream/master
2012-10-05 13:00:58 -04:00
$oDataset = ProcessUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
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();
}
2012-10-05 13:00:58 -04:00
// 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;
}
2012-10-05 13:00:58 -04:00
/**
* listNoProcessesUser
*
* @param string $sProcessUID
* @return object(Criteria) $oCriteria
*/
public function listNoProcessesUser($sProcessUID)
{
G::LoadSystem('rbac');
$memcache = & PMmemcached::getSingleton(SYS_SYS);
2012-10-05 13:00:58 -04:00
$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();
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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 ());
2012-10-09 09:47:25 -04:00
<<<<<<< HEAD
2012-10-05 13:00:58 -04:00
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$oCriteria->add(GroupwfPeer::GRP_UID, $aGRUS, Criteria::NOT_IN);
2012-10-09 09:47:25 -04:00
=======
$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 ());
2012-10-09 09:47:25 -04:00
$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();
>>>>>>> upstream/master
2012-10-05 13:00:58 -04:00
$oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
$oDataset = GroupwfPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
2012-10-05 13:00:58 -04:00
while ($aRow = $oDataset->getRow()) {
$aRespLi[] = array( 'UID' => $aRow['GRP_UID'],
'USER_GROUP' => $aRow['GRP_TITLE'],
'TYPE_UID' => 'Group',
'PRO_UID' => $sProcessUID);
$oDataset->next();
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
$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();
2012-10-05 13:00:58 -04:00
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();
}
2012-10-05 13:00:58 -04:00
global $_DBArray;
$_DBArray['data'] = $aRespLi;
$_SESSION['_DBArray'] = $_DBArray;
$LsCriteria = new Criteria('dbarray');
$LsCriteria->setDBArrayTable('data');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
return $LsCriteria;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* 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);
}
2010-12-02 23:34:41 +00:00
/**
* getObjectsPermissionsCriteria
*
* @param string $sProcessUID
* @return object(Criteria) $oCriteria
*/
function getObjectsPermissionsCriteria($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);
$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
if ($aRow ['OP_USER_RELATION'] == 1) {
$oUser = new Users ( );
$aFields = $oUser->load($aRow ['USR_UID']);
$sUserGroup = $aFields ['USR_FIRSTNAME'] . ' ' . $aFields ['USR_LASTNAME'] . ' (' . $aFields ['USR_USERNAME'] . ')';
} else {
$oGroup = new Groupwf ( );
if ($aRow ['USR_UID'] != '') {
try {
$aFields = $oGroup->load($aRow ['USR_UID']);
$sUserGroup = $aFields ['GRP_TITLE'];
} catch (Exception $oError) {
$sUserGroup = '(GROUP DELETED)';
}
} else {
$sUserGroup = G::LoadTranslation('ID_ANY');
}
}
//Obtain task source
if (($aRow ['OP_TASK_SOURCE'] != '') && ($aRow ['OP_TASK_SOURCE'] != '0')) {
try {
$oTask = new Task ( );
$aFields = $oTask->load($aRow ['OP_TASK_SOURCE']);
$sTaskSource = $aFields ['TAS_TITLE'];
} catch (Exception $oError) {
$sTaskSource = 'All Tasks';
}
} else {
$sTaskSource = G::LoadTranslation('ID_ANY_TASK');
}
//Obtain object and type
switch ($aRow ['OP_OBJ_TYPE']) {
case 'ALL' :
2010-12-02 23:34:41 +00:00
$sObjectType = G::LoadTranslation('ID_ALL');
$sObject = G::LoadTranslation('ID_ALL');
2011-02-11 11:39:57 +00:00
break;
case 'ANY' ://For backward compatibility (some process with ANY instead of ALL
$sObjectType = G::LoadTranslation('ID_ALL');
$sObject = G::LoadTranslation('ID_ALL');
break;
/* case 'ANY_DYNAFORM':
$sObjectType = G::LoadTranslation('ID_ANY_DYNAFORM');
$sObject = G::LoadTranslation('ID_ALL');
break;
case 'ANY_INPUT':
$sObjectType = G::LoadTranslation('ID_ANY_INPUT');
$sObject = G::LoadTranslation('ID_ALL');
break;
case 'ANY_OUTPUT':
$sObjectType = G::LoadTranslation('ID_ANY_OUTPUT');
$sObject = G::LoadTranslation('ID_ALL');
break; */
2010-12-02 23:34:41 +00:00
case 'DYNAFORM' :
$sObjectType = G::LoadTranslation('ID_DYNAFORM');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oDynaform = new Dynaform ( );
$aFields = $oDynaform->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['DYN_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
case 'INPUT' :
$sObjectType = G::LoadTranslation('ID_INPUT_DOCUMENT');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oInputDocument = new InputDocument ( );
$aFields = $oInputDocument->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['INP_DOC_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
case 'OUTPUT' :
$sObjectType = G::LoadTranslation('ID_OUTPUT_DOCUMENT');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oOutputDocument = new OutputDocument ( );
$aFields = $oOutputDocument->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['OUT_DOC_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
2012-10-09 09:47:25 -04:00
case 'CASES_NOTES' :
$sObjectType = G::LoadTranslation('ID_CASES_NOTES');
$sObject = G::LoadTranslation('ID_ALL');
break;
default :
$sObjectType = G::LoadTranslation('ID_ALL');
$sObject = G::LoadTranslation('ID_ALL');
break;
2010-12-02 23:34:41 +00:00
}
//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();
}
global $_DBArray;
$_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : '');
$_DBArray ['objectsPermissions'] = $aObjectsPermissions;
$_SESSION ['_DBArray'] = $_DBArray;
G::LoadClass('ArrayPeer');
$oCriteria = new Criteria('dbarray');
$oCriteria->setDBArrayTable('objectsPermissions');
return $oCriteria;
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllObjectPermissionCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = ObjectPermissionPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) ) {
return $aRow[0];
} else {
return 0;
}
2012-10-05 13:00:58 -04:00
}
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
if ($aRow ['OP_USER_RELATION'] == 1) {
$oUser = new Users ( );
$aFields = $oUser->load($aRow ['USR_UID']);
$sUserGroup = $aFields ['USR_FIRSTNAME'] . ' ' . $aFields ['USR_LASTNAME'] . ' (' . $aFields ['USR_USERNAME'] . ')';
} else {
$oGroup = new Groupwf ( );
if ($aRow ['USR_UID'] != '') {
try {
$aFields = $oGroup->load($aRow ['USR_UID']);
$sUserGroup = $aFields ['GRP_TITLE'];
} catch (Exception $oError) {
$sUserGroup = '(GROUP DELETED)';
}
} else {
$sUserGroup = G::LoadTranslation('ID_ANY');
}
}
//Obtain task source
if (($aRow ['OP_TASK_SOURCE'] != '') && ($aRow ['OP_TASK_SOURCE'] != '0')) {
try {
$oTask = new Task ( );
$aFields = $oTask->load($aRow ['OP_TASK_SOURCE']);
$sTaskSource = $aFields ['TAS_TITLE'];
} catch (Exception $oError) {
$sTaskSource = 'All Tasks';
}
} else {
$sTaskSource = G::LoadTranslation('ID_ANY_TASK');
}
//Obtain object and type
switch ($aRow ['OP_OBJ_TYPE']) {
case 'ALL' :
$sObjectType = G::LoadTranslation('ID_ALL');
$sObject = G::LoadTranslation('ID_ALL');
2011-02-11 11:39:57 +00:00
break;
case 'DYNAFORM' :
$sObjectType = G::LoadTranslation('ID_DYNAFORM');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oDynaform = new Dynaform ( );
$aFields = $oDynaform->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['DYN_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
case 'INPUT' :
$sObjectType = G::LoadTranslation('ID_INPUT_DOCUMENT');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oInputDocument = new InputDocument ( );
$aFields = $oInputDocument->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['INP_DOC_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
case 'OUTPUT' :
$sObjectType = G::LoadTranslation('ID_OUTPUT_DOCUMENT');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oOutputDocument = new OutputDocument ( );
$aFields = $oOutputDocument->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['OUT_DOC_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
}
2012-10-05 13:00:58 -04:00
//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;
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* objectsPermissionsList
*
* @param string $sProcessUID
* @return boolean true
*/
public 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;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* newObjectPermission
*
* @param string $sProcessUID
* @return boolean true
*/
public function newObjectPermission($sProcessUID)
{
$usersGroups = '<select pm:dependent="0" pm:label="' . G::LoadTranslation('ID_GROUP_USERS') . '" name="form[GROUP_USER]" id="form[GROUP_USER]" class="module_app_input___gray">';
$start = '';
$limit = '';
$filter = '';
$groups = new Groupwf();
$result = $groups->getAllGroup($start,$limit,$filter);
if (count($result['rows']) > 0) {
$usersGroups .= '<optgroup label="' . G::LoadTranslation('ID_GROUPS') . '">';
foreach ($result['rows'] as $results) {
$usersGroups .= '<option value="2|' . $results ['GRP_UID'] . '">' . htmlentities($results ['GRP_TITLE'], ENT_QUOTES, 'UTF-8') . '</option>';
}
$usersGroups .= '</optgroup>';
}
$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->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME);
$oCriteria->addAscendingOrderByColumn(UsersPeer::USR_LASTNAME);
$oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE');
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
2012-10-05 13:00:58 -04:00
if ($oDataset->getRecordCount() > 0) {
$usersGroups .= '<optgroup label="' . G::LoadTranslation('ID_USERS') . '">';
while ($aRow = $oDataset->getRow()) {
$usersGroups .= '<option value="1|' . $aRow ['USR_UID'] . '">' . htmlentities($aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')', ENT_QUOTES, 'UTF-8') . '</option>';
$oDataset->next();
}
$usersGroups .= '</optgroup>';
}
$usersGroups .= '</select>';
$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();
2012-10-05 13:00:58 -04:00
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();
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
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;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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;
}
2012-10-05 13:00:58 -04:00
$usersGroups = '<select pm:dependent="0" pm:label="' . G::LoadTranslation('ID_GROUP_USERS') . '" name="form[GROUP_USER]" id="form[GROUP_USER]" class="module_app_input___gray">';
$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');
$oCriteria->addAscendingOrderByColumn('GRP_TITLE');
$oDataset = GroupwfPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
if ($oDataset->getRecordCount() > 0) {
$usersGroups .= '<optgroup label="' . G::LoadTranslation('ID_GROUPS') . '">';
while ($aRow = $oDataset->getRow()) {
$usersGroups .= '<option value="2|' . $aRow ['GRP_UID'] . '"' . ('2|' . $aRow ['GRP_UID'] == $user ? ' selected="selected"' : '') . '>' . htmlentities($aRow ['GRP_TITLE'], ENT_QUOTES, 'UTF-8') . '</option>';
$oDataset->next();
}
$usersGroups .= '</optgroup>';
}
$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');
$oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME);
$oCriteria->addAscendingOrderByColumn(UsersPeer::USR_LASTNAME);
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
if ($oDataset->getRecordCount() > 0) {
$usersGroups .= '<optgroup label="' . G::LoadTranslation('ID_USERS') . '">';
while ($aRow = $oDataset->getRow()) {
$usersGroups .= '<option value="1|' . $aRow ['USR_UID'] . '"' . ('1|' . $aRow ['USR_UID'] == $user ? ' selected="selected"' : '') . '>' . htmlentities($aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')', ENT_QUOTES, 'UTF-8') . '</option>';
$oDataset->next();
}
$usersGroups .= '</optgroup>';
}
2012-10-05 13:00:58 -04:00
$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');
//dynaforms
$oCriteria = $this->getDynaformsCriteria($aRows ['PRO_UID']);
$oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM');
$oDataset = DynaformPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$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();
}
//inputs
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();
}
//outputs
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;
2012-10-05 13:00:58 -04:00
$aFields['GROUP_USER'] = $usersGroups;
$aFields['ID_DELETE'] = G::LoadTranslation('ID_DELETE');
2012-10-05 13:00:58 -04:00
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_EditObjectPermission', '', $aFields, 'processes_SaveEditObjectPermission');
G::RenderPage('publish', 'raw');
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* caseTracker
*
* @param string $sProcessUID
* @return boolean true
*/
public function caseTracker($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);
2010-12-02 23:34:41 +00:00
} else {
2012-10-05 13:00:58 -04:00
$aCaseTracker = $oCaseTracker->load($sProcessUID);
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
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;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* caseTrackerObjects
*
* @param string $sProcessUID
* @return boolean true
*/
public function caseTrackerObjects($sProcessUID)
{
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'tracker/tracker_objectsList', $this->getCaseTrackerObjectsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID));
G::RenderPage('publish', 'raw');
return true;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* getCaseTrackerObjectsCriteria
*
* @param string $sProcessUID
* @return object(Criteria) $oCriteria
*/
public function getCaseTrackerObjectsCriteria($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);
$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
}
$oDataset->next();
}
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 $oCriteria;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* availableCaseTrackerObjects
*
* @param string $sProcessUID
* @return boolean true
*/
public function availableCaseTrackerObjects($sProcessUID)
{
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'tracker/tracker_AvailableCaseTrackerObjects', $this->getAvailableCaseTrackerObjectsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID));
G::RenderPage('publish', 'raw');
return true;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* getAvailableCaseTrackerObjectsCriteria
*
* @param string $sProcessUID Default value empty
* @return object(Criteria) $oCriteria
*/
public function getAvailableCaseTrackerObjectsCriteria($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);
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$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();
}
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;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* assignCaseTrackerObject
*
* @param string $sProcessUID
* @param string $sObjType
* @param string $sObjUID
* @return void
*/
public function assignCaseTrackerObject($sProcessUID, $sObjType, $sObjUID)
{
$oCriteria = new Criteria('workflow');
$oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
$iPosition = CaseTrackerObjectPeer::doCount($oCriteria) + 1;
$oCaseTrackerObject = new CaseTrackerObject ( );
$ctoUID = $oCaseTrackerObject->create(array('PRO_UID' => $sProcessUID, 'CTO_TYPE_OBJ' => $sObjType, 'CTO_UID_OBJ' => $sObjUID, 'CTO_POSITION' => $iPosition, 'CTO_CONDITION' => ''));
return $ctoUID;
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* removeCaseTrackerObject
*
* @param string $sCTOUID
* @param string $sProcessUID
* @param integer $iPosition
* @return void
*/
public function removeCaseTrackerObject($sCTOUID, $sProcessUID, $iPosition)
{
$oCaseTrackerObject = new CaseTrackerObject ( );
$oCaseTrackerObject->remove($sCTOUID);
$oCaseTrackerObject->reorderPositions($sProcessUID, $iPosition);
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* upCaseTrackerObject
*
* @param string $sCTOUID
* @param string $sProcessUID
* @param integer $iPosition
* @return void
*/
public function upCaseTrackerObject($sCTOUID, $sProcessUID, $iPosition)
{
if ($iPosition > 1) {
$oCriteria1 = new Criteria('workflow');
$oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, $iPosition);
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
$oCriteria2->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition - 1));
BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
$oCriteria1 = new Criteria('workflow');
$oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition - 1));
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(CaseTrackerObjectPeer::CTO_UID, $sCTOUID);
BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* downCaseTrackerObject
*
* @param string $sCTOUID
* @param string $sProcessUID
* @param integer $iPosition
* @return void
*/
public function downCaseTrackerObject($sCTOUID, $sProcessUID, $iPosition)
{
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn('COUNT(*) AS MAX_POSITION');
$oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
$oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
if ($iPosition < (int) $aRow ['MAX_POSITION']) {
$oCriteria1 = new Criteria('workflow');
$oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, $iPosition);
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
$oCriteria2->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition + 1));
BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
$oCriteria1 = new Criteria('workflow');
$oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition + 1));
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(CaseTrackerObjectPeer::CTO_UID, $sCTOUID);
BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
2010-12-02 23:34:41 +00:00
}
}
2012-10-05 13:00:58 -04:00
/**
* processFilesManager
*
* @param string $sProcessUID
* @return void
*/
public function processFilesManager($sProcessUID)
{
G::LoadClass('ArrayPeer');
global $_DBArray;
global $G_PUBLISH;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$oCriteria = new Criteria('dbarray');
$G_PUBLISH = new Publisher();
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$aDirectories = array();
$aDirectories[] = array('DIRECTORY' => 'char');
$aDirectories[] = array('DIRECTORY' => '<a href="#" onclick="goToDirectory(\'' . $sProcessUID . '\', \'mailTemplates\', \'\');" class="pagedTableHeader">'.G::loadTranslation('ID_TEMPLATES').'</a>');
$aDirectories[] = array('DIRECTORY' => '<a href="#" onclick="goToDirectory(\'' . $sProcessUID . '\', \'public\', \'\');" class="pagedTableHeader">'.G::loadTranslation('ID_PUBLIC').'</a>');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : '');
$_DBArray['directories'] = $aDirectories;
$_SESSION['_DBArray'] = $_DBArray;
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$oCriteria->setDBArrayTable('directories');
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'processes/processes_DirectoriesList', $oCriteria);
G::RenderPage('publish', 'raw');
}
2010-12-02 23:34:41 +00:00
2012-10-05 13:00:58 -04:00
/**
* exploreDirectory
*
* @param string $sProcessUID
* @param string $sMainDirectory
* @param string $sCurrentDirectory
* @return void
*/
public function exploreDirectory($sProcessUID, $sMainDirectory, $sCurrentDirectory)
{
switch ($sMainDirectory) {
case 'mailTemplates' :
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP;
break;
case 'public' :
$sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP;
break;
default :
die ();
break;
}
G::verifyPath($sDirectory, true);
$sDirectory .= $sCurrentDirectory . PATH_SEP;
$aTheFiles = array();
$aTheFiles [] = array('PATH' => 'char', 'EDIT' => 'char', 'DOWNLOAD_TEXT' => '', 'DOWNLOAD_JS' => '', 'DELETE_TEXT' => 'char', 'DELETE_JS' => 'char');
$aDirectories = array();
$aFiles = array();
$oDirectory = dir($sDirectory);
while ($sObject = $oDirectory->read()) {
if (($sObject !== '.') && ($sObject !== '..')) {
$sPath = $sDirectory . $sObject;
if (is_dir($sPath)) {
$aDirectories [] = array('PATH' => ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '') . $sObject, 'DIRECTORY' => $sObject);
} else {
$aAux = pathinfo($sPath);
$aFiles [] = array('FILE' => $sObject, 'EXT' => $aAux ['extension']);
}
}
}
$oDirectory->close();
if ($sCurrentDirectory == '') {
$aTheFiles [] = array('PATH' => '<a href="#" onclick="goToHome(\'' . $sProcessUID . '\');" class="pagedTableHeader">..</a>', 'EDIT' => '', 'DOWNLOAD_TEXT' => '', 'DOWNLOAD_JS' => '', 'DELETE_TEXT' => '', 'DELETE_JS' => '');
} else {
$aAux = explode(PATH_SEP, $sCurrentDirectory);
array_pop($aAux);
$aTheFiles [] = array('PATH' => '<a href="#" onclick="goToDirectory(\'' . $sProcessUID . '\', \'' . $sMainDirectory . '\', \'' . implode(PATH_SEP, $aAux) . '\');" class="pagedTableHeader">..</a>', 'EDIT' => '', 'DOWNLOAD_TEXT' => '', 'DOWNLOAD_JS' => '', 'DELETE_TEXT' => '', 'DELETE_JS' => '');
}
foreach ($aDirectories as $aDirectories) {
$aTheFiles [] = array('PATH' => '<a href="#" onclick="goToDirectory(\'' . $sProcessUID . '\', \'' . $sMainDirectory . '\', \'' . $aDirectories ['PATH'] . '\');" class="pagedTableHeader">' . $aDirectories ['DIRECTORY'] . '</a>', 'EDIT' => '', 'DOWNLOAD_TEXT' => '', 'DOWNLOAD_JS' => '', 'DELETE_TEXT' => G::LoadTranslation('ID_DELETE'), 'DELETE_JS' => 'deleteDirectory(\'' . $sProcessUID . '\', \'' . $sMainDirectory . '\', \'' . $sCurrentDirectory . '\', \'' . $aDirectories ['DIRECTORY'] . '\');');
}
foreach ($aFiles as $aFile) {
$aTheFiles [] = array('PATH' => $aFile ['FILE'], 'EDIT' => ($sMainDirectory == 'mailTemplates' ? 'Edit' : ''), 'EDIT_JS' => "editFile('{$sProcessUID}', @@PATH)", 'DOWNLOAD_TEXT' => G::LoadTranslation('ID_DOWNLOAD'), 'DOWNLOAD_JS' => 'downloadFile(\'' . $sProcessUID . '\', \'' . $sMainDirectory . '\', \'' . $sCurrentDirectory . '\', \'' . $aFile ['FILE'] . '\');', 'DELETE_TEXT' => G::LoadTranslation('ID_DELETE'), 'DELETE_JS' => 'deleteFile(\'' . $sProcessUID . '\', \'' . $sMainDirectory . '\', \'' . $sCurrentDirectory . '\', \'' . $aFile ['FILE'] . '\');');
}
global $_DBArray;
$_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : '');
$_DBArray ['objects'] = $aTheFiles;
$_SESSION ['_DBArray'] = $_DBArray;
G::LoadClass('ArrayPeer');
$oCriteria = new Criteria('dbarray');
$oCriteria->setDBArrayTable('objects');
$oCriteria->addAscendingOrderByColumn('DOWNLOAD_TEXT');
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$G_PUBLISH->AddContent('propeltable', 'processes/files-paged-table', 'processes/processes_FilesList',$oCriteria, array('PRO_UID' => $sProcessUID, 'MAIN_DIRECTORY' => $sMainDirectory, 'CURRENT_DIRECTORY' => $sCurrentDirectory));
G::RenderPage('publish', 'raw');
2010-12-02 23:34:41 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* deleteFile
*
* @param string $sProcessUID
* @param string $sMainDirectory
* @param string $sCurrentDirectory
* @param string $sFile
* @return void
*/
public function deleteFile($sProcessUID, $sMainDirectory, $sCurrentDirectory, $sFile)
{
switch ($sMainDirectory) {
case 'mailTemplates' :
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '');
break;
case 'public' :
$sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '');
break;
default :
die ();
break;
}
if (file_exists($sDirectory . $sFile)) {
unlink($sDirectory . $sFile);
}
}
2012-10-05 13:00:58 -04:00
/**
* deleteDirectory
*
* @param string $sProcessUID
* @param string $sMainDirectory
* @param string $sCurrentDirectory
* @param string $sDirToDelete
* @return void
*/
public function deleteDirectory($sProcessUID, $sMainDirectory, $sCurrentDirectory, $sDirToDelete)
{
switch ($sMainDirectory) {
case 'mailTemplates' :
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '');
break;
case 'public' :
$sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '');
break;
default :
die ();
break;
}
if (file_exists($sDirectory . $sDirToDelete)) {
G::rm_dir($sDirectory . $sDirToDelete);
}
}
2012-10-05 13:00:58 -04:00
public function downloadFile($sProcessUID, $sMainDirectory, $sCurrentDirectory, $sFile)
{
switch ($sMainDirectory) {
case 'mailTemplates' :
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '');
break;
case 'public' :
$sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . ($sCurrentDirectory != '' ? $sCurrentDirectory . PATH_SEP : '');
break;
default :
die ();
break;
}
if (file_exists($sDirectory . $sFile)) {
G::streamFile($sDirectory . $sFile, true);
}
}
2012-10-05 13:00:58 -04:00
/* For sub-process */
/**
* addSubProcess
*
* @param string $sProcessUID
* @param integer $iX
* @param integer $iY
* @return void
*/
public function addSubProcess($sProcessUID = '', $iX = 0, $iY = 0)
{
try {
$oTask = new Task ( );
$oNewTask->label = 'Sub-Process'; //G::LoadTranslation('ID_TASK');
$oNewTask->uid = $oTask->create(array('PRO_UID' => $sProcessUID, 'TAS_TITLE' => $oNewTask->label, 'TAS_POSX' => $iX, 'TAS_POSY' => $iY, 'TAS_TYPE' => 'SUBPROCESS'));
$oJSON = new Services_JSON ( );
2012-10-05 13:00:58 -04:00
$oOP = new SubProcess ( );
$aData = array('SP_UID' => G::generateUniqueID (), 'PRO_UID' => 0, 'TAS_UID' => 0, 'PRO_PARENT' => $sProcessUID, 'TAS_PARENT' => $oNewTask->uid, 'SP_TYPE' => 'SIMPLE', 'SP_SYNCHRONOUS' => 0, 'SP_SYNCHRONOUS_TYPE' => 'ALL', 'SP_SYNCHRONOUS_WAIT' => 0, 'SP_VARIABLES_OUT' => '', 'SP_VARIABLES_IN' => '', 'SP_GRID_IN' => '');
$oOP->create($aData);
2012-10-05 13:00:58 -04:00
return $oJSON->encode($oNewTask);
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/**
* deleteSubProcess
*
* @param string $sProcessUID
* @param string $sTaskUID
* @return boolean true
* throw Exception $oError
*/
public function deleteSubProcess($sProcessUID = '', $sTaskUID = '')
{
try {
$oTasks = new Tasks ( );
$oTasks->deleteTask($sTaskUID);
2012-10-05 13:00:58 -04:00
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn('SP_UID');
$oCriteria->add(SubProcessPeer::PRO_PARENT, $sProcessUID);
$oCriteria->add(SubProcessPeer::TAS_PARENT, $sTaskUID);
$oDataset = SubProcessPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
$oSubProcess = new SubProcess ( );
$oSubProcess->remove($aRow ['SP_UID']);
return true;
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/**
* subProcess_Properties
*
* @param string $sProcessUID
* @param string $sTaskUID
* @param string $sIndex
* @return void
* throw Exception $oError
* @throw Exception $oError
*/
public function subProcess_Properties($sProcessUID = '', $sTaskUID = '', $sIndex = '')
{
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'<hr>';print_r($_DBArray['NewCase']);print'<hr>';
$oCriteria = new Criteria('workflow');
$del = DBAdapter::getStringDelimiter ();
$oCriteria->add(SubProcessPeer::PRO_PARENT, $sProcessUID);
$oCriteria->add(SubProcessPeer::PRO_PARENT, $sProcessUID);
$oCriteria->add(SubProcessPeer::TAS_PARENT, $sTaskUID);
$oCriteria->addAsColumn('CON_VALUE', 'C1.CON_VALUE', 'CON_TITLE');
$oCriteria->addAlias("C1", 'CONTENT');
$tasTitleConds = array();
$tasTitleConds [] = array(SubProcessPeer::TAS_PARENT, 'C1.CON_ID');
$tasTitleConds [] = array('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del);
$tasTitleConds [] = array('C1.CON_LANG', $del . SYS_LANG . $del);
$oCriteria->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN);
$oDataset = SubProcessPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
$aRow ['TASKS'] = $aRow ['TAS_UID'];
//print "<hr>".$aRow['TASKS']."<hr>";
//$aRow['SPROCESS_NAME'] = $aRow['TAS_TITLE'];
$aRow ['TAS_TITLE'] = $aRow ['CON_VALUE'];
$aRow ['SPROCESS_NAME'] = $aRow ['CON_VALUE'];
$SP_VARIABLES_OUT = unserialize($aRow ['SP_VARIABLES_OUT']);
if (is_array($SP_VARIABLES_OUT)) {
$i = 1;
foreach ($SP_VARIABLES_OUT as $indice => $valor) {
$aRow ['grid1'] [$i] ['VAR_OUT1'] = $indice;
$aRow ['grid1'] [$i] ['VAR_OUT2'] = $valor;
$i++;
}
}
$SP_VARIABLES_IN = unserialize($aRow ['SP_VARIABLES_IN']);
if (is_array($SP_VARIABLES_IN)) {
$j = 1;
foreach ($SP_VARIABLES_IN as $indice => $valor) {
$aRow ['grid2'] [$j] ['VAR_IN1'] = $indice;
$aRow ['grid2'] [$j] ['VAR_IN2'] = $valor;
$j++;
}
}
$aRow ['INDEX'] = $sIndex;
//print '<hr>';print_r($aRow);
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_subProcess', '', $aRow, 'processes_subProcessSave');
G::RenderPage('publish', 'raw');
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/**
* subProcess_TaskIni
*
* @param string $sProcessUID
* @return array $rows
*/
public function subProcess_TaskIni($sProcessUID)
{
$tasks = array();
$aUIDS = array();
$aUIDS [] = $sProcessUID;
$c = new Criteria ( );
$c->clearSelectColumns();
$c->addSelectColumn(TaskPeer::TAS_UID);
$c->addSelectColumn(TaskPeer::PRO_UID);
$c->add(TaskPeer::TAS_START, 'TRUE');
$c->add(TaskPeer::PRO_UID, $aUIDS, Criteria::NOT_IN);
//$c->add(TaskPeer::PRO_UID, $sProcessUID, Criteria::NOT_EQUAL);
$rs = TaskPeer::doSelectRS($c);
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rs->next();
$row = $rs->getRow();
while (is_array($row)) {
$tasks [] = array('TAS_UID' => $row ['TAS_UID'], 'PRO_UID' => $row ['PRO_UID']);
$rs->next();
$row = $rs->getRow();
}
$rows [] = array('uid' => 'char', 'value' => 'char', 'pro_uid' => 'char');
foreach ($tasks as $key => $val) {
$tasTitle = Content::load('TAS_TITLE', '', $val ['TAS_UID'], SYS_LANG);
$proTitle = Content::load('PRO_TITLE', '', $val ['PRO_UID'], SYS_LANG);
$title = " $proTitle ($tasTitle)";
$rows [] = array('uid' => $val ['TAS_UID'], 'value' => $title, 'pro_uid' => $val ['PRO_UID']);
}
return $rows;
}
2012-10-05 13:00:58 -04:00
/**
* eventsList
*
* @param string $sProcessUID
* @param string $type
* @return boolean true
* throw Exception $oError
*/
public function eventsList($sProcessUID, $type)
{
try {
global $G_PUBLISH;
$G_PUBLISH = new Publisher ( );
$oHeadPublisher = & headPublisher::getSingleton ();
$oHeadPublisher->addScriptFile('/jscore/events/events.js');
switch ($type) {
case 'message': $EVN_ACTION = "SEND_MESSAGE";
break;
case 'conditional': $EVN_ACTION = "EXECUTE_CONDITIONAL_TRIGGER";
break;
case 'multiple': $EVN_ACTION = "EXECUTE_TRIGGER";
break;
}
2012-10-05 13:00:58 -04:00
$oCriteria = $this->getEventsCriteria($sProcessUID, $EVN_ACTION);
2012-10-05 13:00:58 -04:00
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/eventsShortList', $oCriteria, array('PRO_UID' => $sProcessUID, 'EVN_TYPE' => $EVN_ACTION));
G::RenderPage('publish', 'raw');
return true;
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/* get all the events for a specified process */
2012-10-05 13:00:58 -04:00
/**
* getEventsCriteria
*
* @param string $sProcessUID
* @param string $EVN_ACTION
* @return object(Criteria) $oCriteria
*/
public function getEventsCriteria($sProcessUID, $EVN_ACTION)
{
try {
$sDelimiter = DBAdapter::getStringDelimiter ();
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(EventPeer::EVN_UID);
$oCriteria->addSelectColumn(EventPeer::EVN_ACTION);
$oCriteria->addSelectColumn(EventPeer::EVN_STATUS);
$oCriteria->addSelectColumn(EventPeer::EVN_WHEN_OCCURS);
$oCriteria->addSelectColumn(EventPeer::EVN_RELATED_TO);
$oCriteria->addAsColumn('EVN_DESCRIPTION', ContentPeer::CON_VALUE);
$aConditions = array();
$aConditions [] = array(EventPeer::EVN_UID, ContentPeer::CON_ID);
$aConditions [] = array(ContentPeer::CON_CATEGORY, $sDelimiter . 'EVN_DESCRIPTION' . $sDelimiter);
$aConditions [] = array(ContentPeer::CON_LANG, $sDelimiter . SYS_LANG . $sDelimiter);
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$oCriteria->add(EventPeer::PRO_UID, $sProcessUID);
switch ($EVN_ACTION) {
case 'SEND_MESSAGE' : $oCriteria->add(EventPeer::EVN_ACTION, "SEND_MESSAGE");
break;
case 'EXECUTE_CONDITIONAL_TRIGGER': $oCriteria->add(EventPeer::EVN_ACTION, "EXECUTE_CONDITIONAL_TRIGGER");
break;
case 'EXECUTE_TRIGGER' : $oCriteria->add(EventPeer::EVN_ACTION, "EXECUTE_TRIGGER");
break;
}
2012-10-05 13:00:58 -04:00
return $oCriteria;
} catch (Exception $oError) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
// processMap
/****************************All Functions for New ProcessMap******************************************************/
/*
* Edit the Process Map information
* @param string $sProcessUID
* @return boolean
*/
public function editProcessNew($sProcessUID)
{
try {
$oProcess = new Process ( );
if (! is_null ( $oProcess )) {
$calendar = new Calendar ( );
$calendarObj = $calendar->getCalendarList ( true, true );
2012-10-05 13:00:58 -04:00
global $_DBArray;
2012-10-05 13:00:58 -04:00
$_DBArray ['availableCalendars'] = $calendarObj ['array'];
2011-02-22 09:45:05 +00:00
2012-10-05 13:00:58 -04:00
$_SESSION ['_DBArray'] = $_DBArray;
$aFields = $oProcess->load ( $sProcessUID );
$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'] : "";
return $aFields;
} else {
throw (new Exception ( 'This row doesn\'t exist!' ));
}
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* Load all categories
* @return array
*/
public function loadProcessCategory()
{
$aProcessCategory = '';
require_once ( "classes/model/ProcessCategory.php" );
$Criteria = new Criteria('workflow');
$Criteria->clearSelectColumns ( );
$Criteria->addSelectColumn ( ProcessCategoryPeer::CATEGORY_UID );
$Criteria->addSelectColumn ( ProcessCategoryPeer::CATEGORY_PARENT );
$Criteria->addSelectColumn ( ProcessCategoryPeer::CATEGORY_NAME );
$Criteria->addSelectColumn ( ProcessCategoryPeer::CATEGORY_ICON );
$Criteria->add ( processCategoryPeer::CATEGORY_UID, "xx" , CRITERIA::NOT_EQUAL );
$oDataset = processCategoryPeer::doSelectRS ( $Criteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
while ( $aRow = $oDataset->getRow () ) {
$aProcessCategory[] = $aRow;
$oDataset->next ();
}
2012-10-05 13:00:58 -04:00
return $aProcessCategory;
}
2012-10-05 13:00:58 -04:00
/*
* Save the tasks Width and Height
* @param string $sTaskUID
* @param integer $iX
* @param integer $iY
* @return integer
*/
public function saveTaskCordinates($sTaskUID = '', $iX = 110, $iY = 60)
{
try {
$oTask = new Task ( );
$aFields = $oTask->load ( $sTaskUID );
$aFields ['TAS_UID'] = $sTaskUID;
$aFields ['TAS_WIDTH'] = $iX;
$aFields ['TAS_HEIGHT'] = $iY;
return $oTask->update ( $aFields );
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* Save the Annotation Width and Height
* @param string $sSwimLaneUID
* @param integer $iX
* @param integer $iY
* @return integer
*/
public function saveAnnotationCordinates($sSwimLaneUID = '', $iX = 110, $iY = 60)
{
try {
$oSL = new SwimlanesElements( );
$aFields = $oSL->load ( $sSwimLaneUID );
$aFields ['SWI_UID'] = $sSwimLaneUID;
$aFields ['SWI_WIDTH'] = $iX;
$aFields ['SWI_HEIGHT'] = $iY;
return $oSL->update ( $aFields );
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* Save the Event Position
* @param string $sSwimLaneUID
* @param integer $iX
* @param integer $iY
* @return integer
*/
public function saveEventPosition($sEventUID = '', $iX = 110, $iY = 60)
{
try {
$oEvents = new Event( );
$aFields = $oEvents->load ( $sEventUID );
$aFields ['EVN_UID'] = $sEventUID;
$aFields ['EVN_POSX'] = $iX;
$aFields ['EVN_POSY'] = $iY;
return $oEvents->update ( $aFields );
} catch ( Exception $oError ) {
throw ($oError);
}
2011-02-22 13:15:01 +00:00
}
2012-10-05 13:00:58 -04:00
/** get all the Active process
*/
public function getAllProcesses()
{
$aProcesses = array ();
//$aProcesses [] = array ('PRO_UID' => 'char', 'PRO_TITLE' => '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 ();
2012-10-05 13:00:58 -04:00
$oProcess = new Process ( );
while ( $aRow = $oDataset->getRow () ) {
$aProcess = $oProcess->load ( $aRow ['PRO_UID'] );
$aProcesses [] = array ('value' => $aProcess ['PRO_UID'], 'name' => $aProcess ['PRO_TITLE'] );
$oDataset->next ();
}
$oJSON = new Services_JSON ( );
return $oJSON->encode ( $aProcesses);
}
2012-10-05 13:00:58 -04:00
/*
* Return the steps list criteria object
* @param string $sTaskUID
* @return array
*
*/
public function getDynaformList($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' );
$oCriteria = new Criteria ( 'workflow' );
$oCriteria->add ( StepPeer::TAS_UID, $sTaskUID );
$oCriteria->addAscendingOrderByColumn ( StepPeer::STEP_POSITION );
$oDataset = StepPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
while ( $aRow = $oDataset->getRow () ) {
$urlEdit = '';
$linkEditValue = '';
switch ($aRow ['STEP_TYPE_OBJ']) {
case 'DYNAFORM' :
$oDynaform = new Dynaform ( );
$aFields = $oDynaform->load ( $aRow ['STEP_UID_OBJ'] );
$sTitle = $aFields ['DYN_TITLE'];
$DYN_UID = $aFields ['DYN_UID'];
break;
}
$aSteps [] = array ('name' => $sTitle, 'value' => $DYN_UID);
$oDataset->next ();
}
return $aSteps;
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
public function listNewWebEntry($sProcessUID,$sEventUID)
{
try {
global $G_PUBLISH;
global $G_FORM;
$G_PUBLISH = new Publisher ( );
require_once 'classes/model/Event.php';
$oEvent = new Event();
$arlink = '';
$oEvent = EventPeer::retrieveByPK($sEventUID);
if (!is_null($oEvent)) {
$oData = $oEvent->load($sEventUID);
$dynTitle = '';
$dynUid = '';
$task_name = '';
$usr_uid_evn = $oEvent->getEvnConditions();
if ($oData['EVN_ACTION'] != '' && $oData['EVN_ACTION'] != 'WEB_ENTRY')
{
require_once 'classes/model/Content.php';
require_once 'classes/model/Task.php';
require_once 'classes/model/Dynaform.php';
$oContent = new Content();
$dynTitle = $oContent->load('DYN_TITLE', '', $oData['EVN_ACTION'], 'en');
$task_uid = $oEvent->getEvnTasUidTo();
$dyn = new Dynaform();
$dyn->load($oData['EVN_ACTION']);
$dynUid = $dyn->getDynUid();
$task = new Task();
$task->load($task_uid);
$task_name = $task->getTasTitle();
if (G::is_https ())
$http = 'https://';
else
$http = 'http://';
$link = $http . $_SERVER ['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sProcessUID . '/';
$row = array ();
$c = 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'] );
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 );
$dynTitle = str_replace ( ' ', '_', str_replace ( '/', '_', $dynTitle ) );
$arlink = $link . $dynTitle.'.php';
//$arlink = "<a href='" . $alink . "' target='blank'><font color='#9999CC'>" . $alink . "</font></a>";
2012-10-05 13:00:58 -04:00
}
}
}
$row = array ('W_LINK' => $arlink,'DYN_TITLE'=>$dynTitle,'TAS_TITLE'=>$task_name, 'USR_UID'=>$usr_uid_evn, 'DYN_UID'=>$dynUid);
$result = array();
$result['success'] = true;
$result['data'] = $row;
return $result;
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* Users assigned to Tasks
* @param string $sProcessUID
* @param string $sTaskUID
* @return boolean
*/
public function usersExtList($start, $limit,$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 );
2012-10-05 13:00:58 -04:00
$this->getExtTaskUsersCriteria ($start, $limit, $sTaskUID, $_SESSION ['iType'] );
return $_SESSION ['_DBArray']['taskUsers'];
2012-10-05 13:00:58 -04:00
} catch ( Exception $oError ) {
throw ($oError);
}
2012-10-05 13:00:58 -04:00
}
2012-10-05 13:00:58 -04:00
public function caseNewSchedulerList($sSchUID)
{
try {
$oCaseScheduler = new CaseScheduler();
$aRows = $oCaseScheduler->load($sSchUID);
return $aRows;
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllTaskUserCount(){
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = TaskUserPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) )
return $aRow[0];
else
return 0;
}
2012-10-05 13:00:58 -04:00
public function getExtTaskUsersCriteria($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);
}
2012-10-05 13:00:58 -04:00
$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 {
2012-10-05 13:00:58 -04:00
$aRow2 ['GROUP_INACTIVE'] = '<strong>(' . G::LoadTranslation ( 'ID_GROUP_INACTIVE' ) . ')</strong>';
}
2012-10-05 13:00:58 -04:00
//$aUsers [] = array ('LABEL' => (! isset ( $aRow2 ['GROUP_INACTIVE'] ) ? $aRow ['GRP_TITLE'] . ' <a href="#" onclick="usersGroup(\'' . $aRow ['USR_UID'] . '\', \'' . $c . '\');return false;"><font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')</strong></font></a> <br /><div id="users' . $c . '" style="display: none"></div>' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION'] );
$aUsers [] = array ('LABEL' => (! isset ( $aRow2 ['GROUP_INACTIVE'] ) ? $aRow ['GRP_TITLE'] . ' <font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')</strong></font><br /><div id="users' . $c . '" style="display: none"></div>' : $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 ();
}
2012-10-05 13:00:58 -04:00
$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);
}
}
2012-10-05 13:00:58 -04:00
public function getAvailableExtUsersCriteria($sTaskUID = '', $iType = 1)
{
try {
$oTasks = new Tasks ( );
$aAux = $oTasks->getGroupsOfTask ( $sTaskUID, $iType );
$aUIDS1 = array ();
$aUIDS2 = array ();
foreach ( $aAux as $aGroup ) {
$aUIDS1 [] = $aGroup ['GRP_UID'];
}
$aAux = $oTasks->getUsersOfTask ( $sTaskUID, $iType );
foreach ( $aAux as $aUser ) {
$aUIDS2 [] = $aUser ['USR_UID'];
}
$aUsers = array ();
//$aUsers [] = array ('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer' );
$sDelimiter = DBAdapter::getStringDelimiter ();
$oCriteria = new Criteria ( 'workflow' );
$oCriteria->addSelectColumn ( GroupwfPeer::GRP_UID );
$oCriteria->addAsColumn ( 'GRP_TITLE', 'C.CON_VALUE' );
$oCriteria->addAlias ( 'C', 'CONTENT' );
$aConditions = array ();
$aConditions [] = array (GroupwfPeer::GRP_UID, 'C.CON_ID' );
$aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
$aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
$oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
$oCriteria->add ( GroupwfPeer::GRP_STATUS, 'ACTIVE' );
$oCriteria->add ( GroupwfPeer::GRP_UID, $aUIDS1, Criteria::NOT_IN );
//$oCriteria->add(GroupwfPeer::GRP_UID, '', Criteria::NOT_EQUAL);
$oDataset = GroupwfPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
$c = 0;
while ( $aRow = $oDataset->getRow () ) {
$c ++;
$oCriteria = new Criteria ( 'workflow' );
$oCriteria->addSelectColumn ( 'COUNT(*) AS MEMBERS_NUMBER' );
$oCriteria->add ( GroupUserPeer::GRP_UID, $aRow ['GRP_UID'] );
$oDataset2 = GroupUserPeer::doSelectRS ( $oCriteria );
$oDataset2->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next ();
$aRow2 = $oDataset2->getRow ();
//$aUsers [] = array ('LABEL' => $aRow ['GRP_TITLE'] . ' <a href="#" onclick="usersGroup(\'' . $aRow ['GRP_UID'] . '\', \'' . $c . '\');return false;"><font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')</strong></font></a> <br /><div id="users' . $c . '" style="display: none"></div>', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2 );
$aUsers [] = array ('LABEL' => $aRow ['GRP_TITLE'] . ' <font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . (( int ) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation ( 'ID_USER' ) : G::LoadTranslation ( 'ID_USERS' )) . ')</strong></font><br /><div id="users' . $c . '" style="display: none"></div>', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2 );
$oDataset->next ();
}
$sDelimiter = DBAdapter::getStringDelimiter ();
$oCriteria = new Criteria ( 'workflow' );
$oCriteria->addSelectColumn ( UsersPeer::USR_UID );
$oCriteria->addSelectColumn ( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn ( UsersPeer::USR_LASTNAME );
$oCriteria->add ( UsersPeer::USR_STATUS, 'ACTIVE' );
$oCriteria->add ( UsersPeer::USR_UID, $aUIDS2, Criteria::NOT_IN );
$oDataset = UsersPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
while ( $aRow = $oDataset->getRow () ) {
$aUsers [] = array ('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 1 );
$oDataset->next ();
}
global $_DBArray;
$_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
$_DBArray ['availableUsers'] = $aUsers;
$_SESSION ['_DBArray'] = $_DBArray;
//return $oCriteria;
return $_SESSION ['_DBArray']['availableUsers'];
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
/*
* Return the Additional PM tables list created by user
* @return object
*/
public function getExtAdditionalTablesList($sTab_UID='')
{
$aAdditionalTables = array();
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_UID);
$oCriteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_NAME);
$oCriteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_DESCRIPTION);
$oCriteria->add(AdditionalTablesPeer::ADD_TAB_UID, '', Criteria::NOT_EQUAL);
2012-10-05 13:00:58 -04:00
$oDataset = AdditionalTablesPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
2012-10-05 13:00:58 -04:00
while ( $aRow = $oDataset->getRow () ) {
$aAdditionalTables [] = array ('ADD_TAB_UID' => $aRow ['ADD_TAB_UID'], 'ADD_TAB_NAME' => $aRow ['ADD_TAB_NAME'], 'ADD_TAB_DESCRIPTION' => $aRow ['ADD_TAB_DESCRIPTION']);
$oDataset->next ();
}
2012-10-05 13:00:58 -04:00
return $aAdditionalTables;
}
2012-10-05 13:00:58 -04:00
/*
* Return the available building blocks list criteria object
* @param string $sProcessUID
* @param string $sTaskUID
* @return object
*/
public function getExtAvailableBBCriteria($sProcessUID = '', $sTaskUID = '')
{
try {
$_SESSION['TASK'] = $sTaskUID;
$oTasks = new Tasks ( );
$_SESSION['TASK'] = $sTaskUID;
$aSteps = $oTasks->getStepsOfTask ( $sTaskUID );
$sUIDs = array ();
foreach ( $aSteps as $aStep ) {
$sUIDs [] = $aStep ['STEP_UID_OBJ'];
}
$aBB = array ();
$aBB [] = array ('STEP_UID' => 'char', 'STEP_TITLE' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' );
$sDelimiter = DBAdapter::getStringDelimiter ();
$oCriteria = new Criteria ( 'workflow' );
$oCriteria->addSelectColumn ( DynaformPeer::DYN_UID );
$oCriteria->addAsColumn ( 'DYN_TITLE', 'C.CON_VALUE' );
$oCriteria->addAlias ( 'C', 'CONTENT' );
$aConditions = array ();
$aConditions [] = array (DynaformPeer::DYN_UID, 'C.CON_ID' );
$aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter );
$aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
$oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
$oCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID );
$oCriteria->add ( DynaformPeer::DYN_UID, $sUIDs, Criteria::NOT_IN );
$oCriteria->add ( DynaformPeer::DYN_TYPE, 'xmlform' );
$oDataset = DynaformPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
$i = 0;
while ( $aRow = $oDataset->getRow () ) {
$i ++;
$aBB [] = array ('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => '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' => '<input type="hidden" id="STEP_MODE_' . $aRow ['INP_DOC_UID'] . '">' );
$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' => '<input type="hidden" id="STEP_MODE_' . $aRow ['OUT_DOC_UID'] . '">' );
$oDataset->next ();
}
2012-10-05 13:00:58 -04:00
//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' => '<input type="hidden" id="STEP_MODE_' . $stepVar->sStepId . '">' );
}
}
2012-10-05 13:00:58 -04:00
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);
}
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllStepCount(){
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = StepPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) ) {
return $aRow[0];
} else {
return 0;
}
}
2012-10-05 13:00:58 -04:00
/*
* 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 ();
}
2010-12-09 06:11:32 +00:00
2012-10-05 13:00:58 -04:00
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);
}
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllStepTriggerCount() {
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = StepTriggerPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) ) {
return $aRow[0];
} else {
return 0;
}
2010-12-09 06:11:32 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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;
2010-12-09 06:11:32 +00:00
2012-10-05 13:00:58 -04:00
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;
}
2010-12-09 06:11:32 +00:00
2012-10-05 13:00:58 -04:00
/*
* 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);
}
}
2012-10-05 13:00:58 -04:00
//new functions
//deprecated
public function getAllDynaformCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = DynaformPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if (is_array($aRow)) {
return $aRow[0];
} else {
return 0;
}
2010-12-09 06:11:32 +00:00
}
2012-10-05 13:00:58 -04:00
/*
* 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 ();
2012-10-05 13:00:58 -04:00
$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);
}
2012-10-05 13:00:58 -04:00
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)'] ;
}
2012-10-05 13:00:58 -04:00
$oDataset->next ();
}
2012-10-05 13:00:58 -04:00
//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)'] ;
}
2012-10-05 13:00:58 -04:00
$oDataset->next ();
}
2012-10-05 13:00:58 -04:00
//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();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) )
$result['totalCount'] = $aRow[0];
else
$result['totalCount'] = 0;
$result['data'] = $dynaformArray;
2012-10-05 13:00:58 -04:00
return $result;
}
2012-10-05 13:00:58 -04:00
//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;
}
2012-10-05 13:00:58 -04:00
/*
* 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 );
2012-10-05 13:00:58 -04:00
$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 ();
}
2012-10-05 13:00:58 -04:00
/*global $_DBArray;
$_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : '');
$_DBArray ['inputDocArrayMain'] = $inputDocArray;
//$_SESSION ['_DBArray']['inputDocArrayMain'] = $_DBArray;*/
return $inputDocArray;
}
2012-10-05 13:00:58 -04:00
//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;
}
2012-10-05 13:00:58 -04:00
/*
* 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 );
2012-10-05 13:00:58 -04:00
$this->tmpCriteria = clone $oCriteria;
2012-10-05 13:00:58 -04:00
if ($start != '')
$oCriteria->setOffset($start);
if ($limit != '')
$oCriteria->setLimit($limit);
2012-10-05 13:00:58 -04:00
$oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
/**
* 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'<hr>';print_r($_DBArray['NewCase']);print'<hr>';
$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 "<hr>".$aRow['TASKS']."<hr>";
//$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 ++;
}
}
}
2012-10-05 13:00:58 -04:00
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 '<hr>';print_r($aRow);
return $aRow;
//return $aSubProcess;
} catch ( Exception $oError ) {
throw ($oError);
}
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllProcessSupervisorsCount(){
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = ProcessUserPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) )
return $aRow[0];
else
return 0;
}
2012-10-05 13:00:58 -04:00
/**
* 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;
2012-10-05 13:00:58 -04:00
if ($start != '')
$oCriteria->setOffset($start);
if ($limit != '')
$oCriteria->setLimit($limit);
$oDataset = ProcessUserPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
/**
* listExtNoProcessesUser for Extjs
*
* @param string $sProcessUID
* @return array(aAvailableUser) $aAvailableUser
*/
public function listExtNoProcessesUser($sProcessUID) {
G::LoadSystem('rbac');
$memcache = & PMmemcached::getSingleton(SYS_SYS);
2012-10-05 13:00:58 -04:00
$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 ();
2012-10-05 13:00:58 -04:00
$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
2012-10-05 13:00:58 -04:00
public function getAllSupervisorDynaformsCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = StepSupervisorPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) )
return $aRow[0];
else
return 0;
}
2012-10-05 13:00:58 -04:00
/*
* Return the supervisors dynaforms list array
* @param string $sProcessUID
* @return array
*/
public function getExtSupervisorDynaformsList($start, $limit,$sProcessUID = '')
{
2012-10-05 13:00:58 -04:00
$sDelimiter = DBAdapter::getStringDelimiter ();
$oCriteria = new Criteria('workflow');
2012-10-05 13:00:58 -04:00
$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();
2012-10-05 13:00:58 -04:00
$aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
$aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter);
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
2012-10-05 13:00:58 -04:00
$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;
2012-10-05 13:00:58 -04:00
if ($start != '')
$oCriteria->setOffset($start);
2012-10-05 13:00:58 -04:00
if ($limit != '')
$oCriteria->setLimit($limit);
2012-10-05 13:00:58 -04:00
$oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$oDataset->next ();
2012-10-05 13:00:58 -04:00
$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 ();
}
2012-10-05 13:00:58 -04:00
return $aProcessDynaform;
}
2012-10-05 13:00:58 -04:00
/*
* Return the available supervisors dynaforms list array
* @param string $sProcessUID
* @return array
*/
public function getExtAvailableSupervisorDynaformsList($sProcessUID = '')
{
2012-10-05 13:00:58 -04:00
$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);
2010-12-22 14:44:57 +00:00
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllSupervisorInputsCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = StepSupervisorPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) )
return $aRow[0];
else
return 0;
}
2012-10-05 13:00:58 -04:00
/*
* 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;
2012-10-05 13:00:58 -04:00
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 ();
}
2012-10-05 13:00:58 -04:00
return $aProcessInputDoc;
}
2012-10-05 13:00:58 -04:00
/*
* 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;
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllDbSourceCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = DbSourcePeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2011-02-11 11:39:57 +00:00
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) ) {
return $aRow[0];
} else {
return 0;
}
}
2012-10-05 13:00:58 -04:00
/**
* 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);
}
}
2012-10-05 13:00:58 -04:00
/**
* 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;
}
}
2012-10-05 13:00:58 -04:00
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;
}
//new functions
2012-10-05 13:00:58 -04:00
public function getAllCaseTrackerObjectCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = CaseTrackerObjectPeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) ) {
return $aRow[0];
} else {
return 0;
}
2010-12-30 09:38:25 +00:00
}
2012-10-05 13:00:58 -04:00
/**
* 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;
2011-02-11 11:39:57 +00:00
2012-10-05 13:00:58 -04:00
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
}
$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;
}
/**
* 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');
2012-10-05 13:00:58 -04:00
$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();
2012-10-05 13:00:58 -04:00
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();
2012-10-05 13:00:58 -04:00
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);
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
//new functions
public function getAllReportTableCount()
{
$c = $this->tmpCriteria;
$c->clearSelectColumns();
$c->addSelectColumn('COUNT(*)');
$oDataset = ReportTablePeer::doSelectRS($c);
$oDataset->next();
$aRow = $oDataset->getRow();
2012-10-05 13:00:58 -04:00
if ( is_array($aRow) ) {
return $aRow[0];
} else {
2012-10-05 13:00:58 -04:00
return 0;
}
}
2012-10-05 13:00:58 -04:00
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);
$this->tmpCriteria = clone $oCriteria;
2012-10-05 13:00:58 -04:00
if ($start != '')
$oCriteria->setOffset($start);
if ($limit != '')
$oCriteria->setLimit($limit);
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
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'] . ' <a href="#" onclick="usersGroup(\'' . $aRow ['GRP_UID'] . '\', \'' . $c . '\');return false;"><font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')</strong></font></a> <br /><div id="users' . $c . '" style="display: none"></div>', '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);
}
}
2010-12-30 09:38:25 +00:00
2012-10-05 13:00:58 -04:00
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;
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'] = '<strong>(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')</strong>';
}
$aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' <a href="#" onclick="usersGroup(\'' . $aRow ['USR_UID'] . '\', \'' . $c . '\');return false;"><font color="green"><strong>(' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')</strong></font></a> <br /><div id="users' . $c . '" style="display: none"></div>' : $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);
}
2011-02-22 06:36:14 +00:00
}
2011-02-18 06:41:48 +00:00
2012-10-05 13:00:58 -04:00
/**
* 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();
2012-10-05 13:00:58 -04:00
$oCriteria = new Criteria ( );
$oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']);
if (GroupwfPeer::doCount($oCriteria) == 1) {
$user = '2|' . $aRows ['USR_UID'];
}
2012-10-05 13:00:58 -04:00
$oCriteria = new Criteria ( );
$oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']);
if (UsersPeer::doCount($oCriteria) == 1) {
$user = '1|' . $aRows ['USR_UID'];
}
2011-02-18 06:41:48 +00:00
2012-10-05 13:00:58 -04:00
$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;
}
2012-10-05 13:00:58 -04:00
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);
}
}
2011-02-18 06:41:48 +00:00
2012-10-05 13:00:58 -04:00
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);
2011-02-18 06:41:48 +00:00
}
2012-10-05 13:00:58 -04:00
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;
}
2012-10-05 13:00:58 -04:00
//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;
}
2012-10-05 13:00:58 -04:00
/*
* 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;
}
2012-10-05 13:00:58 -04:00
public function getMaximunTaskX ($processUid)
{
$criteria = new Criteria('workflow');
$criteria->addSelectColumn('MAX(TAS_POSX) AS MAX_X');
$criteria->add(TaskPeer::PRO_UID, $processUid);
2012-10-05 13:00:58 -04:00
$dataset = TaskPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
2012-10-05 13:00:58 -04:00
$row = $dataset->getRow();
2012-10-05 13:00:58 -04:00
return (int)$row['MAX_X'];
}
2011-02-11 11:39:57 +00:00
}
2012-10-05 13:00:58 -04:00