From b17a5eff62efc891bc185e7f539d0326e1287b34 Mon Sep 17 00:00:00 2001 From: norahmollo Date: Fri, 19 Oct 2012 18:07:17 +0000 Subject: [PATCH] CODE STYLE Format Change format --- workflow/engine/classes/class.processes.php | 7564 ++++++++--------- .../classes/model/CalendarDefinition.php | 922 +- workflow/engine/classes/model/Content.php | 874 +- workflow/engine/classes/model/Translation.php | 910 +- 4 files changed, 5129 insertions(+), 5141 deletions(-) diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 06692368e..a63a0b1d9 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -1,3465 +1,3477 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ - -require_once 'classes/model/Content.php'; -require_once 'classes/model/Process.php'; -require_once 'classes/model/Task.php'; -require_once 'classes/model/Route.php'; -require_once 'classes/model/SwimlanesElements.php'; -require_once 'classes/model/InputDocument.php'; -require_once 'classes/model/ObjectPermission.php'; -require_once 'classes/model/OutputDocument.php'; -require_once 'classes/model/Step.php'; -require_once 'classes/model/StepTrigger.php'; -require_once 'classes/model/Dynaform.php'; -require_once 'classes/model/Triggers.php'; -require_once 'classes/model/Groupwf.php'; -require_once 'classes/model/ReportTable.php'; -require_once 'classes/model/ReportVar.php'; -require_once 'classes/model/DbSource.php'; -require_once 'classes/model/StepSupervisor.php'; -require_once 'classes/model/SubProcess.php'; -require_once 'classes/model/CaseTracker.php'; -require_once 'classes/model/CaseTrackerObject.php'; -require_once 'classes/model/Stage.php'; -require_once 'classes/model/TaskUser.php'; -require_once 'classes/model/FieldCondition.php'; -require_once 'classes/model/Event.php'; -require_once 'classes/model/CaseScheduler.php'; -require_once 'classes/model/ProcessCategory.php'; - -G::LoadClass( 'tasks' ); -G::LoadClass( 'reportTables' ); -G::LoadClass( 'processMap' ); -G::LoadThirdParty( 'pear/json', 'class.json' ); - -class Processes -{ - - /** - * change Status of any Process - * - * @param string $sProUid - * @return boolean - * @package workflow.engine.ProcessMaker - */ - function changeStatus ($sProUid = '') - { - $oProcess = new Process(); - $Fields = $oProcess->Load( $sProUid ); - $proFields['PRO_UID'] = $sProUid; - if ($Fields['PRO_STATUS'] == 'ACTIVE') - $proFields['PRO_STATUS'] = 'INACTIVE'; - else - $proFields['PRO_STATUS'] = 'ACTIVE'; - - $oProcess->Update( $proFields ); - } - - /** - * change debug mode of any Process - * - * @param string $sProUid - * @return boolean - * @package workflow.engine.ProcessMaker - */ - function changeDebugMode ($sProUid = '') - { - $oProcess = new Process(); - $Fields = $oProcess->Load( $sProUid ); - $proFields['PRO_UID'] = $sProUid; - if ($Fields['PRO_DEBUG'] == '1') - $proFields['PRO_DEBUG'] = '0'; - else - $proFields['PRO_DEBUG'] = '1'; - - $oProcess->Update( $proFields ); - } - - /** - * changes in DB the parent GUID - * - * @param $sProUid process uid - * @param $sParentUid process parent uid - * @return $sProUid - */ - function changeProcessParent ($sProUid, $sParentUid) - { - $oProcess = new Process(); - $Fields = $oProcess->Load( $sProUid ); - $proFields['PRO_UID'] = $sProUid; - $Fields['PRO_PARENT'] == $sParentUid; - $oProcess->Update( $proFields ); - } - - /** - * verify if the process $sProUid exists - * - * @param string $sProUid - * @return boolean - */ - function processExists ($sProUid = '') - { - $oProcess = new Process(); - return $oProcess->processExists( $sProUid ); - } - - /** - * get an unused process GUID - * - * @return $sProUid - */ - function getUnusedProcessGUID () - { - do { - $sNewProUid = G::generateUniqueID(); - } while ($this->processExists( $sNewProUid )); - return $sNewProUid; - } - - /** - * verify if the task $sTasUid exists - * - * @param string $sTasUid - * @return boolean - */ - function taskExists ($sTasUid = '') - { - $oTask = new Task(); - return $oTask->taskExists( $sTasUid ); - } - - /** - * get an unused task GUID - * - * @return $sTasUid - */ - function getUnusedTaskGUID () - { - do { - $sNewTasUid = G::generateUniqueID(); - } while ($this->taskExists( $sNewTasUid )); - return $sNewTasUid; - } - - /** - * verify if the dynaform $sDynUid exists - * - * @param string $sDynUid - * @return boolean - */ - function dynaformExists ($sDynUid = '') - { - $oDynaform = new Dynaform(); - return $oDynaform->dynaformExists( $sDynUid ); - } - - /** - * verify if the object exists - * - * @param string $sUid - * @return boolean - */ - function inputExists ($sUid = '') - { - $oInput = new InputDocument(); - return $oInput->inputExists( $sUid ); - } - - /** - * verify if the object exists - * - * @param string $sUid - * @return boolean - */ - function outputExists ($sUid = '') - { - $oOutput = new OutputDocument(); - return $oOutput->outputExists( $sUid ); - } - - /** - * verify if the object exists - * - * @param string $sUid - * @return boolean - */ - function triggerExists ($sUid = '') - { - $oTrigger = new Triggers(); - return $oTrigger->triggerExists( $sUid ); - } - - /** - * verify if the object exists - * - * @param string $sUid - * @return boolean - */ - function SubProcessExists ($sUid = '') - { - $oSubProcess = new SubProcess(); - return $oSubProcess->subProcessExists( $sUid ); - } - - /** - * verify if a caseTrackerObject object exists - * - * @param string $sUid - * @return boolean - */ - function caseTrackerObjectExists ($sUid = '') - { - $oCaseTrackerObject = new CaseTrackerObject(); - return $oCaseTrackerObject->caseTrackerObjectExists( $sUid ); - } - - /** - * verify if a caseTracker Object exists - * - * @param string $sUid - * @return boolean - */ - function caseTrackerExists ($sUid = '') - { - $oCaseTracker = new CaseTracker(); - return $oCaseTracker->caseTrackerExists( $sUid ); - } - - /** - * verify if a dbconnection exists - * - * @param string $sUid - * @return boolean - */ - function dbConnectionExists ($sUid = '') - { - $oDBSource = new DbSource(); - return $oDBSource->Exists( $sUid ); - } - - /** - * verify if a objectPermission exists - * - * @param string $sUid - * @return boolean - */ - function objectPermissionExists ($sUid = '') - { - $oObjectPermission = new ObjectPermission(); - return $oObjectPermission->Exists( $sUid ); - } - - /** - * verify if a route exists - * - * @param string $sUid - * @return boolean - */ - function routeExists ($sUid = '') - { - $oRoute = new Route(); - return $oRoute->routeExists( $sUid ); - } - - /** - * verify if a stage exists - * - * @param string $sUid - * @return boolean - */ - function stageExists ($sUid = '') - { - $oStage = new Stage(); - return $oStage->Exists( $sUid ); - } - - /** - * verify if a swimlane exists - * - * @param string $sUid - * @return boolean - */ - function slExists ($sUid = '') - { - $oSL = new SwimlanesElements(); - return $oSL->swimlanesElementsExists( $sUid ); - } - - /** - * verify if a reportTable exists - * - * @param string $sUid - * @return boolean - */ - function reportTableExists ($sUid = '') - { - $oReportTable = new ReportTable(); - return $oReportTable->reportTableExists( $sUid ); - } - - /** - * verify if a reportVar exists - * - * @param string $sUid - * @return boolean - */ - function reportVarExists ($sUid = '') - { - $oReportVar = new ReportVar(); - return $oReportVar->reportVarExists( $sUid ); - } - - /** - * verify if a caseTrackerObject exists - * - * @param string $sUid - * @return boolean - */ - function fieldsConditionsExists ($sUid = '') - { - $oFieldCondition = new FieldCondition(); - return $oFieldCondition->Exists( $sUid ); - } - - /** - * verify if an event exists - * - * @param string $sUid - * @return boolean - */ - function eventExists ($sUid = '') - { - $oEvent = new Event(); - return $oEvent->Exists( $sUid ); - } - - /** - * verify if a caseScheduler exists - * - * @param string $sUid - * @return boolean - */ - function caseSchedulerExists ($sUid = '') - { - $oCaseScheduler = new CaseScheduler(); - return $oCaseScheduler->Exists( $sUid ); - } - - /** - * get an unused input GUID - * - * @return $sProUid - */ - function getUnusedInputGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->inputExists( $sNewUid )); - return $sNewUid; - } - - /** - * get an unused output GUID - * - * @return $sProUid - */ - function getUnusedOutputGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->outputExists( $sNewUid )); - return $sNewUid; - } - - /** - * get an unused trigger GUID - * - * @return $sProUid - */ - function getUnusedTriggerGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->triggerExists( $sNewUid )); - return $sNewUid; - } - - /** - * get an unused trigger GUID - * - * @return $sProUid - */ - function getUnusedSubProcessGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->subProcessExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused CaseTrackerObject GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedCaseTrackerObjectGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->caseTrackerObjectExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Database Source GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedDBSourceGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->dbConnectionExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Object Permission GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedObjectPermissionGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->objectPermissionExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Route GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedRouteGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->routeExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Stage GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedStageGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->stageExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused SL GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedSLGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->slExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Report Table GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedRTGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->reportTableExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Report Var GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedRTVGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->reportVarExists( $sNewUid )); - return $sNewUid; - } - - /** - * verify if the object exists - * - * @param string $sUid - * @return boolean - */ - function stepExists ($sUid = '') - { - $oStep = new Step(); - return $oStep->stepExists( $sUid ); - } - - /** - * get an unused step GUID - * - * @return $sUid - */ - function getUnusedStepGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->stepExists( $sNewUid )); - return $sNewUid; - } - +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + */ + +require_once 'classes/model/Content.php'; +require_once 'classes/model/Process.php'; +require_once 'classes/model/Task.php'; +require_once 'classes/model/Route.php'; +require_once 'classes/model/SwimlanesElements.php'; +require_once 'classes/model/InputDocument.php'; +require_once 'classes/model/ObjectPermission.php'; +require_once 'classes/model/OutputDocument.php'; +require_once 'classes/model/Step.php'; +require_once 'classes/model/StepTrigger.php'; +require_once 'classes/model/Dynaform.php'; +require_once 'classes/model/Triggers.php'; +require_once 'classes/model/Groupwf.php'; +require_once 'classes/model/ReportTable.php'; +require_once 'classes/model/ReportVar.php'; +require_once 'classes/model/DbSource.php'; +require_once 'classes/model/StepSupervisor.php'; +require_once 'classes/model/SubProcess.php'; +require_once 'classes/model/CaseTracker.php'; +require_once 'classes/model/CaseTrackerObject.php'; +require_once 'classes/model/Stage.php'; +require_once 'classes/model/TaskUser.php'; +require_once 'classes/model/FieldCondition.php'; +require_once 'classes/model/Event.php'; +require_once 'classes/model/CaseScheduler.php'; +require_once 'classes/model/ProcessCategory.php'; + +G::LoadClass( 'tasks' ); +G::LoadClass( 'reportTables' ); +G::LoadClass( 'processMap' ); +G::LoadThirdParty( 'pear/json', 'class.json' ); + +class Processes +{ + /** + * change Status of any Process + * + * @param string $sProUid + * @return boolean + * @package workflow.engine.ProcessMaker + */ + public function changeStatus ($sProUid = '') + { + $oProcess = new Process(); + $Fields = $oProcess->Load( $sProUid ); + $proFields['PRO_UID'] = $sProUid; + if ($Fields['PRO_STATUS'] == 'ACTIVE') { + $proFields['PRO_STATUS'] = 'INACTIVE'; + } else { + $proFields['PRO_STATUS'] = 'ACTIVE'; + } + $oProcess->Update( $proFields ); + } + + /** + * change debug mode of any Process + * + * @param string $sProUid + * @return boolean + * @package workflow.engine.ProcessMaker + */ + public function changeDebugMode ($sProUid = '') + { + $oProcess = new Process(); + $Fields = $oProcess->Load( $sProUid ); + $proFields['PRO_UID'] = $sProUid; + if ($Fields['PRO_DEBUG'] == '1') { + $proFields['PRO_DEBUG'] = '0'; + } else { + $proFields['PRO_DEBUG'] = '1'; + } + $oProcess->Update( $proFields ); + } + + /** + * changes in DB the parent GUID + * + * @param $sProUid process uid + * @param $sParentUid process parent uid + * @return $sProUid + */ + public function changeProcessParent ($sProUid, $sParentUid) + { + $oProcess = new Process(); + $Fields = $oProcess->Load( $sProUid ); + $proFields['PRO_UID'] = $sProUid; + $Fields['PRO_PARENT'] == $sParentUid; + $oProcess->Update( $proFields ); + } + + /** + * verify if the process $sProUid exists + * + * @param string $sProUid + * @return boolean + */ + public function processExists ($sProUid = '') + { + $oProcess = new Process(); + return $oProcess->processExists( $sProUid ); + } + + /** + * get an unused process GUID + * + * @return $sProUid + */ + public function getUnusedProcessGUID () + { + do { + $sNewProUid = G::generateUniqueID(); + } while ($this->processExists( $sNewProUid )); + return $sNewProUid; + } + + /** + * verify if the task $sTasUid exists + * + * @param string $sTasUid + * @return boolean + */ + public function taskExists ($sTasUid = '') + { + $oTask = new Task(); + return $oTask->taskExists( $sTasUid ); + } + + /** + * get an unused task GUID + * + * @return $sTasUid + */ + public function getUnusedTaskGUID () + { + do { + $sNewTasUid = G::generateUniqueID(); + } while ($this->taskExists( $sNewTasUid )); + return $sNewTasUid; + } + + /** + * verify if the dynaform $sDynUid exists + * + * @param string $sDynUid + * @return boolean + */ + public function dynaformExists ($sDynUid = '') + { + $oDynaform = new Dynaform(); + return $oDynaform->dynaformExists( $sDynUid ); + } + + /** + * verify if the object exists + * + * @param string $sUid + * @return boolean + */ + public function inputExists ($sUid = '') + { + $oInput = new InputDocument(); + return $oInput->inputExists( $sUid ); + } + + /** + * verify if the object exists + * + * @param string $sUid + * @return boolean + */ + public function outputExists ($sUid = '') + { + $oOutput = new OutputDocument(); + return $oOutput->outputExists( $sUid ); + } + + /** + * verify if the object exists + * + * @param string $sUid + * @return boolean + */ + public function triggerExists ($sUid = '') + { + $oTrigger = new Triggers(); + return $oTrigger->triggerExists( $sUid ); + } + + /** + * verify if the object exists + * + * @param string $sUid + * @return boolean + */ + public function SubProcessExists ($sUid = '') + { + $oSubProcess = new SubProcess(); + return $oSubProcess->subProcessExists( $sUid ); + } + + /** + * verify if a caseTrackerObject object exists + * + * @param string $sUid + * @return boolean + */ + public function caseTrackerObjectExists ($sUid = '') + { + $oCaseTrackerObject = new CaseTrackerObject(); + return $oCaseTrackerObject->caseTrackerObjectExists( $sUid ); + } + + /** + * verify if a caseTracker Object exists + * + * @param string $sUid + * @return boolean + */ + public function caseTrackerExists ($sUid = '') + { + $oCaseTracker = new CaseTracker(); + return $oCaseTracker->caseTrackerExists( $sUid ); + } + + /** + * verify if a dbconnection exists + * + * @param string $sUid + * @return boolean + */ + public function dbConnectionExists ($sUid = '') + { + $oDBSource = new DbSource(); + return $oDBSource->Exists( $sUid ); + } + + /** + * verify if a objectPermission exists + * + * @param string $sUid + * @return boolean + */ + public function objectPermissionExists ($sUid = '') + { + $oObjectPermission = new ObjectPermission(); + return $oObjectPermission->Exists( $sUid ); + } + + /** + * verify if a route exists + * + * @param string $sUid + * @return boolean + */ + public function routeExists ($sUid = '') + { + $oRoute = new Route(); + return $oRoute->routeExists( $sUid ); + } + + /** + * verify if a stage exists + * + * @param string $sUid + * @return boolean + */ + public function stageExists ($sUid = '') + { + $oStage = new Stage(); + return $oStage->Exists( $sUid ); + } + + /** + * verify if a swimlane exists + * + * @param string $sUid + * @return boolean + */ + public function slExists ($sUid = '') + { + $oSL = new SwimlanesElements(); + return $oSL->swimlanesElementsExists( $sUid ); + } + + /** + * verify if a reportTable exists + * + * @param string $sUid + * @return boolean + */ + public function reportTableExists ($sUid = '') + { + $oReportTable = new ReportTable(); + return $oReportTable->reportTableExists( $sUid ); + } + + /** + * verify if a reportVar exists + * + * @param string $sUid + * @return boolean + */ + public function reportVarExists ($sUid = '') + { + $oReportVar = new ReportVar(); + return $oReportVar->reportVarExists( $sUid ); + } + + /** + * verify if a caseTrackerObject exists + * + * @param string $sUid + * @return boolean + */ + public function fieldsConditionsExists ($sUid = '') + { + $oFieldCondition = new FieldCondition(); + return $oFieldCondition->Exists( $sUid ); + } + + /** + * verify if an event exists + * + * @param string $sUid + * @return boolean + */ + public function eventExists ($sUid = '') + { + $oEvent = new Event(); + return $oEvent->Exists( $sUid ); + } + + /** + * verify if a caseScheduler exists + * + * @param string $sUid + * @return boolean + */ + public function caseSchedulerExists ($sUid = '') + { + $oCaseScheduler = new CaseScheduler(); + return $oCaseScheduler->Exists( $sUid ); + } + + /** + * get an unused input GUID + * + * @return $sProUid + */ + public function getUnusedInputGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->inputExists( $sNewUid )); + return $sNewUid; + } + + /** + * get an unused output GUID + * + * @return $sProUid + */ + public function getUnusedOutputGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->outputExists( $sNewUid )); + return $sNewUid; + } + + /** + * get an unused trigger GUID + * + * @return $sProUid + */ + public function getUnusedTriggerGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->triggerExists( $sNewUid )); + return $sNewUid; + } + + /** + * get an unused trigger GUID + * + * @return $sProUid + */ + public function getUnusedSubProcessGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->subProcessExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused CaseTrackerObject GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedCaseTrackerObjectGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->caseTrackerObjectExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Database Source GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedDBSourceGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->dbConnectionExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Object Permission GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedObjectPermissionGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->objectPermissionExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Route GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedRouteGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->routeExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Stage GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedStageGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->stageExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused SL GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedSLGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->slExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Report Table GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedRTGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->reportTableExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Report Var GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedRTVGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->reportVarExists( $sNewUid )); + return $sNewUid; + } + + /** + * verify if the object exists + * + * @param string $sUid + * @return boolean + */ + public function stepExists ($sUid = '') + { + $oStep = new Step(); + return $oStep->stepExists( $sUid ); + } + + /** + * get an unused step GUID + * + * @return $sUid + */ + public function getUnusedStepGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->stepExists( $sNewUid )); + return $sNewUid; + } + /* * get an unused Dynaform GUID * @return $sDynUid - */ - function getUnusedDynaformGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->dynaformExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Field Condition GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedFieldConditionGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->fieldsConditionsExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Event GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedEventGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->eventExists( $sNewUid )); - return $sNewUid; - } - - /** - * get a Unused Case Scheduler GUID - * - * @return $sNewUid a new generated Uid - */ - function getUnusedCaseSchedulerGUID () - { - do { - $sNewUid = G::generateUniqueID(); - } while ($this->caseSchedulerExists( $sNewUid )); - return $sNewUid; - } - - /** - * change the GUID for a serialized process - * - * @param string $sProUid - * @return boolean - */ - function setProcessGUID (&$oData, $sNewProUid) - { - $sProUid = $oData->process['PRO_UID']; - $oData->process['PRO_UID'] = $sNewProUid; - - if (isset( $oData->tasks ) && is_array( $oData->tasks )) { - foreach ($oData->tasks as $key => $val) { - $oData->tasks[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->routes ) && is_array( $oData->routes )) { - foreach ($oData->routes as $key => $val) { - $oData->routes[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->lanes ) && is_array( $oData->lanes )) { - foreach ($oData->lanes as $key => $val) { - $oData->lanes[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->inputs ) && is_array( $oData->inputs )) { - foreach ($oData->inputs as $key => $val) { - $oData->inputs[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->outputs ) && is_array( $oData->outputs )) { - foreach ($oData->outputs as $key => $val) { - $oData->outputs[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->steps ) && is_array( $oData->steps )) { - foreach ($oData->steps as $key => $val) { - $oData->steps[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->dynaforms ) && is_array( $oData->dynaforms )) { - foreach ($oData->dynaforms as $key => $val) { - $oData->dynaforms[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->triggers ) && is_array( $oData->triggers )) { - foreach ($oData->triggers as $key => $val) { - $oData->triggers[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->reportTables ) && is_array( $oData->reportTables )) { - foreach ($oData->reportTables as $key => $val) { - $oData->reportTables[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->reportTablesVars ) && is_array( $oData->reportTablesVars )) { - foreach ($oData->reportTablesVars as $key => $val) { - $oData->reportTablesVars[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->dbconnections ) && is_array( $oData->dbconnections )) { - foreach ($oData->dbconnections as $key => $val) { - $oData->dbconnections[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->stepSupervisor ) && is_array( $oData->stepSupervisor )) { - foreach ($oData->stepSupervisor as $key => $val) { - $oData->stepSupervisor[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { - foreach ($oData->objectPermissions as $key => $val) { - $oData->objectPermissions[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->caseTracker ) && is_array( $oData->caseTracker )) { - foreach ($oData->caseTracker as $key => $val) { - $oData->caseTracker[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->caseTrackerObject ) && is_array( $oData->caseTrackerObject )) { - foreach ($oData->caseTrackerObject as $key => $val) { - $oData->caseTrackerObject[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->stage ) && is_array( $oData->stage )) { - foreach ($oData->stage as $key => $val) { - $oData->stage[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->subProcess ) && is_array( $oData->subProcess )) { - foreach ($oData->subProcess as $key => $val) { - $oData->subProcess[$key]['PRO_PARENT'] = $sNewProUid; - } - } - - if (isset( $oData->event ) && is_array( $oData->event )) { - foreach ($oData->event as $key => $val) { - $oData->event[$key]['PRO_UID'] = $sNewProUid; - } - } - - if (isset( $oData->caseScheduler ) && is_array( $oData->caseScheduler )) { - foreach ($oData->caseScheduler as $key => $val) { - $oData->caseScheduler[$key]['PRO_UID'] = $sNewProUid; - } - } - return true; - } - - /** - * change the GUID Parent for a serialized process, only in serialized data - * - * @param string $sProUid - * @return boolean - */ - function setProcessParent (&$oData, $sParentUid) - { - $oData->process['PRO_PARENT'] = $sParentUid; - $oData->process['PRO_CREATE_DATE'] = date( 'Y-m-d H:i:s' ); - $oData->process['PRO_UPDATE_DATE'] = date( 'Y-m-d H:i:s' ); - return true; - } - - /** - * change and Renew all Task GUID, because the process needs to have a new set of tasks - * - * @param string $oData - * @return boolean - */ - function renewAllTaskGuid (&$oData) - { - $map = array (); - foreach ($oData->tasks as $key => $val) { - $newGuid = $this->getUnusedTaskGUID(); - $map[$val['TAS_UID']] = $newGuid; - $oData->tasks[$key]['TAS_UID'] = $newGuid; - } - if (isset( $oData->routes ) && is_array( $oData->routes )) { - foreach ($oData->routes as $key => $val) { - $newGuid = $map[$val['TAS_UID']]; - $oData->routes[$key]['TAS_UID'] = $newGuid; - if (strlen( $val['ROU_NEXT_TASK'] ) > 0 && $val['ROU_NEXT_TASK'] > 0) { - $newGuid = $map[$val['ROU_NEXT_TASK']]; - $oData->routes[$key]['ROU_NEXT_TASK'] = $newGuid; - } - } - } - - if (isset( $oData->steps ) && is_array( $oData->steps )) { - foreach ($oData->steps as $key => $val) { - $newGuid = $map[$val['TAS_UID']]; - $oData->steps[$key]['TAS_UID'] = $newGuid; - } - } - - if (isset( $oData->steptriggers ) && is_array( $oData->steptriggers )) { - foreach ($oData->steptriggers as $key => $val) { - $newGuid = $map[$val['TAS_UID']]; - $oData->steptriggers[$key]['TAS_UID'] = $newGuid; - } - } - - if (isset( $oData->taskusers ) && is_array( $oData->taskusers )) { - foreach ($oData->taskusers as $key => $val) { - $newGuid = $map[$val['TAS_UID']]; - $oData->taskusers[$key]['TAS_UID'] = $newGuid; - } - } - - if (isset( $oData->subProcess ) && is_array( $oData->subProcess )) { - foreach ($oData->subProcess as $key => $val) { - $newGuid = $map[$val['TAS_PARENT']]; - $oData->subProcess[$key]['TAS_PARENT'] = $newGuid; - if (isset( $map[$val['TAS_UID']] )) { - $newGuid = $map[$val['TAS_UID']]; - $oData->subProcess[$key]['TAS_UID'] = $newGuid; - } - } - } - - if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { - foreach ($oData->objectPermissions as $key => $val) { - if (isset( $map[$val['TAS_UID']] )) { - $newGuid = $map[$val['TAS_UID']]; - $oData->objectPermissions[$key]['TAS_UID'] = $newGuid; - } - } - } - + */ + public function getUnusedDynaformGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->dynaformExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Field Condition GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedFieldConditionGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->fieldsConditionsExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Event GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedEventGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->eventExists( $sNewUid )); + return $sNewUid; + } + + /** + * get a Unused Case Scheduler GUID + * + * @return $sNewUid a new generated Uid + */ + public function getUnusedCaseSchedulerGUID () + { + do { + $sNewUid = G::generateUniqueID(); + } while ($this->caseSchedulerExists( $sNewUid )); + return $sNewUid; + } + + /** + * change the GUID for a serialized process + * + * @param string $sProUid + * @return boolean + */ + public function setProcessGUID (&$oData, $sNewProUid) + { + $sProUid = $oData->process['PRO_UID']; + $oData->process['PRO_UID'] = $sNewProUid; + + if (isset( $oData->tasks ) && is_array( $oData->tasks )) { + foreach ($oData->tasks as $key => $val) { + $oData->tasks[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->routes ) && is_array( $oData->routes )) { + foreach ($oData->routes as $key => $val) { + $oData->routes[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->lanes ) && is_array( $oData->lanes )) { + foreach ($oData->lanes as $key => $val) { + $oData->lanes[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->inputs ) && is_array( $oData->inputs )) { + foreach ($oData->inputs as $key => $val) { + $oData->inputs[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->outputs ) && is_array( $oData->outputs )) { + foreach ($oData->outputs as $key => $val) { + $oData->outputs[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->steps ) && is_array( $oData->steps )) { + foreach ($oData->steps as $key => $val) { + $oData->steps[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->dynaforms ) && is_array( $oData->dynaforms )) { + foreach ($oData->dynaforms as $key => $val) { + $oData->dynaforms[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->triggers ) && is_array( $oData->triggers )) { + foreach ($oData->triggers as $key => $val) { + $oData->triggers[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->reportTables ) && is_array( $oData->reportTables )) { + foreach ($oData->reportTables as $key => $val) { + $oData->reportTables[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->reportTablesVars ) && is_array( $oData->reportTablesVars )) { + foreach ($oData->reportTablesVars as $key => $val) { + $oData->reportTablesVars[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->dbconnections ) && is_array( $oData->dbconnections )) { + foreach ($oData->dbconnections as $key => $val) { + $oData->dbconnections[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->stepSupervisor ) && is_array( $oData->stepSupervisor )) { + foreach ($oData->stepSupervisor as $key => $val) { + $oData->stepSupervisor[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { + foreach ($oData->objectPermissions as $key => $val) { + $oData->objectPermissions[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->caseTracker ) && is_array( $oData->caseTracker )) { + foreach ($oData->caseTracker as $key => $val) { + $oData->caseTracker[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->caseTrackerObject ) && is_array( $oData->caseTrackerObject )) { + foreach ($oData->caseTrackerObject as $key => $val) { + $oData->caseTrackerObject[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->stage ) && is_array( $oData->stage )) { + foreach ($oData->stage as $key => $val) { + $oData->stage[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->subProcess ) && is_array( $oData->subProcess )) { + foreach ($oData->subProcess as $key => $val) { + $oData->subProcess[$key]['PRO_PARENT'] = $sNewProUid; + } + } + + if (isset( $oData->event ) && is_array( $oData->event )) { + foreach ($oData->event as $key => $val) { + $oData->event[$key]['PRO_UID'] = $sNewProUid; + } + } + + if (isset( $oData->caseScheduler ) && is_array( $oData->caseScheduler )) { + foreach ($oData->caseScheduler as $key => $val) { + $oData->caseScheduler[$key]['PRO_UID'] = $sNewProUid; + } + } + return true; + } + + /** + * change the GUID Parent for a serialized process, only in serialized data + * + * @param string $sProUid + * @return boolean + */ + public function setProcessParent (&$oData, $sParentUid) + { + $oData->process['PRO_PARENT'] = $sParentUid; + $oData->process['PRO_CREATE_DATE'] = date( 'Y-m-d H:i:s' ); + $oData->process['PRO_UPDATE_DATE'] = date( 'Y-m-d H:i:s' ); + return true; + } + + /** + * change and Renew all Task GUID, because the process needs to have a new set of tasks + * + * @param string $oData + * @return boolean + */ + public function renewAllTaskGuid (&$oData) + { + $map = array (); + foreach ($oData->tasks as $key => $val) { + $newGuid = $this->getUnusedTaskGUID(); + $map[$val['TAS_UID']] = $newGuid; + $oData->tasks[$key]['TAS_UID'] = $newGuid; + } + if (isset( $oData->routes ) && is_array( $oData->routes )) { + foreach ($oData->routes as $key => $val) { + $newGuid = $map[$val['TAS_UID']]; + $oData->routes[$key]['TAS_UID'] = $newGuid; + if (strlen( $val['ROU_NEXT_TASK'] ) > 0 && $val['ROU_NEXT_TASK'] > 0) { + $newGuid = $map[$val['ROU_NEXT_TASK']]; + $oData->routes[$key]['ROU_NEXT_TASK'] = $newGuid; + } + } + } + + if (isset( $oData->steps ) && is_array( $oData->steps )) { + foreach ($oData->steps as $key => $val) { + $newGuid = $map[$val['TAS_UID']]; + $oData->steps[$key]['TAS_UID'] = $newGuid; + } + } + + if (isset( $oData->steptriggers ) && is_array( $oData->steptriggers )) { + foreach ($oData->steptriggers as $key => $val) { + $newGuid = $map[$val['TAS_UID']]; + $oData->steptriggers[$key]['TAS_UID'] = $newGuid; + } + } + + if (isset( $oData->taskusers ) && is_array( $oData->taskusers )) { + foreach ($oData->taskusers as $key => $val) { + $newGuid = $map[$val['TAS_UID']]; + $oData->taskusers[$key]['TAS_UID'] = $newGuid; + } + } + + if (isset( $oData->subProcess ) && is_array( $oData->subProcess )) { + foreach ($oData->subProcess as $key => $val) { + $newGuid = $map[$val['TAS_PARENT']]; + $oData->subProcess[$key]['TAS_PARENT'] = $newGuid; + if (isset( $map[$val['TAS_UID']] )) { + $newGuid = $map[$val['TAS_UID']]; + $oData->subProcess[$key]['TAS_UID'] = $newGuid; + } + } + } + + if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { + foreach ($oData->objectPermissions as $key => $val) { + if (isset( $map[$val['TAS_UID']] )) { + $newGuid = $map[$val['TAS_UID']]; + $oData->objectPermissions[$key]['TAS_UID'] = $newGuid; + } + } + } + // New process bpmn - if (isset( $oData->event ) && is_array( $oData->event )) { - foreach ($oData->event as $key => $val) { - if (isset( $val['EVN_TAS_UID_FROM'] ) && isset( $map[$val['EVN_TAS_UID_FROM']] )) { - $newGuid = $map[$val['EVN_TAS_UID_FROM']]; - $oData->event[$key]['EVN_TAS_UID_FROM'] = $newGuid; - } - } - } - - if (isset( $oData->caseScheduler ) && is_array( $oData->caseScheduler )) { - foreach ($oData->caseScheduler as $key => $val) { - if (isset( $map[$val['TAS_UID']] )) { - $newGuid = $map[$val['TAS_UID']]; - $oData->caseScheduler[$key]['TAS_UID'] = $newGuid; - } - } - } - - } - - /** - * change and Renew all Dynaform GUID, because the process needs to have a new set of dynaforms - * - * @param string $oData - * @return boolean - */ - function renewAllDynaformGuid (&$oData) - { - $map = array (); - foreach ($oData->dynaforms as $key => $val) { - $newGuid = $this->getUnusedDynaformGUID(); - $map[$val['DYN_UID']] = $newGuid; - $oData->dynaforms[$key]['DYN_UID'] = $newGuid; - } - - if (isset( $oData->process['PRO_DYNAFORMS'] ) && ! is_array( $oData->process['PRO_DYNAFORMS'] )) { - $oData->process['PRO_DYNAFORMS'] = @unserialize( $oData->process['PRO_DYNAFORMS'] ); - } - - if (! isset( $oData->process['PRO_DYNAFORMS']['PROCESS'] )) { - $oData->process['PRO_DYNAFORMS']['PROCESS'] = ''; - } - - if ($oData->process['PRO_DYNAFORMS']['PROCESS'] != '') { - $oData->process['PRO_DYNAFORMS']['PROCESS'] = $map[$oData->process['PRO_DYNAFORMS']['PROCESS']]; - } - - foreach ($oData->steps as $key => $val) { - if ($val['STEP_TYPE_OBJ'] == 'DYNAFORM') { - $newGuid = $map[$val['STEP_UID_OBJ']]; - $oData->steps[$key]['STEP_UID_OBJ'] = $newGuid; - } - } - - if (isset( $oData->caseTrackerObject ) && is_array( $oData->caseTrackerObject )) { - foreach ($oData->caseTrackerObject as $key => $val) { - if ($val['CTO_TYPE_OBJ'] == 'DYNAFORM') { - $newGuid = $map[$val['CTO_UID_OBJ']]; - $oData->steps[$key]['CTO_UID_OBJ'] = $newGuid; - } - } - } - if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { - foreach ($oData->objectPermissions as $key => $val) { - if ($val['OP_OBJ_TYPE'] == 'DYNAFORM') { - if (isset( $map[$val['OP_OBJ_UID']] )) { - $newGuid = $map[$val['OP_OBJ_UID']]; - $oData->objectPermissions[$key]['OP_OBJ_UID'] = $newGuid; - } - } - } - } - if (isset( $oData->stepSupervisor ) && is_array( $oData->stepSupervisor )) { - foreach ($oData->stepSupervisor as $key => $val) { - if ($val['STEP_TYPE_OBJ'] == 'DYNAFORM') { - $newGuid = $map[$val['STEP_UID_OBJ']]; - $oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid; - } - } - foreach ($oData->dynaformFiles as $key => $val) { - $newGuid = $map[$key]; - $oData->dynaformFiles[$key] = $newGuid; - } - } - if (isset( $oData->gridFiles )) { - foreach ($oData->gridFiles as $key => $val) { - $newGuid = $map[$key]; - $oData->gridFiles[$key] = $newGuid; - } - } - if (isset( $oData->fieldCondition ) && is_array( $oData->fieldCondition )) { - foreach ($oData->fieldCondition as $key => $val) { - $newGuid = $map[$val['FCD_DYN_UID']]; - $oData->fieldCondition[$key]['FCD_DYN_UID'] = $newGuid; - } - } - - } - - /** - * get a Process with a search based in the process Uid - * - * @param $sProUid string process Uid - * @return $oProcess Process object - */ - function getProcessRow ($sProUid, $getAllLang = false) - { - $oProcess = new Process(); - return $oProcess->Load( $sProUid, $getAllLang ); - } - - /** - * creates a process new process if a process exists with the same uid of the - * $row['PRO_UID'] parameter then deletes it from the database and creates - * a new one based on the $row parameter - * - * @param $row array parameter with the process data - * @return $oProcess Process object - */ - function createProcessRow ($row) - { - $oProcess = new Process(); - if ($oProcess->processExists( $row['PRO_UID'] )) { - $oProcess->remove( $row['PRO_UID'] ); - } - - return $oProcess->createRow( $row ); - } - - /** - * Update a Process register in DB, if the process doesn't exist with the same - * uid of the $row['PRO_UID'] parameter the function creates a new one based - * on the $row parameter data. - * - * @param $row array parameter with the process data - * @return $oProcess Process object - */ - function updateProcessRow ($row) - { - $oProcess = new Process(); - if ($oProcess->processExists( $row['PRO_UID'] )) - $oProcess->update( $row ); - else - $oProcess->create( $row ); - } - - /** - * Gets the subprocess data from a process and returns it in an array. - * - * @param $sProUid string for the process Uid - * @return $aSubProcess array - */ - function getSubProcessRow ($sProUid) - { - try { - $aSubProcess = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( SubProcessPeer::PRO_PARENT, $sProUid ); - $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aSubProcess[] = $aRow; - $oDataset->next(); - } - return $aSubProcess; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets a case Tracker Row from a process and returns it in an array. - * - * @param $sProUid string for the process Uid - * @return $aCaseTracker array - */ - - function getCaseTrackerRow ($sProUid) - { - try { - $aCaseTracker = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( CaseTrackerPeer::PRO_UID, $sProUid ); - $oDataset = CaseTrackerPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aCaseTracker[] = $aRow; - $oDataset->next(); - } - return $aCaseTracker; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets a case TrackerObject Row from a process and returns it in an array. - * - * @param $sProUid string for the process Uid - * @return $aCaseTracker array - */ - function getCaseTrackerObjectRow ($sProUid) - { - try { - $aCaseTrackerObject = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( CaseTrackerObjectPeer::PRO_UID, $sProUid ); - $oDataset = CaseTrackerObjectPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aCaseTrackerObject[] = $aRow; - $oDataset->next(); - } - return $aCaseTrackerObject; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets a Stage Row from a process and returns it in an array. - * - * @param $sProUid string for the process Uid - * @return $aStage array - */ - function getStageRow ($sProUid) - { - try { - $aStage = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StagePeer::PRO_UID, $sProUid ); - $oDataset = StagePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oStage = new Stage(); - $aStage[] = $oStage->load( $aRow['STG_UID'] ); - $oDataset->next(); - } - return $aStage; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets the Field Conditions from a process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return $aFieldCondition array - */ - - function getFieldCondition ($sProUid) - { - try { - $aFieldCondition = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); - $oCriteria->addJoin( DynaformPeer::DYN_UID, FieldConditionPeer::FCD_DYN_UID ); - - $oDataset = FieldConditionPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aFieldCondition[] = $aRow; - $oDataset->next(); - } - return $aFieldCondition; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets the Event rows from a process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return $aEvent array - */ - function getEventRow ($sProUid) - { - try { - $aEvent = array (); - $oCriteria = new Criteria( 'workflow' ); - - $oCriteria->add( EventPeer::PRO_UID, $sProUid ); - $oDataset = EventPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oEvent = new Event(); - $aEvent[] = $oEvent->load( $aRow['EVN_UID'] ); - $oDataset->next(); - } - return $aEvent; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets the Cases Scheduler rows from a process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return $aCaseScheduler array - */ - function getCaseSchedulerRow ($sProUid) - { - try { - $aCaseScheduler = array (); - $oCriteria = new Criteria( 'workflow' ); - - $oCriteria->add( CaseSchedulerPeer::PRO_UID, $sProUid ); - $oDataset = CaseSchedulerPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oCaseScheduler = new CaseScheduler(); - $aCaseScheduler[] = $oCaseScheduler->load( $aRow['SCH_UID'] ); - $oDataset->next(); - } - return $aCaseScheduler; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Gets processCategory record, if the process had one - * - * @param $sProUid string for the process Uid - * @return $processCategory array - */ - public function getProcessCategoryRow ($sProUid) - { - $process = ProcessPeer::retrieveByPK( $sProUid ); - - if ($process->getProCategory() == '') { - return null; - } - - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ProcessCategoryPeer::CATEGORY_UID, $process->getProCategory() ); - $oDataset = ProcessCategoryPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - - return $oDataset->getRow(); - } - - /** - * Get all Swimlanes Elements for any Process - * - * @param string $sProUid - * @return array - */ - public function getAllLanes ($sProUid) - { - try { - $aLanes = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( SwimlanesElementsPeer::PRO_UID, $sProUid ); - $oDataset = SwimlanesElementsPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oSwim = new SwimlanesElements(); - $aLanes[] = $oSwim->Load( $aRow['SWI_UID'] ); - $oDataset->next(); - } - return $aLanes; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Get Task Rows from a process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return $oTask array - */ - function getTaskRows ($sProUid) - { - $oTask = new Tasks(); - return $oTask->getAllTasks( $sProUid ); - } - - /** - * Create Task Rows from a $aTasks array data and returns those in an array. - * - * @param $aTasks array - * @return $oTask array - */ - function createTaskRows ($aTasks) - { - $oTask = new Tasks(); - return $oTask->createTaskRows( $aTasks ); - } - - /** - * Update Task Rows from a $aTasks array data and returns those in an array. - * - * @param $aTasks array - * @return $oTask array - */ - function updateTaskRows ($aTasks) - { - $oTask = new Tasks(); - return $oTask->updateTaskRows( $aTasks ); - } - - /** - * Gets all Route rows from a Process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return $oTask Tasks array - */ - function getRouteRows ($sProUid) - { - $oTask = new Tasks(); - return $oTask->getAllRoutes( $sProUid ); - } - - /** - * Create Route Rows from a $aRoutes array data and returns those in an array. - * - * @param $aRoutes array - * @return $oTask Tasks array - */ - function createRouteRows ($aRoutes) - { - $oTask = new Tasks(); - return $oTask->createRouteRows( $aRoutes ); - } - - /** - * Update Route Rows from a $aRoutes array data and returns those in an array. - * - * @param $aRoutes array - * @return $oTask Tasks array - */ - function updateRouteRows ($aRoutes) - { - $oTask = new Tasks(); - return $oTask->updateRouteRows( $aRoutes ); - } - - /** - * Get Lane Rows from a Process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return array - */ - function getLaneRows ($sProUid) - { - return $this->getAllLanes( $sProUid ); - } - - /** - * Get Gateway Rows from a process and returns those in an array. - * - * @param $sProUid string for the process Uid - * @return $oTask array - */ - function getGatewayRows ($sProUid) - { - $oTask = new Tasks(); - return $oTask->getAllGateways( $sProUid ); - } - - /** - * Create Gateway Rows from a $aGateways array data and returns those in an array. - * - * @param $aGateways array - * @return $oGateway array - */ - function createGatewayRows ($aGateways) - { - $oTask = new Tasks(); - return $oTask->createGatewayRows( $aGateways ); - } - - /** - * Create Lane Rows from a $aLanes array data and returns those in an array. - * - * @param $aLanes array. - * @return void - */ - function createLaneRows ($aLanes) - { - foreach ($aLanes as $key => $row) { - $oLane = new SwimlanesElements(); - if ($oLane->swimlanesElementsExists( $row['SWI_UID'] )) - $oLane->remove( $row['SWI_UID'] ); - - $res = $oLane->create( $row ); - } - return; - } - - /** - * Create Sub Process rows from an array, removing those subprocesses with - * the same UID. - * - * @param $SubProcess array - * @return void. - */ - function createSubProcessRows ($SubProcess) - { - foreach ($SubProcess as $key => $row) { - $oSubProcess = new SubProcess(); - if ($oSubProcess->subProcessExists( $row['SP_UID'] )) - $oSubProcess->remove( $row['SP_UID'] ); - - $res = $oSubProcess->create( $row ); - } - return; - } - - /** - * Create Case Tracker rows from an array, removing those Trackers with - * the same UID. - * - * @param $CaseTracker array. - * @return void - */ - function createCaseTrackerRows ($CaseTracker) - { - if (is_array( $CaseTracker )) - foreach ($CaseTracker as $key => $row) { - $oCaseTracker = new CaseTracker(); - if ($oCaseTracker->caseTrackerExists( $row['PRO_UID'] )) - $oCaseTracker->remove( $row['PRO_UID'] ); - $res = $oCaseTracker->create( $row ); - } - return; - } - - /** - * Create Case Tracker Objects rows from an array, removing those Objects - * with the same UID, and recreaiting those from the array data. - * - * @param $CaseTrackerObject array. - * @return void - */ - function createCaseTrackerObjectRows ($CaseTrackerObject) - { - foreach ($CaseTrackerObject as $key => $row) { - $oCaseTrackerObject = new CaseTrackerObject(); - if ($oCaseTrackerObject->caseTrackerObjectExists( $row['CTO_UID'] )) - $oCaseTrackerObject->remove( $row['CTO_UID'] ); - $res = $oCaseTrackerObject->create( $row ); - } - return; - } - - /** - * Create Object Permissions rows from an array, removing those Objects - * with the same UID, and recreaiting the records from the array data. - * - * @param $sProUid string for the process Uid. - * @return void - */ - function createObjectPermissionsRows ($ObjectPermissions) - { - foreach ($ObjectPermissions as $key => $row) { - $oObjectPermissions = new ObjectPermission(); - if ($oObjectPermissions->Exists( $row['OP_UID'] )) - $oObjectPermissions->remove( $row['OP_UID'] ); - $res = $oObjectPermissions->create( $row ); - } - return; - } - - /** - * Create Stage rows from an array, removing those Objects - * with the same UID, and recreaiting the records from the array data. - * - * @param $Stage array. - * @return void - */ - function createStageRows ($Stage) - { - foreach ($Stage as $key => $row) { - $oStage = new Stage(); - if ($oStage->Exists( $row['STG_UID'] )) - $oStage->remove( $row['STG_UID'] ); - $res = $oStage->create( $row ); - } - return; - } - - /** - * Create Field Conditions from an array of Field Conditions and Dynaforms, - * removing those Objects with the same UID, and recreaiting the records - * from the arrays data. - * - * @param $aFieldCondition array. - * @param $aDynaform array. - * @return void - */ - function createFieldCondition ($aFieldCondition, $aDynaform) - { - if (is_array( $aFieldCondition )) - foreach ($aFieldCondition as $key => $row) { - $oFieldCondition = new FieldCondition(); - if ($oFieldCondition->fieldConditionExists( $row['FCD_UID'], $aDynaform )) - $oFieldCondition->remove( $row['FCD_UID'] ); - $res = $oFieldCondition->create( $row ); - } - return; - } - - /** - * Create Event rows from an array, removing those Objects - * with the same UID, and recreaiting the records from the array data. - * - * @param $Event array. - * @return void - */ - function createEventRows ($Event) - { - foreach ($Event as $key => $row) { - $oEvent = new Event(); - if ($oEvent->Exists( $row['EVN_UID'] )) - $oEvent->remove( $row['EVN_UID'] ); - - $res = $oEvent->create( $row ); - } - return; - } - - /** - * Create Case Scheduler Rows from an array, removing those Objects - * with the same UID, and recreaiting the records from the array data. - * - * @param $CaseScheduler array. - * @return void - */ - function createCaseSchedulerRows ($CaseScheduler) - { - foreach ($CaseScheduler as $key => $row) { - $oCaseScheduler = new CaseScheduler(); - if ($oCaseScheduler->Exists( $row['SCH_UID'] )) - $oCaseScheduler->remove( $row['SCH_UID'] ); - - $res = $oCaseScheduler->create( $row ); - } - return; - } - - /** - * Create ProcessCategory record - * - * @param $ProcessCategory array. - * @return void - */ - function createProcessCategoryRow ($row) - { - if ($row && is_array( $row ) && isset( $row['CATEGORY_UID'] )) { - $record = ProcessCategoryPeer::retrieveByPK( $row['CATEGORY_UID'] ); + if (isset( $oData->event ) && is_array( $oData->event )) { + foreach ($oData->event as $key => $val) { + if (isset( $val['EVN_TAS_UID_FROM'] ) && isset( $map[$val['EVN_TAS_UID_FROM']] )) { + $newGuid = $map[$val['EVN_TAS_UID_FROM']]; + $oData->event[$key]['EVN_TAS_UID_FROM'] = $newGuid; + } + } + } + + if (isset( $oData->caseScheduler ) && is_array( $oData->caseScheduler )) { + foreach ($oData->caseScheduler as $key => $val) { + if (isset( $map[$val['TAS_UID']] )) { + $newGuid = $map[$val['TAS_UID']]; + $oData->caseScheduler[$key]['TAS_UID'] = $newGuid; + } + } + } + + } + + /** + * change and Renew all Dynaform GUID, because the process needs to have a new set of dynaforms + * + * @param string $oData + * @return boolean + */ + public function renewAllDynaformGuid (&$oData) + { + $map = array (); + foreach ($oData->dynaforms as $key => $val) { + $newGuid = $this->getUnusedDynaformGUID(); + $map[$val['DYN_UID']] = $newGuid; + $oData->dynaforms[$key]['DYN_UID'] = $newGuid; + } + + if (isset( $oData->process['PRO_DYNAFORMS'] ) && ! is_array( $oData->process['PRO_DYNAFORMS'] )) { + $oData->process['PRO_DYNAFORMS'] = @unserialize( $oData->process['PRO_DYNAFORMS'] ); + } + + if (! isset( $oData->process['PRO_DYNAFORMS']['PROCESS'] )) { + $oData->process['PRO_DYNAFORMS']['PROCESS'] = ''; + } + + if ($oData->process['PRO_DYNAFORMS']['PROCESS'] != '') { + $oData->process['PRO_DYNAFORMS']['PROCESS'] = $map[$oData->process['PRO_DYNAFORMS']['PROCESS']]; + } + + foreach ($oData->steps as $key => $val) { + if ($val['STEP_TYPE_OBJ'] == 'DYNAFORM') { + $newGuid = $map[$val['STEP_UID_OBJ']]; + $oData->steps[$key]['STEP_UID_OBJ'] = $newGuid; + } + } + + if (isset( $oData->caseTrackerObject ) && is_array( $oData->caseTrackerObject )) { + foreach ($oData->caseTrackerObject as $key => $val) { + if ($val['CTO_TYPE_OBJ'] == 'DYNAFORM') { + $newGuid = $map[$val['CTO_UID_OBJ']]; + $oData->steps[$key]['CTO_UID_OBJ'] = $newGuid; + } + } + } + if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { + foreach ($oData->objectPermissions as $key => $val) { + if ($val['OP_OBJ_TYPE'] == 'DYNAFORM') { + if (isset( $map[$val['OP_OBJ_UID']] )) { + $newGuid = $map[$val['OP_OBJ_UID']]; + $oData->objectPermissions[$key]['OP_OBJ_UID'] = $newGuid; + } + } + } + } + if (isset( $oData->stepSupervisor ) && is_array( $oData->stepSupervisor )) { + foreach ($oData->stepSupervisor as $key => $val) { + if ($val['STEP_TYPE_OBJ'] == 'DYNAFORM') { + $newGuid = $map[$val['STEP_UID_OBJ']]; + $oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid; + } + } + foreach ($oData->dynaformFiles as $key => $val) { + $newGuid = $map[$key]; + $oData->dynaformFiles[$key] = $newGuid; + } + } + if (isset( $oData->gridFiles )) { + foreach ($oData->gridFiles as $key => $val) { + $newGuid = $map[$key]; + $oData->gridFiles[$key] = $newGuid; + } + } + if (isset( $oData->fieldCondition ) && is_array( $oData->fieldCondition )) { + foreach ($oData->fieldCondition as $key => $val) { + $newGuid = $map[$val['FCD_DYN_UID']]; + $oData->fieldCondition[$key]['FCD_DYN_UID'] = $newGuid; + } + } + + } + + /** + * get a Process with a search based in the process Uid + * + * @param $sProUid string process Uid + * @return $oProcess Process object + */ + public function getProcessRow ($sProUid, $getAllLang = false) + { + $oProcess = new Process(); + return $oProcess->Load( $sProUid, $getAllLang ); + } + + /** + * creates a process new process if a process exists with the same uid of the + * $row['PRO_UID'] parameter then deletes it from the database and creates + * a new one based on the $row parameter + * + * @param $row array parameter with the process data + * @return $oProcess Process object + */ + public function createProcessRow ($row) + { + $oProcess = new Process(); + if ($oProcess->processExists( $row['PRO_UID'] )) { + $oProcess->remove( $row['PRO_UID'] ); + } + return $oProcess->createRow( $row ); + } + + /** + * Update a Process register in DB, if the process doesn't exist with the same + * uid of the $row['PRO_UID'] parameter the function creates a new one based + * on the $row parameter data. + * + * @param $row array parameter with the process data + * @return $oProcess Process object + */ + public function updateProcessRow ($row) + { + $oProcess = new Process(); + if ($oProcess->processExists( $row['PRO_UID'] )) { + $oProcess->update( $row ); + } else { + $oProcess->create( $row ); + } + } + + /** + * Gets the subprocess data from a process and returns it in an array. + * + * @param $sProUid string for the process Uid + * @return $aSubProcess array + */ + public function getSubProcessRow ($sProUid) + { + try { + $aSubProcess = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( SubProcessPeer::PRO_PARENT, $sProUid ); + $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aSubProcess[] = $aRow; + $oDataset->next(); + } + return $aSubProcess; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets a case Tracker Row from a process and returns it in an array. + * + * @param $sProUid string for the process Uid + * @return $aCaseTracker array + */ + + public function getCaseTrackerRow ($sProUid) + { + try { + $aCaseTracker = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( CaseTrackerPeer::PRO_UID, $sProUid ); + $oDataset = CaseTrackerPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aCaseTracker[] = $aRow; + $oDataset->next(); + } + return $aCaseTracker; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets a case TrackerObject Row from a process and returns it in an array. + * + * @param $sProUid string for the process Uid + * @return $aCaseTracker array + */ + public function getCaseTrackerObjectRow ($sProUid) + { + try { + $aCaseTrackerObject = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( CaseTrackerObjectPeer::PRO_UID, $sProUid ); + $oDataset = CaseTrackerObjectPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aCaseTrackerObject[] = $aRow; + $oDataset->next(); + } + return $aCaseTrackerObject; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets a Stage Row from a process and returns it in an array. + * + * @param $sProUid string for the process Uid + * @return $aStage array + */ + public function getStageRow ($sProUid) + { + try { + $aStage = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StagePeer::PRO_UID, $sProUid ); + $oDataset = StagePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oStage = new Stage(); + $aStage[] = $oStage->load( $aRow['STG_UID'] ); + $oDataset->next(); + } + return $aStage; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets the Field Conditions from a process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return $aFieldCondition array + */ + + public function getFieldCondition ($sProUid) + { + try { + $aFieldCondition = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); + $oCriteria->addJoin( DynaformPeer::DYN_UID, FieldConditionPeer::FCD_DYN_UID ); + $oDataset = FieldConditionPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aFieldCondition[] = $aRow; + $oDataset->next(); + } + return $aFieldCondition; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets the Event rows from a process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return $aEvent array + */ + public function getEventRow ($sProUid) + { + try { + $aEvent = array (); + $oCriteria = new Criteria( 'workflow' ); + + $oCriteria->add( EventPeer::PRO_UID, $sProUid ); + $oDataset = EventPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oEvent = new Event(); + $aEvent[] = $oEvent->load( $aRow['EVN_UID'] ); + $oDataset->next(); + } + return $aEvent; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets the Cases Scheduler rows from a process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return $aCaseScheduler array + */ + public function getCaseSchedulerRow ($sProUid) + { + try { + $aCaseScheduler = array (); + $oCriteria = new Criteria( 'workflow' ); + + $oCriteria->add( CaseSchedulerPeer::PRO_UID, $sProUid ); + $oDataset = CaseSchedulerPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oCaseScheduler = new CaseScheduler(); + $aCaseScheduler[] = $oCaseScheduler->load( $aRow['SCH_UID'] ); + $oDataset->next(); + } + return $aCaseScheduler; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Gets processCategory record, if the process had one + * + * @param $sProUid string for the process Uid + * @return $processCategory array + */ + public function getProcessCategoryRow ($sProUid) + { + $process = ProcessPeer::retrieveByPK( $sProUid ); + + if ($process->getProCategory() == '') { + return null; + } + + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ProcessCategoryPeer::CATEGORY_UID, $process->getProCategory() ); + $oDataset = ProcessCategoryPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + + return $oDataset->getRow(); + } + + /** + * Get all Swimlanes Elements for any Process + * + * @param string $sProUid + * @return array + */ + public function getAllLanes ($sProUid) + { + try { + $aLanes = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( SwimlanesElementsPeer::PRO_UID, $sProUid ); + $oDataset = SwimlanesElementsPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oSwim = new SwimlanesElements(); + $aLanes[] = $oSwim->Load( $aRow['SWI_UID'] ); + $oDataset->next(); + } + return $aLanes; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Get Task Rows from a process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return $oTask array + */ + public function getTaskRows ($sProUid) + { + $oTask = new Tasks(); + return $oTask->getAllTasks( $sProUid ); + } + + /** + * Create Task Rows from a $aTasks array data and returns those in an array. + * + * @param $aTasks array + * @return $oTask array + */ + public function createTaskRows ($aTasks) + { + $oTask = new Tasks(); + return $oTask->createTaskRows( $aTasks ); + } + + /** + * Update Task Rows from a $aTasks array data and returns those in an array. + * + * @param $aTasks array + * @return $oTask array + */ + public function updateTaskRows ($aTasks) + { + $oTask = new Tasks(); + return $oTask->updateTaskRows( $aTasks ); + } + + /** + * Gets all Route rows from a Process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return $oTask Tasks array + */ + public function getRouteRows ($sProUid) + { + $oTask = new Tasks(); + return $oTask->getAllRoutes( $sProUid ); + } + + /** + * Create Route Rows from a $aRoutes array data and returns those in an array. + * + * @param $aRoutes array + * @return $oTask Tasks array + */ + public function createRouteRows ($aRoutes) + { + $oTask = new Tasks(); + return $oTask->createRouteRows( $aRoutes ); + } + + /** + * Update Route Rows from a $aRoutes array data and returns those in an array. + * + * @param $aRoutes array + * @return $oTask Tasks array + */ + public function updateRouteRows ($aRoutes) + { + $oTask = new Tasks(); + return $oTask->updateRouteRows( $aRoutes ); + } + + /** + * Get Lane Rows from a Process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return array + */ + public function getLaneRows ($sProUid) + { + return $this->getAllLanes( $sProUid ); + } + + /** + * Get Gateway Rows from a process and returns those in an array. + * + * @param $sProUid string for the process Uid + * @return $oTask array + */ + public function getGatewayRows ($sProUid) + { + $oTask = new Tasks(); + return $oTask->getAllGateways( $sProUid ); + } + + /** + * Create Gateway Rows from a $aGateways array data and returns those in an array. + * + * @param $aGateways array + * @return $oGateway array + */ + public function createGatewayRows ($aGateways) + { + $oTask = new Tasks(); + return $oTask->createGatewayRows( $aGateways ); + } + + /** + * Create Lane Rows from a $aLanes array data and returns those in an array. + * + * @param $aLanes array. + * @return void + */ + public function createLaneRows ($aLanes) + { + foreach ($aLanes as $key => $row) { + $oLane = new SwimlanesElements(); + if ($oLane->swimlanesElementsExists( $row['SWI_UID'] )) { + $oLane->remove( $row['SWI_UID'] ); + } + $res = $oLane->create( $row ); + } + return; + } + + /** + * Create Sub Process rows from an array, removing those subprocesses with + * the same UID. + * + * @param $SubProcess array + * @return void. + */ + public function createSubProcessRows ($SubProcess) + { + foreach ($SubProcess as $key => $row) { + $oSubProcess = new SubProcess(); + if ($oSubProcess->subProcessExists( $row['SP_UID'] )) { + $oSubProcess->remove( $row['SP_UID'] ); + } + $res = $oSubProcess->create( $row ); + } + return; + } + + /** + * Create Case Tracker rows from an array, removing those Trackers with + * the same UID. + * + * @param $CaseTracker array. + * @return void + */ + public function createCaseTrackerRows ($CaseTracker) + { + if (is_array( $CaseTracker )) { + foreach ($CaseTracker as $key => $row) { + $oCaseTracker = new CaseTracker(); + if ($oCaseTracker->caseTrackerExists( $row['PRO_UID'] )) { + $oCaseTracker->remove( $row['PRO_UID'] ); + } + $res = $oCaseTracker->create( $row ); + } + } + return; + } + + /** + * Create Case Tracker Objects rows from an array, removing those Objects + * with the same UID, and recreaiting those from the array data. + * + * @param $CaseTrackerObject array. + * @return void + */ + public function createCaseTrackerObjectRows ($CaseTrackerObject) + { + foreach ($CaseTrackerObject as $key => $row) { + $oCaseTrackerObject = new CaseTrackerObject(); + if ($oCaseTrackerObject->caseTrackerObjectExists( $row['CTO_UID'] )) { + $oCaseTrackerObject->remove( $row['CTO_UID'] ); + } + $res = $oCaseTrackerObject->create( $row ); + } + return; + } + + /** + * Create Object Permissions rows from an array, removing those Objects + * with the same UID, and recreaiting the records from the array data. + * + * @param $sProUid string for the process Uid. + * @return void + */ + public function createObjectPermissionsRows ($ObjectPermissions) + { + foreach ($ObjectPermissions as $key => $row) { + $oObjectPermissions = new ObjectPermission(); + if ($oObjectPermissions->Exists( $row['OP_UID'] )) { + $oObjectPermissions->remove( $row['OP_UID'] ); + } + $res = $oObjectPermissions->create( $row ); + } + return; + } + + /** + * Create Stage rows from an array, removing those Objects + * with the same UID, and recreaiting the records from the array data. + * + * @param $Stage array. + * @return void + */ + public function createStageRows ($Stage) + { + foreach ($Stage as $key => $row) { + $oStage = new Stage(); + if ($oStage->Exists( $row['STG_UID'] )) { + $oStage->remove( $row['STG_UID'] ); + } + $res = $oStage->create( $row ); + } + return; + } + + /** + * Create Field Conditions from an array of Field Conditions and Dynaforms, + * removing those Objects with the same UID, and recreaiting the records + * from the arrays data. + * + * @param $aFieldCondition array. + * @param $aDynaform array. + * @return void + */ + public function createFieldCondition ($aFieldCondition, $aDynaform) + { + if (is_array( $aFieldCondition )) { + foreach ($aFieldCondition as $key => $row) { + $oFieldCondition = new FieldCondition(); + if ($oFieldCondition->fieldConditionExists( $row['FCD_UID'], $aDynaform )) { + $oFieldCondition->remove( $row['FCD_UID'] ); + } + $res = $oFieldCondition->create( $row ); + } + } + return; + } + + /** + * Create Event rows from an array, removing those Objects + * with the same UID, and recreaiting the records from the array data. + * + * @param $Event array. + * @return void + */ + public function createEventRows ($Event) + { + foreach ($Event as $key => $row) { + $oEvent = new Event(); + if ($oEvent->Exists( $row['EVN_UID'] )) { + $oEvent->remove( $row['EVN_UID'] ); + } + $res = $oEvent->create( $row ); + } + return; + } + + /** + * Create Case Scheduler Rows from an array, removing those Objects + * with the same UID, and recreaiting the records from the array data. + * + * @param $CaseScheduler array. + * @return void + */ + public function createCaseSchedulerRows ($CaseScheduler) + { + foreach ($CaseScheduler as $key => $row) { + $oCaseScheduler = new CaseScheduler(); + if ($oCaseScheduler->Exists( $row['SCH_UID'] )) { + $oCaseScheduler->remove( $row['SCH_UID'] ); + } + $res = $oCaseScheduler->create( $row ); + } + return; + } + + /** + * Create ProcessCategory record + * + * @param $ProcessCategory array. + * @return void + */ + public function createProcessCategoryRow ($row) + { + if ($row && is_array( $row ) && isset( $row['CATEGORY_UID'] )) { + $record = ProcessCategoryPeer::retrieveByPK( $row['CATEGORY_UID'] ); // create only if the category doesn't exists - if (! $record) { - $processCategory = new ProcessCategory(); - $processCategory->fromArray( $row, BasePeer::TYPE_FIELDNAME ); - $processCategory->save(); - } - } - } - - /** - * Gets Input Documents Rows from aProcess. - * - * @param $sProUid string. - * @return void - */ - function getInputRows ($sProUid) - { - try { - $aInput = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( InputdocumentPeer::PRO_UID, $sProUid ); - $oDataset = InputdocumentPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oInput = new Inputdocument(); - $aInput[] = $oInput->Load( $aRow['INP_DOC_UID'] ); - $oDataset->next(); - } - return $aInput; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Create Input Documents Rows from an array, removing those Objects - * with the same UID, and recreaiting the records from the array data. - * - * @param $aInput array. - * @return void - */ - function createInputRows ($aInput) - { - foreach ($aInput as $key => $row) { - $oInput = new Inputdocument(); + if (! $record) { + $processCategory = new ProcessCategory(); + $processCategory->fromArray( $row, BasePeer::TYPE_FIELDNAME ); + $processCategory->save(); + } + } + } + + /** + * Gets Input Documents Rows from aProcess. + * + * @param $sProUid string. + * @return void + */ + public function getInputRows ($sProUid) + { + try { + $aInput = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( InputdocumentPeer::PRO_UID, $sProUid ); + $oDataset = InputdocumentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oInput = new Inputdocument(); + $aInput[] = $oInput->Load( $aRow['INP_DOC_UID'] ); + $oDataset->next(); + } + return $aInput; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Create Input Documents Rows from an array, removing those Objects + * with the same UID, and recreaiting the records from the array data. + * + * @param $aInput array. + * @return void + */ + public function createInputRows ($aInput) + { + foreach ($aInput as $key => $row) { + $oInput = new Inputdocument(); //unset ($row['TAS_UID']); - if ($oInput->InputExists( $row['INP_DOC_UID'] )) - $oInput->remove( $row['INP_DOC_UID'] ); - - $res = $oInput->create( $row ); - } - return; - } - - /** - * change and Renew all Input GUID, because the process needs to have a new set of Inputs - * - * @param string $oData - * @return boolean - */ - function renewAllInputGuid (&$oData) - { - $map = array (); - foreach ($oData->inputs as $key => $val) { - $newGuid = $this->getUnusedInputGUID(); - $map[$val['INP_DOC_UID']] = $newGuid; - $oData->inputs[$key]['INP_DOC_UID'] = $newGuid; - } - foreach ($oData->steps as $key => $val) { - if (isset( $val['STEP_TYPE_OBJ'] )) { - if ($val['STEP_TYPE_OBJ'] == 'INPUT_DOCUMENT') { - $newGuid = $map[$val['STEP_UID_OBJ']]; - $oData->steps[$key]['STEP_UID_OBJ'] = $newGuid; - } - } - } - if (isset( $oData->caseTrackerObject ) && is_array( $oData->caseTrackerObject )) { - foreach ($oData->caseTrackerObject as $key => $val) { - if ($val['CTO_TYPE_OBJ'] == 'INPUT_DOCUMENT') { - $newGuid = $map[$val['CTO_UID_OBJ']]; - $oData->steps[$key]['CTO_UID_OBJ'] = $newGuid; - } - } - } - if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { - foreach ($oData->objectPermissions as $key => $val) { - if ($val['OP_OBJ_TYPE'] == 'INPUT_DOCUMENT') { - if (isset( $map[$val['OP_OBJ_UID']] )) { - $newGuid = $map[$val['OP_OBJ_UID']]; - $oData->objectPermissions[$key]['OP_OBJ_UID'] = $newGuid; - } - } - } - } - if (isset( $oData->stepSupervisor ) && is_array( $oData->stepSupervisor )) { - foreach ($oData->stepSupervisor as $key => $val) { - if ($val['STEP_TYPE_OBJ'] == 'INPUT_DOCUMENT') { - $newGuid = $map[$val['STEP_UID_OBJ']]; - $oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid; - } - } - } - } - - /** - * Gets the Output Documents Rows from a Process. - * - * @param $sProUid string. - * @return $aOutput array - */ - function getOutputRows ($sProUid) - { - try { - $aOutput = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( OutputdocumentPeer::PRO_UID, $sProUid ); - $oDataset = OutputdocumentPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oOutput = new Outputdocument(); - $aOutput[] = $oOutput->Load( $aRow['OUT_DOC_UID'] ); - $oDataset->next(); - } - return $aOutput; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Create Input Documents Rows from an array, removing those Objects - * with the same UID, and recreaiting the records from the array data. - * - * @param $aOutput array. - * @return void - */ - function createOutputRows ($aOutput) - { - foreach ($aOutput as $key => $row) { - $oOutput = new Outputdocument(); + if ($oInput->InputExists( $row['INP_DOC_UID'] )) { + $oInput->remove( $row['INP_DOC_UID'] ); + } + $res = $oInput->create( $row ); + } + return; + } + + /** + * change and Renew all Input GUID, because the process needs to have a new set of Inputs + * + * @param string $oData + * @return boolean + */ + public function renewAllInputGuid (&$oData) + { + $map = array (); + foreach ($oData->inputs as $key => $val) { + $newGuid = $this->getUnusedInputGUID(); + $map[$val['INP_DOC_UID']] = $newGuid; + $oData->inputs[$key]['INP_DOC_UID'] = $newGuid; + } + foreach ($oData->steps as $key => $val) { + if (isset( $val['STEP_TYPE_OBJ'] )) { + if ($val['STEP_TYPE_OBJ'] == 'INPUT_DOCUMENT') { + $newGuid = $map[$val['STEP_UID_OBJ']]; + $oData->steps[$key]['STEP_UID_OBJ'] = $newGuid; + } + } + } + if (isset( $oData->caseTrackerObject ) && is_array( $oData->caseTrackerObject )) { + foreach ($oData->caseTrackerObject as $key => $val) { + if ($val['CTO_TYPE_OBJ'] == 'INPUT_DOCUMENT') { + $newGuid = $map[$val['CTO_UID_OBJ']]; + $oData->steps[$key]['CTO_UID_OBJ'] = $newGuid; + } + } + } + if (isset( $oData->objectPermissions ) && is_array( $oData->objectPermissions )) { + foreach ($oData->objectPermissions as $key => $val) { + if ($val['OP_OBJ_TYPE'] == 'INPUT_DOCUMENT') { + if (isset( $map[$val['OP_OBJ_UID']] )) { + $newGuid = $map[$val['OP_OBJ_UID']]; + $oData->objectPermissions[$key]['OP_OBJ_UID'] = $newGuid; + } + } + } + } + if (isset( $oData->stepSupervisor ) && is_array( $oData->stepSupervisor )) { + foreach ($oData->stepSupervisor as $key => $val) { + if ($val['STEP_TYPE_OBJ'] == 'INPUT_DOCUMENT') { + $newGuid = $map[$val['STEP_UID_OBJ']]; + $oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid; + } + } + } + } + + /** + * Gets the Output Documents Rows from a Process. + * + * @param $sProUid string. + * @return $aOutput array + */ + public function getOutputRows ($sProUid) + { + try { + $aOutput = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( OutputdocumentPeer::PRO_UID, $sProUid ); + $oDataset = OutputdocumentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oOutput = new Outputdocument(); + $aOutput[] = $oOutput->Load( $aRow['OUT_DOC_UID'] ); + $oDataset->next(); + } + return $aOutput; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Create Input Documents Rows from an array, removing those Objects + * with the same UID, and recreaiting the records from the array data. + * + * @param $aOutput array. + * @return void + */ + public function createOutputRows ($aOutput) + { + foreach ($aOutput as $key => $row) { + $oOutput = new Outputdocument(); //unset ($row['TAS_UID']); - if ($oOutput->OutputExists( $row['OUT_DOC_UID'] )) - $oOutput->remove( $row['OUT_DOC_UID'] ); - - $res = $oOutput->create( $row ); - } - return; - } - - /** - * change and Renew all Output GUID, because the process needs to have a new set of Outputs - * - * @param string $oData - * @return boolean - */ - function renewAllOutputGuid (&$oData) - { - $map = array (); - foreach ($oData->outputs as $key => $val) { - $newGuid = $this->getUnusedOutputGUID(); - $map[$val['OUT_DOC_UID']] = $newGuid; - $oData->outputs[$key]['OUT_DOC_UID'] = $newGuid; - } - foreach ($oData->steps as $key => $val) { - if (isset( $val['STEP_TYPE_OBJ'] )) { - if ($val['STEP_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') { - $newGuid = $map[$val['STEP_UID_OBJ']]; - $oData->steps[$key]['STEP_UID_OBJ'] = $newGuid; - } - } - } - foreach ($oData->caseTrackerObject as $key => $val) { - if ($val['CTO_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') { - $newGuid = $map[$val['CTO_UID_OBJ']]; - $oData->steps[$key]['CTO_UID_OBJ'] = $newGuid; - } - } - foreach ($oData->objectPermissions as $key => $val) { - if ($val['OP_OBJ_TYPE'] == 'OUTPUT_DOCUMENT') { - $newGuid = $map[$val['OP_OBJ_UID']]; - $oData->objectPermissions[$key]['OP_OBJ_UID'] = $newGuid; - } - } - foreach ($oData->stepSupervisor as $key => $val) { - if ($val['STEP_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') { - $newGuid = $map[$val['STEP_UID_OBJ']]; - $oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid; - } - } - } - - /** - * change and Renew all Trigger GUID, because the process needs to have a new set of Triggers - * - * @param string $oData - * @return boolean - */ - function renewAllTriggerGuid (&$oData) - { - $map = array (); - foreach ($oData->triggers as $key => $val) { - $newGuid = $this->getUnusedTriggerGUID(); - $map[$val['TRI_UID']] = $newGuid; - $oData->triggers[$key]['TRI_UID'] = $newGuid; - } - foreach ($oData->steptriggers as $key => $val) { - if (isset( $map[$val['TRI_UID']] )) { - $newGuid = $map[$val['TRI_UID']]; - $oData->steptriggers[$key]['TRI_UID'] = $newGuid; - } else { - $oData->steptriggers[$key]['TRI_UID'] = $this->getUnusedTriggerGUID(); - } - } - } - - /** - * Renew all the GUID's for Subprocesses - * - * @param $oData array. - * @return void - */ - function renewAllSubProcessGuid (&$oData) - { - $map = array (); - foreach ($oData->subProcess as $key => $val) { - $newGuid = $this->getUnusedSubProcessGUID(); - $map[$val['SP_UID']] = $newGuid; - $oData->subProcess[$key]['SP_UID'] = $newGuid; - } - } - - /** - * Renew all the GUID's for Case Tracker Objects - * - * @param $oData array. - * @return void - */ - function renewAllCaseTrackerObjectGuid (&$oData) - { - $map = array (); - foreach ($oData->caseTrackerObject as $key => $val) { - $newGuid = $this->getUnusedCaseTrackerObjectGUID(); - $map[$val['CTO_UID']] = $newGuid; - $oData->caseTrackerObject[$key]['CTO_UID'] = $newGuid; - } - } - - /** - * Renew all the GUID's for DB Sources - * - * @param $oData array. - * @return void - */ - function renewAllDBSourceGuid (&$oData) - { - $map = array (); - $aSqlConnections = array (); - foreach ($oData->dbconnections as $key => $val) { + if ($oOutput->OutputExists( $row['OUT_DOC_UID'] )) { + $oOutput->remove( $row['OUT_DOC_UID'] ); + } + $res = $oOutput->create( $row ); + } + return; + } + + /** + * change and Renew all Output GUID, because the process needs to have a new set of Outputs + * + * @param string $oData + * @return boolean + */ + public function renewAllOutputGuid (&$oData) + { + $map = array (); + foreach ($oData->outputs as $key => $val) { + $newGuid = $this->getUnusedOutputGUID(); + $map[$val['OUT_DOC_UID']] = $newGuid; + $oData->outputs[$key]['OUT_DOC_UID'] = $newGuid; + } + foreach ($oData->steps as $key => $val) { + if (isset( $val['STEP_TYPE_OBJ'] )) { + if ($val['STEP_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') { + $newGuid = $map[$val['STEP_UID_OBJ']]; + $oData->steps[$key]['STEP_UID_OBJ'] = $newGuid; + } + } + } + foreach ($oData->caseTrackerObject as $key => $val) { + if ($val['CTO_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') { + $newGuid = $map[$val['CTO_UID_OBJ']]; + $oData->steps[$key]['CTO_UID_OBJ'] = $newGuid; + } + } + foreach ($oData->objectPermissions as $key => $val) { + if ($val['OP_OBJ_TYPE'] == 'OUTPUT_DOCUMENT') { + $newGuid = $map[$val['OP_OBJ_UID']]; + $oData->objectPermissions[$key]['OP_OBJ_UID'] = $newGuid; + } + } + foreach ($oData->stepSupervisor as $key => $val) { + if ($val['STEP_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') { + $newGuid = $map[$val['STEP_UID_OBJ']]; + $oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid; + } + } + } + + /** + * change and Renew all Trigger GUID, because the process needs to have a new set of Triggers + * + * @param string $oData + * @return boolean + */ + public function renewAllTriggerGuid (&$oData) + { + $map = array (); + foreach ($oData->triggers as $key => $val) { + $newGuid = $this->getUnusedTriggerGUID(); + $map[$val['TRI_UID']] = $newGuid; + $oData->triggers[$key]['TRI_UID'] = $newGuid; + } + foreach ($oData->steptriggers as $key => $val) { + if (isset( $map[$val['TRI_UID']] )) { + $newGuid = $map[$val['TRI_UID']]; + $oData->steptriggers[$key]['TRI_UID'] = $newGuid; + } else { + $oData->steptriggers[$key]['TRI_UID'] = $this->getUnusedTriggerGUID(); + } + } + } + + /** + * Renew all the GUID's for Subprocesses + * + * @param $oData array. + * @return void + */ + public function renewAllSubProcessGuid (&$oData) + { + $map = array (); + foreach ($oData->subProcess as $key => $val) { + $newGuid = $this->getUnusedSubProcessGUID(); + $map[$val['SP_UID']] = $newGuid; + $oData->subProcess[$key]['SP_UID'] = $newGuid; + } + } + + /** + * Renew all the GUID's for Case Tracker Objects + * + * @param $oData array. + * @return void + */ + public function renewAllCaseTrackerObjectGuid (&$oData) + { + $map = array (); + foreach ($oData->caseTrackerObject as $key => $val) { + $newGuid = $this->getUnusedCaseTrackerObjectGUID(); + $map[$val['CTO_UID']] = $newGuid; + $oData->caseTrackerObject[$key]['CTO_UID'] = $newGuid; + } + } + + /** + * Renew all the GUID's for DB Sources + * + * @param $oData array. + * @return void + */ + public function renewAllDBSourceGuid (&$oData) + { + $map = array (); + $aSqlConnections = array (); + foreach ($oData->dbconnections as $key => $val) { $newGuid = $val['DBS_UID']; ///-- $this->getUnusedDBSourceGUID(); - $map[$val['DBS_UID']] = $newGuid; - $oData->dbconnections[$key]['DBS_UID'] = $newGuid; - } - $oData->sqlConnections = $map; - } - - /** - * Renew all the GUID's for Object Permissions - * - * @param $oData array. - * @return void - */ - function renewAllObjectPermissionGuid (&$oData) - { - $map = array (); - foreach ($oData->objectPermissions as $key => $val) { - $newGuid = $this->getUnusedObjectPermissionGUID(); - $map[$val['OP_UID']] = $newGuid; - $oData->objectPermissions[$key]['OP_UID'] = $newGuid; - } - } - - /** - * Renew all the GUID's for Routes Objects - * - * @param $oData array. - * @return void - */ - function renewAllRouteGuid (&$oData) - { - $map = array (); - if (isset( $oData->routes ) && is_array( $oData->routes )) { - foreach ($oData->routes as $key => $val) { - $newGuid = $this->getUnusedRouteGUID(); - $map[$val['ROU_UID']] = $newGuid; - $oData->routes[$key]['ROU_UID'] = $newGuid; - } - } - } - - /** - * Renew all the GUID's for Stage Objects - * - * @param $oData array. - * @return void - */ - function renewAllStageGuid (&$oData) - { - $map = array (); - foreach ($oData->stage as $key => $val) { - $newGuid = $this->getUnusedStageGUID(); - $map[$val['STG_UID']] = $newGuid; - $oData->stage[$key]['STG_UID'] = $newGuid; - } - foreach ($oData->tasks as $key => $val) { - if (isset( $map[$val['STG_UID']] )) { - $newGuid = $map[$val['STG_UID']]; - $oData->tasks[$key]['STG_UID'] = $newGuid; - } - } - } - - /** - * Renew all the GUID's for Swimlanes Elements Objects - * - * @param $oData array. - * @return void - */ - function renewAllSwimlanesElementsGuid (&$oData) - { - $map = array (); - foreach ($oData->lanes as $key => $val) { - $newGuid = $this->getUnusedSLGUID(); - $map[$val['SWI_UID']] = $newGuid; - $oData->lanes[$key]['SWI_UID'] = $newGuid; - } - } - - /** - * Renew the GUID's for all the Report Tables Objects - * - * @param $oData array. - * @return void - */ - function renewAllReportTableGuid (&$oData) - { - $map = array (); - foreach ($oData->reportTables as $key => $val) { - $newGuid = $this->getUnusedRTGUID(); - $map[$val['REP_TAB_UID']] = $newGuid; - $oData->reportTables[$key]['REP_TAB_UID'] = $newGuid; - } - foreach ($oData->reportTablesVars as $key => $val) { - if (isset( $map[$val['REP_TAB_UID']] )) { + $map[$val['DBS_UID']] = $newGuid; + $oData->dbconnections[$key]['DBS_UID'] = $newGuid; + } + $oData->sqlConnections = $map; + } + + /** + * Renew all the GUID's for Object Permissions + * + * @param $oData array. + * @return void + */ + public function renewAllObjectPermissionGuid (&$oData) + { + $map = array (); + foreach ($oData->objectPermissions as $key => $val) { + $newGuid = $this->getUnusedObjectPermissionGUID(); + $map[$val['OP_UID']] = $newGuid; + $oData->objectPermissions[$key]['OP_UID'] = $newGuid; + } + } + + /** + * Renew all the GUID's for Routes Objects + * + * @param $oData array. + * @return void + */ + public function renewAllRouteGuid (&$oData) + { + $map = array (); + if (isset( $oData->routes ) && is_array( $oData->routes )) { + foreach ($oData->routes as $key => $val) { + $newGuid = $this->getUnusedRouteGUID(); + $map[$val['ROU_UID']] = $newGuid; + $oData->routes[$key]['ROU_UID'] = $newGuid; + } + } + } + + /** + * Renew all the GUID's for Stage Objects + * + * @param $oData array. + * @return void + */ + public function renewAllStageGuid (&$oData) + { + $map = array (); + foreach ($oData->stage as $key => $val) { + $newGuid = $this->getUnusedStageGUID(); + $map[$val['STG_UID']] = $newGuid; + $oData->stage[$key]['STG_UID'] = $newGuid; + } + foreach ($oData->tasks as $key => $val) { + if (isset( $map[$val['STG_UID']] )) { + $newGuid = $map[$val['STG_UID']]; + $oData->tasks[$key]['STG_UID'] = $newGuid; + } + } + } + + /** + * Renew all the GUID's for Swimlanes Elements Objects + * + * @param $oData array. + * @return void + */ + public function renewAllSwimlanesElementsGuid (&$oData) + { + $map = array (); + foreach ($oData->lanes as $key => $val) { + $newGuid = $this->getUnusedSLGUID(); + $map[$val['SWI_UID']] = $newGuid; + $oData->lanes[$key]['SWI_UID'] = $newGuid; + } + } + + /** + * Renew the GUID's for all the Report Tables Objects + * + * @param $oData array. + * @return void + */ + public function renewAllReportTableGuid (&$oData) + { + $map = array (); + foreach ($oData->reportTables as $key => $val) { + $newGuid = $this->getUnusedRTGUID(); + $map[$val['REP_TAB_UID']] = $newGuid; + $oData->reportTables[$key]['REP_TAB_UID'] = $newGuid; + } + foreach ($oData->reportTablesVars as $key => $val) { + if (isset( $map[$val['REP_TAB_UID']] )) { /*TODO: Why this can be not defined?? The scenario was when * imported an existing process but as a new one - */ - $newGuid = $map[$val['REP_TAB_UID']]; - $oData->reportTablesVars[$key]['REP_TAB_UID'] = $newGuid; - } - } - } - - /** - * Renew all the GUID's for All The Report Vars Objects - * - * @param $oData array. - * @return void - */ - function renewAllReportVarGuid (&$oData) - { - $map = array (); - foreach ($oData->reportTablesVars as $key => $val) { - $newGuid = $this->getUnusedRTVGUID(); - $map[$val['REP_VAR_UID']] = $newGuid; - $oData->reportTablesVars[$key]['REP_VAR_UID'] = $newGuid; - } - } - - /** - * Renew the GUID's for all the Field Conditions Objects - * - * @param $oData array. - * @return void - */ - function renewAllFieldCondition (&$oData) - { - $map = array (); - foreach ($oData->fieldCondition as $key => $val) { - $newGuid = $this->getUnusedFieldConditionGUID(); - $map[$val['FCD_UID']] = $newGuid; - $oData->fieldCondition[$key]['FCD_UID'] = $newGuid; - } - } - - /** - * Renew the GUID's for all the Events Objects - * - * @param $oData array. - * @return void - */ - function renewAllEvent (&$oData) - { - $map = array (); - foreach ($oData->event as $key => $val) { - $newGuid = $this->getUnusedEventGUID(); - $map[$val['EVN_UID']] = $newGuid; - $oData->event[$key]['EVN_UID'] = $newGuid; - } - } - - /** - * Renew the GUID's for all Case Scheduler Objects - * - * @param $oData array. - * @return void - */ - function renewAllCaseScheduler (&$oData) - { - $map = array (); - foreach ($oData->caseScheduler as $key => $val) { - $newGuid = $this->getUnusedCaseSchedulerGUID(); - $map[$val['SCH_UID']] = $newGuid; - $oData->caseScheduler[$key]['SCH_UID'] = $newGuid; - } - } - - /** - * Renew the GUID's for all the Uids for all the elements - * - * @param $oData array. - * @return void - */ - function renewAll (&$oData) - { - $this->renewAllTaskGuid( $oData ); - $this->renewAllDynaformGuid( $oData ); - $this->renewAllInputGuid( $oData ); - $this->renewAllOutputGuid( $oData ); - $this->renewAllStepGuid( $oData ); - $this->renewAllTriggerGuid( $oData ); - $this->renewAllSubProcessGuid( $oData ); - $this->renewAllCaseTrackerObjectGuid( $oData ); - $this->renewAllDBSourceGuid( $oData ); - $this->renewAllObjectPermissionGuid( $oData ); - $this->renewAllRouteGuid( $oData ); - $this->renewAllStageGuid( $oData ); - $this->renewAllSwimlanesElementsGuid( $oData ); - $this->renewAllReportTableGuid( $oData ); - $this->renewAllReportVarGuid( $oData ); - $this->renewAllFieldCondition( $oData ); - $this->renewAllEvent( $oData ); - $this->renewAllCaseScheduler( $oData ); - } - - /** - * Get Step Rows from a Process - * - * @param $sProUid array. - * @return array $aStep. - */ - function getStepRows ($sProUid) - { - try { - $aStep = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StepPeer::PRO_UID, $sProUid ); - $oDataset = StepPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oStep = new Step(); - $aStep[] = $oStep->Load( $aRow['STEP_UID'] ); - $oDataset->next(); - } - return $aStep; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Create Step Rows from a Process - * - * @param $aStep array. - * @return void. - */ - function createStepRows ($aStep) - { - foreach ($aStep as $key => $row) { - $oStep = new Step(); - if (isset( $row['STEP_UID'] )) { - if ($oStep->StepExists( $row['STEP_UID'] )) - $oStep->remove( $row['STEP_UID'] ); - - $res = $oStep->create( $row ); - } - } - return; - } - - /** - * Create Step Supervisor Rows for a Process from an array of data - * - * @param $aStepSupervisor array. - * @return void. - */ - function createStepSupervisorRows ($aStepSupervisor) - { - foreach ($aStepSupervisor as $key => $row) { - $oStepSupervisor = new StepSupervisor(); - if ($oStepSupervisor->Exists( $row['STEP_UID'] )) { - $oStepSupervisor->remove( $row['STEP_UID'] ); - } - $oStepSupervisor->create( $row ); - } + */ + $newGuid = $map[$val['REP_TAB_UID']]; + $oData->reportTablesVars[$key]['REP_TAB_UID'] = $newGuid; + } + } + } + + /** + * Renew all the GUID's for All The Report Vars Objects + * + * @param $oData array. + * @return void + */ + public function renewAllReportVarGuid (&$oData) + { + $map = array (); + foreach ($oData->reportTablesVars as $key => $val) { + $newGuid = $this->getUnusedRTVGUID(); + $map[$val['REP_VAR_UID']] = $newGuid; + $oData->reportTablesVars[$key]['REP_VAR_UID'] = $newGuid; + } + } + + /** + * Renew the GUID's for all the Field Conditions Objects + * + * @param $oData array. + * @return void + */ + public function renewAllFieldCondition (&$oData) + { + $map = array (); + foreach ($oData->fieldCondition as $key => $val) { + $newGuid = $this->getUnusedFieldConditionGUID(); + $map[$val['FCD_UID']] = $newGuid; + $oData->fieldCondition[$key]['FCD_UID'] = $newGuid; + } + } + + /** + * Renew the GUID's for all the Events Objects + * + * @param $oData array. + * @return void + */ + public function renewAllEvent (&$oData) + { + $map = array (); + foreach ($oData->event as $key => $val) { + $newGuid = $this->getUnusedEventGUID(); + $map[$val['EVN_UID']] = $newGuid; + $oData->event[$key]['EVN_UID'] = $newGuid; + } + } + + /** + * Renew the GUID's for all Case Scheduler Objects + * + * @param $oData array. + * @return void + */ + public function renewAllCaseScheduler (&$oData) + { + $map = array (); + foreach ($oData->caseScheduler as $key => $val) { + $newGuid = $this->getUnusedCaseSchedulerGUID(); + $map[$val['SCH_UID']] = $newGuid; + $oData->caseScheduler[$key]['SCH_UID'] = $newGuid; + } + } + + /** + * Renew the GUID's for all the Uids for all the elements + * + * @param $oData array. + * @return void + */ + public function renewAll (&$oData) + { + $this->renewAllTaskGuid( $oData ); + $this->renewAllDynaformGuid( $oData ); + $this->renewAllInputGuid( $oData ); + $this->renewAllOutputGuid( $oData ); + $this->renewAllStepGuid( $oData ); + $this->renewAllTriggerGuid( $oData ); + $this->renewAllSubProcessGuid( $oData ); + $this->renewAllCaseTrackerObjectGuid( $oData ); + $this->renewAllDBSourceGuid( $oData ); + $this->renewAllObjectPermissionGuid( $oData ); + $this->renewAllRouteGuid( $oData ); + $this->renewAllStageGuid( $oData ); + $this->renewAllSwimlanesElementsGuid( $oData ); + $this->renewAllReportTableGuid( $oData ); + $this->renewAllReportVarGuid( $oData ); + $this->renewAllFieldCondition( $oData ); + $this->renewAllEvent( $oData ); + $this->renewAllCaseScheduler( $oData ); + } + + /** + * Get Step Rows from a Process + * + * @param $sProUid array. + * @return array $aStep. + */ + public function getStepRows ($sProUid) + { + try { + $aStep = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepPeer::PRO_UID, $sProUid ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oStep = new Step(); + $aStep[] = $oStep->Load( $aRow['STEP_UID'] ); + $oDataset->next(); + } + return $aStep; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Create Step Rows from a Process + * + * @param $aStep array. + * @return void. + */ + public function createStepRows ($aStep) + { + foreach ($aStep as $key => $row) { + $oStep = new Step(); + if (isset( $row['STEP_UID'] )) { + if ($oStep->StepExists( $row['STEP_UID'] )) { + $oStep->remove( $row['STEP_UID'] ); + } + $res = $oStep->create( $row ); + } + } + return; + } + + /** + * Create Step Supervisor Rows for a Process from an array of data + * + * @param $aStepSupervisor array. + * @return void. + */ + public function createStepSupervisorRows ($aStepSupervisor) + { + foreach ($aStepSupervisor as $key => $row) { + $oStepSupervisor = new StepSupervisor(); + if ($oStepSupervisor->Exists( $row['STEP_UID'] )) { + $oStepSupervisor->remove( $row['STEP_UID'] ); + } + $oStepSupervisor->create( $row ); + } } #@!Neyek - - - /** - * change and Renew all Step GUID, because the process needs to have a new set of Steps - * - * @param string $oData - * @return boolean - */ - function renewAllStepGuid (&$oData) - { - $map = array (); - foreach ($oData->steps as $key => $val) { - if (isset( $val['STEP_UID'] )) { - $newGuid = $this->getUnusedStepGUID(); - $map[$val['STEP_UID']] = $newGuid; - $oData->steps[$key]['STEP_UID'] = $newGuid; - } - } - foreach ($oData->steptriggers as $key => $val) { - if ($val['STEP_UID'] > 0) { - if (isset( $map[$val['STEP_UID']] )) { - $newGuid = $map[$val['STEP_UID']]; - $oData->steptriggers[$key]['STEP_UID'] = $newGuid; - } else { - $oData->steptriggers[$key]['STEP_UID'] = $this->getUnusedStepGUID(); - } - } - } - foreach ($oData->stepSupervisor as $key => $val) { - if ($val['STEP_UID'] > 0) { - if (isset( $map[$val['STEP_UID']] )) { - $newGuid = $map[$val['STEP_UID']]; - $oData->stepSupervisor[$key]['STEP_UID'] = $newGuid; - } else { - $oData->stepSupervisor[$key]['STEP_UID'] = $this->getUnusedStepGUID(); - } - } - } - } - - /** - * Get Dynaform Rows from a Process - * - * @param string $sProUid - * @return $aDynaform array - */ - function getDynaformRows ($sProUid) - { - try { - $aDynaform = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); - $oDataset = DynaformPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oDynaform = new Dynaform(); - $aDynaform[] = $oDynaform->Load( $aRow['DYN_UID'] ); - $oDataset->next(); - } - return $aDynaform; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Get Object Permission Rows from a Process - * - * @param string $sProUid - * @return $aDynaform array - */ - function getObjectPermissionRows ($sProUid) - { // by erik - try { - $oPermissions = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ObjectPermissionPeer::PRO_UID, $sProUid ); - $oCriteria->add( ObjectPermissionPeer::OP_USER_RELATION, 2 ); - $oDataset = ObjectPermissionPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $o = new ObjectPermission(); - $oPermissions[] = $o->Load( $aRow['OP_UID'] ); - $oDataset->next(); - } - return $oPermissions; - } catch (Exception $oError) { - throw ($oError); - } - } #@!neyek - - - /** - * Create Dynaform Rows for a Process form an array - * - * @param array $aDynaform - * @return void - */ - function createDynaformRows ($aDynaform) - { - foreach ($aDynaform as $key => $row) { - $oDynaform = new Dynaform(); - //unset ($row['TAS_UID']); - if ($oDynaform->exists( $row['DYN_UID'] )) - $oDynaform->remove( $row['DYN_UID'] ); - - $res = $oDynaform->create( $row ); - } - return; - } + + + /** + * change and Renew all Step GUID, because the process needs to have a new set of Steps + * + * @param string $oData + * @return boolean + */ + public function renewAllStepGuid (&$oData) + { + $map = array (); + foreach ($oData->steps as $key => $val) { + if (isset( $val['STEP_UID'] )) { + $newGuid = $this->getUnusedStepGUID(); + $map[$val['STEP_UID']] = $newGuid; + $oData->steps[$key]['STEP_UID'] = $newGuid; + } + } + foreach ($oData->steptriggers as $key => $val) { + if ($val['STEP_UID'] > 0) { + if (isset( $map[$val['STEP_UID']] )) { + $newGuid = $map[$val['STEP_UID']]; + $oData->steptriggers[$key]['STEP_UID'] = $newGuid; + } else { + $oData->steptriggers[$key]['STEP_UID'] = $this->getUnusedStepGUID(); + } + } + } + foreach ($oData->stepSupervisor as $key => $val) { + if ($val['STEP_UID'] > 0) { + if (isset( $map[$val['STEP_UID']] )) { + $newGuid = $map[$val['STEP_UID']]; + $oData->stepSupervisor[$key]['STEP_UID'] = $newGuid; + } else { + $oData->stepSupervisor[$key]['STEP_UID'] = $this->getUnusedStepGUID(); + } + } + } + } + + /** + * Get Dynaform Rows from a Process + * + * @param string $sProUid + * @return $aDynaform array + */ + public function getDynaformRows ($sProUid) + { + try { + $aDynaform = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); + $oDataset = DynaformPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oDynaform = new Dynaform(); + $aDynaform[] = $oDynaform->Load( $aRow['DYN_UID'] ); + $oDataset->next(); + } + return $aDynaform; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Get Object Permission Rows from a Process + * + * @param string $sProUid + * @return $aDynaform array + */ + public function getObjectPermissionRows ($sProUid) + { + // by erik + try { + $oPermissions = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ObjectPermissionPeer::PRO_UID, $sProUid ); + $oCriteria->add( ObjectPermissionPeer::OP_USER_RELATION, 2 ); + $oDataset = ObjectPermissionPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $o = new ObjectPermission(); + $oPermissions[] = $o->Load( $aRow['OP_UID'] ); + $oDataset->next(); + } + return $oPermissions; + } catch (Exception $oError) { + throw ($oError); + } + } #@!neyek - - - /** - * Create Step Trigger Rows for a Process form an array - * - * @param array $aStepTrigger - * @return void - */ - function createStepTriggerRows ($aStepTrigger) - { - foreach ($aStepTrigger as $key => $row) { - $oStepTrigger = new StepTrigger(); + + + /** + * Create Dynaform Rows for a Process form an array + * + * @param array $aDynaform + * @return void + */ + public function createDynaformRows ($aDynaform) + { + foreach ($aDynaform as $key => $row) { + $oDynaform = new Dynaform(); //unset ($row['TAS_UID']); - if ($oStepTrigger->stepTriggerExists( $row['STEP_UID'], $row['TAS_UID'], $row['TRI_UID'], $row['ST_TYPE'] )) - $oStepTrigger->remove( $row['STEP_UID'], $row['TAS_UID'], $row['TRI_UID'], $row['ST_TYPE'] ); - - $res = $oStepTrigger->createRow( $row ); - } - return; - } - - /** - * Get Step Trigger Rows for a Process form an array - * - * @param array $aTask - * @return array $aStepTrigger - */ - function getStepTriggerRows ($aTask) - { - try { - $aInTasks = array (); - foreach ($aTask as $key => $val) { - $aInTasks[] = $val['TAS_UID']; - } - - $aTrigger = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StepTriggerPeer::TAS_UID, $aInTasks, Criteria::IN ); - $oDataset = StepTriggerPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $aStepTrigger = array (); - while ($aRow = $oDataset->getRow()) { - $aStepTrigger[] = $aRow; - $oDataset->next(); - } - return $aStepTrigger; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Get Step Trigger Rows for a Process form an array - * - * @param array $aTask - * @return array $aStepTrigger - */ - function getTriggerRows ($sProUid) - { - try { - $aTrigger = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( TriggersPeer::PRO_UID, $sProUid ); - $oDataset = TriggersPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oTrigger = new Triggers(); - $aTrigger[] = $oTrigger->Load( $aRow['TRI_UID'] ); - $oDataset->next(); - } - return $aTrigger; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Create Step Trigger Rows for a Process form an array - * - * @param array $aTrigger - * @return void - */ - function createTriggerRows ($aTrigger) - { - foreach ($aTrigger as $key => $row) { - $oTrigger = new Triggers(); + if ($oDynaform->exists( $row['DYN_UID'] )) { + $oDynaform->remove( $row['DYN_UID'] ); + } + $res = $oDynaform->create( $row ); + } + return; + } + #@!neyek + + + /** + * Create Step Trigger Rows for a Process form an array + * + * @param array $aStepTrigger + * @return void + */ + public function createStepTriggerRows ($aStepTrigger) + { + foreach ($aStepTrigger as $key => $row) { + $oStepTrigger = new StepTrigger(); //unset ($row['TAS_UID']); - if ($oTrigger->TriggerExists( $row['TRI_UID'] )) - $oTrigger->remove( $row['TRI_UID'] ); - - $res = $oTrigger->create( $row ); - } - return; - } - - /** - * Get Groupwf Rows for a Process form an array - * - * @param array $aGroups - * @return array $aGroupwf - */ - function getGroupwfRows ($aGroups) - { - try { - $aInGroups = array (); - foreach ($aGroups as $key => $val) { - $aInGroups[] = $val['USR_UID']; - } - - $aGroupwf = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( GroupwfPeer::GRP_UID, $aInGroups, Criteria::IN ); - $oDataset = GroupwfPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oGroupwf = new Groupwf(); - $aGroupwf[] = $oGroupwf->Load( $aRow['GRP_UID'] ); - $oDataset->next(); - } - return $aGroupwf; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Get DB Connections Rows for a Process - * - * @param array $sProUid - * @return array $aConnections - */ - function getDBConnectionsRows ($sProUid) - { - try { - $aConnections = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( DbSourcePeer::PRO_UID, $sProUid ); - $oDataset = DbSourcePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oConnection = new DbSource(); - $aConnections[] = $oConnection->Load( $aRow['DBS_UID'], $aRow['PRO_UID'] ); - $oDataset->next(); - } - return $aConnections; - } catch (Exception $oError) { - throw $oError; - } - } - - /** - * Get Step Supervisor Rows for a Process form an array - * - * @param array $sProUid - * @return array $aStepSup - */ - function getStepSupervisorRows ($sProUid) - { - try { - $aConnections = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StepSupervisorPeer::PRO_UID, $sProUid ); - $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $aStepSup = array (); - while ($aRow = $oDataset->getRow()) { - $aStepSup[] = $aRow; - $oDataset->next(); - } - return $aStepSup; - } catch (Exception $oError) { - throw $oError; - } - } - - /** - * Get Report Tables Rows for a Process form an array - * - * @param array $aTask - * @return array $aReps - */ - function getReportTablesRows ($sProUid) - { - try { - $aReps = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ReportTablePeer::PRO_UID, $sProUid ); - $oDataset = ReportTablePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oRep = new ReportTable(); - $aReps[] = $oRep->load( $aRow['REP_TAB_UID'] ); - $oDataset->next(); - } - return $aReps; - } catch (Exception $oError) { - throw $oError; - } - } - - /** - * Get Report Tables Vars Rows for a Process - * - * @param string $sProUid - * @return array $aRepVars - */ - function getReportTablesVarsRows ($sProUid) - { - try { - $aRepVars = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ReportVarPeer::PRO_UID, $sProUid ); - $oDataset = ReportVarPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oRepVar = new ReportVar(); - $aRepVars[] = $oRepVar->load( $aRow['REP_VAR_UID'] ); - $oDataset->next(); - } - return $aRepVars; - } catch (Exception $oError) { - throw $oError; - } - } - - /** - * Get Task User Rows for a Process - * - * @param array $aTask - * @return array $aStepTrigger - */ - function getTaskUserRows ($aTask) - { - try { - $aInTasks = array (); - foreach ($aTask as $key => $val) { - $aInTasks[] = $val['TAS_UID']; - } - - $aTaskUser = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( TaskUserPeer::TAS_UID, $aInTasks, Criteria::IN ); - $oCriteria->add( TaskUserPeer::TU_RELATION, 2 ); - $oDataset = TaskUserPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oCriteria2 = new Criteria( 'workflow' ); - $oCriteria2->clearSelectColumns(); - $oCriteria2->addSelectColumn( 'COUNT(*)' ); - $oCriteria2->add( GroupwfPeer::GRP_UID, $aRow['USR_UID'] ); - $oCriteria2->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); - $oDataset2 = GroupwfPeer::doSelectRS( $oCriteria2 ); + if ($oStepTrigger->stepTriggerExists( $row['STEP_UID'], $row['TAS_UID'], $row['TRI_UID'], $row['ST_TYPE'] )) { + $oStepTrigger->remove( $row['STEP_UID'], $row['TAS_UID'], $row['TRI_UID'], $row['ST_TYPE'] ); + } + $res = $oStepTrigger->createRow( $row ); + } + return; + } + + /** + * Get Step Trigger Rows for a Process form an array + * + * @param array $aTask + * @return array $aStepTrigger + */ + public function getStepTriggerRows ($aTask) + { + try { + $aInTasks = array (); + foreach ($aTask as $key => $val) { + $aInTasks[] = $val['TAS_UID']; + } + + $aTrigger = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepTriggerPeer::TAS_UID, $aInTasks, Criteria::IN ); + $oDataset = StepTriggerPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aStepTrigger = array (); + while ($aRow = $oDataset->getRow()) { + $aStepTrigger[] = $aRow; + $oDataset->next(); + } + return $aStepTrigger; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Get Step Trigger Rows for a Process form an array + * + * @param array $aTask + * @return array $aStepTrigger + */ + public function getTriggerRows ($sProUid) + { + try { + $aTrigger = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( TriggersPeer::PRO_UID, $sProUid ); + $oDataset = TriggersPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oTrigger = new Triggers(); + $aTrigger[] = $oTrigger->Load( $aRow['TRI_UID'] ); + $oDataset->next(); + } + return $aTrigger; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Create Step Trigger Rows for a Process form an array + * + * @param array $aTrigger + * @return void + */ + public function createTriggerRows ($aTrigger) + { + foreach ($aTrigger as $key => $row) { + $oTrigger = new Triggers(); + //unset ($row['TAS_UID']); + if ($oTrigger->TriggerExists( $row['TRI_UID'] )) { + $oTrigger->remove( $row['TRI_UID'] ); + } + $res = $oTrigger->create( $row ); + } + return; + } + + /** + * Get Groupwf Rows for a Process form an array + * + * @param array $aGroups + * @return array $aGroupwf + */ + public function getGroupwfRows ($aGroups) + { + try { + $aInGroups = array (); + foreach ($aGroups as $key => $val) { + $aInGroups[] = $val['USR_UID']; + } + + $aGroupwf = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( GroupwfPeer::GRP_UID, $aInGroups, Criteria::IN ); + $oDataset = GroupwfPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oGroupwf = new Groupwf(); + $aGroupwf[] = $oGroupwf->Load( $aRow['GRP_UID'] ); + $oDataset->next(); + } + return $aGroupwf; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Get DB Connections Rows for a Process + * + * @param array $sProUid + * @return array $aConnections + */ + public function getDBConnectionsRows ($sProUid) + { + try { + $aConnections = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( DbSourcePeer::PRO_UID, $sProUid ); + $oDataset = DbSourcePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oConnection = new DbSource(); + $aConnections[] = $oConnection->Load( $aRow['DBS_UID'], $aRow['PRO_UID'] ); + $oDataset->next(); + } + return $aConnections; + } catch (Exception $oError) { + throw $oError; + } + } + + /** + * Get Step Supervisor Rows for a Process form an array + * + * @param array $sProUid + * @return array $aStepSup + */ + public function getStepSupervisorRows ($sProUid) + { + try { + $aConnections = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepSupervisorPeer::PRO_UID, $sProUid ); + $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aStepSup = array (); + while ($aRow = $oDataset->getRow()) { + $aStepSup[] = $aRow; + $oDataset->next(); + } + return $aStepSup; + } catch (Exception $oError) { + throw $oError; + } + } + + /** + * Get Report Tables Rows for a Process form an array + * + * @param array $aTask + * @return array $aReps + */ + public function getReportTablesRows ($sProUid) + { + try { + $aReps = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ReportTablePeer::PRO_UID, $sProUid ); + $oDataset = ReportTablePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oRep = new ReportTable(); + $aReps[] = $oRep->load( $aRow['REP_TAB_UID'] ); + $oDataset->next(); + } + return $aReps; + } catch (Exception $oError) { + throw $oError; + } + } + + /** + * Get Report Tables Vars Rows for a Process + * + * @param string $sProUid + * @return array $aRepVars + */ + public function getReportTablesVarsRows ($sProUid) + { + try { + $aRepVars = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ReportVarPeer::PRO_UID, $sProUid ); + $oDataset = ReportVarPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oRepVar = new ReportVar(); + $aRepVars[] = $oRepVar->load( $aRow['REP_VAR_UID'] ); + $oDataset->next(); + } + return $aRepVars; + } catch (Exception $oError) { + throw $oError; + } + } + + /** + * Get Task User Rows for a Process + * + * @param array $aTask + * @return array $aStepTrigger + */ + public function getTaskUserRows ($aTask) + { + try { + $aInTasks = array (); + foreach ($aTask as $key => $val) { + $aInTasks[] = $val['TAS_UID']; + } + + $aTaskUser = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( TaskUserPeer::TAS_UID, $aInTasks, Criteria::IN ); + $oCriteria->add( TaskUserPeer::TU_RELATION, 2 ); + $oDataset = TaskUserPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oCriteria2 = new Criteria( 'workflow' ); + $oCriteria2->clearSelectColumns(); + $oCriteria2->addSelectColumn( 'COUNT(*)' ); + $oCriteria2->add( GroupwfPeer::GRP_UID, $aRow['USR_UID'] ); + $oCriteria2->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); + $oDataset2 = GroupwfPeer::doSelectRS( $oCriteria2 ); //$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $bActiveGroup = $aRow2[0]; - if ($bActiveGroup == 1) - $aTaskUser[] = $aRow; - $oDataset->next(); - } - return $aTaskUser; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * Get Task User Rows from an array of data - * - * @param array $aTaskUser - * @return array $aStepTrigger - */ - function createTaskUserRows ($aTaskUser) - { - foreach ($aTaskUser as $key => $row) { - $oTaskUser = new TaskUser(); - if ($oTaskUser->TaskUserExists( $row['TAS_UID'], $row['USR_UID'], $row['TU_TYPE'], $row['TU_RELATION'] )) - $oTaskUser->remove( $row['TAS_UID'], $row['USR_UID'], $row['TU_TYPE'], $row['TU_RELATION'] ); - - $res = $oTaskUser->create( $row ); - } - return; - } - - /** - * Get Task User Rows from an array of data - * - * @param array $aTaskUser - * @return array $aStepTrigger - */ - function createGroupRow ($aGroupwf) - { - foreach ($aGroupwf as $key => $row) { - $oGroupwf = new Groupwf(); - if ($oGroupwf->GroupwfExists( $row['GRP_UID'] )) { - $oGroupwf->remove( $row['GRP_UID'] ); - } - $res = $oGroupwf->create( $row ); - } - } - - /** - * Create DB Connections rows from an array of data - * - * @param array $aConnections - * @return void - */ - function createDBConnectionsRows ($aConnections) - { - foreach ($aConnections as $sKey => $aRow) { - $oConnection = new DbSource(); - if ($oConnection->Exists( $aRow['DBS_UID'], $aRow['PRO_UID'] )) { - $oConnection->remove( $aRow['DBS_UID'], $aRow['PRO_UID'] ); - } - $oConnection->create( $aRow ); - + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $bActiveGroup = $aRow2[0]; + if ($bActiveGroup == 1) { + $aTaskUser[] = $aRow; + } + $oDataset->next(); + } + return $aTaskUser; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * Get Task User Rows from an array of data + * + * @param array $aTaskUser + * @return array $aStepTrigger + */ + public function createTaskUserRows ($aTaskUser) + { + foreach ($aTaskUser as $key => $row) { + $oTaskUser = new TaskUser(); + if ($oTaskUser->TaskUserExists( $row['TAS_UID'], $row['USR_UID'], $row['TU_TYPE'], $row['TU_RELATION'] )) { + $oTaskUser->remove( $row['TAS_UID'], $row['USR_UID'], $row['TU_TYPE'], $row['TU_RELATION'] ); + } + $res = $oTaskUser->create( $row ); + } + return; + } + + /** + * Get Task User Rows from an array of data + * + * @param array $aTaskUser + * @return array $aStepTrigger + */ + public function createGroupRow ($aGroupwf) + { + foreach ($aGroupwf as $key => $row) { + $oGroupwf = new Groupwf(); + if ($oGroupwf->GroupwfExists( $row['GRP_UID'] )) { + $oGroupwf->remove( $row['GRP_UID'] ); + } + $res = $oGroupwf->create( $row ); + } + } + + /** + * Create DB Connections rows from an array of data + * + * @param array $aConnections + * @return void + */ + public function createDBConnectionsRows ($aConnections) + { + foreach ($aConnections as $sKey => $aRow) { + $oConnection = new DbSource(); + if ($oConnection->Exists( $aRow['DBS_UID'], $aRow['PRO_UID'] )) { + $oConnection->remove( $aRow['DBS_UID'], $aRow['PRO_UID'] ); + } + $oConnection->create( $aRow ); + // Update information in the table of contents - $oContent = new Content(); - $ConCategory = 'DBS_DESCRIPTION'; - $ConParent = ''; - $ConId = $aRow['DBS_UID']; - $ConLang = SYS_LANG; - if ($oContent->Exists( $ConCategory, $ConParent, $ConId, $ConLang )) { - $oContent->removeContent( $ConCategory, $ConParent, $ConId ); - } - $oContent->addContent( $ConCategory, $ConParent, $ConId, $ConLang, "" ); - } + $oContent = new Content(); + $ConCategory = 'DBS_DESCRIPTION'; + $ConParent = ''; + $ConId = $aRow['DBS_UID']; + $ConLang = SYS_LANG; + if ($oContent->Exists( $ConCategory, $ConParent, $ConId, $ConLang )) { + $oContent->removeContent( $ConCategory, $ConParent, $ConId ); + } + $oContent->addContent( $ConCategory, $ConParent, $ConId, $ConLang, "" ); + } } #@!neyek - - - /** - * Create Report Tables from an array of data - * - * @param array $aReportTables - * @param array $aReportTablesVars - * @return void - */ - function createReportTables ($aReportTables, $aReportTablesVars) - { - $this->createReportTablesVars( $aReportTablesVars ); - $oReportTables = new ReportTables(); - foreach ($aReportTables as $sKey => $aRow) { - $bExists = true; - $sTable = $aRow['REP_TAB_NAME']; - $iCounter = 1; - while ($bExists) { - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ReportTablePeer::REP_TAB_NAME, $sTable ); - $oDataset = ReportTablePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $bExists = ($aRow2 = $oDataset->getRow()); - if ($bExists) { - $sTable = $aRow['REP_TAB_NAME'] . '_' . $iCounter; - $iCounter ++; - } else { - $aRow['REP_TAB_NAME'] = $sTable; - } - } - $aFields = $oReportTables->getTableVars( $aRow['REP_TAB_UID'], true ); - $oReportTables->createTable( $aRow['REP_TAB_NAME'], $aRow['REP_TAB_CONNECTION'], $aRow['REP_TAB_TYPE'], $aFields ); - $oReportTables->populateTable( $aRow['REP_TAB_NAME'], $aRow['REP_TAB_CONNECTION'], $aRow['REP_TAB_TYPE'], $aFields, $aRow['PRO_UID'], $aRow['REP_TAB_GRID'] ); - $aReportTables[$sKey]['REP_TAB_NAME'] = $aRow['REP_TAB_NAME']; - $oRep = new ReportTable(); - if ($oRep->reportTableExists( $aRow['REP_TAB_UID'] )) - $oRep->remove( $aRow['REP_TAB_UID'] ); - $oRep->create( $aRow ); - } + + + /** + * Create Report Tables from an array of data + * + * @param array $aReportTables + * @param array $aReportTablesVars + * @return void + */ + public function createReportTables ($aReportTables, $aReportTablesVars) + { + $this->createReportTablesVars( $aReportTablesVars ); + $oReportTables = new ReportTables(); + foreach ($aReportTables as $sKey => $aRow) { + $bExists = true; + $sTable = $aRow['REP_TAB_NAME']; + $iCounter = 1; + while ($bExists) { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ReportTablePeer::REP_TAB_NAME, $sTable ); + $oDataset = ReportTablePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $bExists = ($aRow2 = $oDataset->getRow()); + if ($bExists) { + $sTable = $aRow['REP_TAB_NAME'] . '_' . $iCounter; + $iCounter ++; + } else { + $aRow['REP_TAB_NAME'] = $sTable; + } + } + $aFields = $oReportTables->getTableVars( $aRow['REP_TAB_UID'], true ); + $oReportTables->createTable( $aRow['REP_TAB_NAME'], $aRow['REP_TAB_CONNECTION'], $aRow['REP_TAB_TYPE'], $aFields ); + $oReportTables->populateTable( $aRow['REP_TAB_NAME'], $aRow['REP_TAB_CONNECTION'], $aRow['REP_TAB_TYPE'], $aFields, $aRow['PRO_UID'], $aRow['REP_TAB_GRID'] ); + $aReportTables[$sKey]['REP_TAB_NAME'] = $aRow['REP_TAB_NAME']; + $oRep = new ReportTable(); + if ($oRep->reportTableExists( $aRow['REP_TAB_UID'] )) { + $oRep->remove( $aRow['REP_TAB_UID'] ); + } + $oRep->create( $aRow ); + } + } + #@!neyek + + /** + * Update Report Tables from an array of data + * + * @param array $aReportTables + * @param array $aReportTablesVars + * @return void + */ + public function updateReportTables ($aReportTables, $aReportTablesVars) + { + $this->cleanupReportTablesReferences( $aReportTables ); + $this->createReportTables( $aReportTables, $aReportTablesVars ); } #@!neyek - - - /** - * Update Report Tables from an array of data - * - * @param array $aReportTables - * @param array $aReportTablesVars - * @return void - */ - function updateReportTables ($aReportTables, $aReportTablesVars) - { - $this->cleanupReportTablesReferences( $aReportTables ); - $this->createReportTables( $aReportTables, $aReportTablesVars ); + + + /** + * Create Report Tables Vars from an array of data + * + * @param array $aReportTablesVars + * @return void + */ + public function createReportTablesVars ($aReportTablesVars) + { + foreach ($aReportTablesVars as $sKey => $aRow) { + $oRep = new ReportVar(); + if ($oRep->reportVarExists( $aRow['REP_VAR_UID'] )) { + $oRep->remove( $aRow['REP_VAR_UID'] ); + } + $oRep->create( $aRow ); + } } #@!neyek - - - /** - * Create Report Tables Vars from an array of data - * - * @param array $aReportTablesVars - * @return void - */ - function createReportTablesVars ($aReportTablesVars) - { - foreach ($aReportTablesVars as $sKey => $aRow) { - $oRep = new ReportVar(); - if ($oRep->reportVarExists( $aRow['REP_VAR_UID'] )) - $oRep->remove( $aRow['REP_VAR_UID'] ); - - $oRep->create( $aRow ); - } + + + /** + * Cleanup Report Tables References from an array of data + * + * @param array $aReportTables + * @return void + */ + public function cleanupReportTablesReferences ($aReportTables) + { + foreach ($aReportTables as $sKey => $aRow) { + $oReportTables = new ReportTables(); + $oReportTables->deleteReportTable( $aRow['REP_TAB_UID'] ); + $oReportTables->deleteAllReportVars( $aRow['REP_TAB_UID'] ); + $oReportTables->dropTable( $aRow['REP_TAB_NAME'] ); + } } #@!neyek - - - /** - * Cleanup Report Tables References from an array of data - * - * @param array $aReportTables - * @return void - */ - function cleanupReportTablesReferences ($aReportTables) - { - foreach ($aReportTables as $sKey => $aRow) { - $oReportTables = new ReportTables(); - $oReportTables->deleteReportTable( $aRow['REP_TAB_UID'] ); - $oReportTables->deleteAllReportVars( $aRow['REP_TAB_UID'] ); - $oReportTables->dropTable( $aRow['REP_TAB_NAME'] ); - } - } #@!neyek - - - /** - * change Status of any Process - * - * @param string $sProUid - * @return boolean - */ - function serializeProcess ($sProUid = '') - { - $oProcess = new Process(); - $oData->process = $this->getProcessRow( $sProUid, false ); - $oData->tasks = $this->getTaskRows( $sProUid ); - $oData->routes = $this->getRouteRows( $sProUid ); - $oData->lanes = $this->getLaneRows( $sProUid ); - $oData->gateways = $this->getGatewayRows( $sProUid ); - $oData->inputs = $this->getInputRows( $sProUid ); - $oData->outputs = $this->getOutputRows( $sProUid ); - $oData->dynaforms = $this->getDynaformRows( $sProUid ); - $oData->steps = $this->getStepRows( $sProUid ); - $oData->triggers = $this->getTriggerRows( $sProUid ); - $oData->taskusers = $this->getTaskUserRows( $oData->tasks ); - $oData->groupwfs = $this->getGroupwfRows( $oData->taskusers ); - $oData->steptriggers = $this->getStepTriggerRows( $oData->tasks ); - $oData->dbconnections = $this->getDBConnectionsRows( $sProUid ); - $oData->reportTables = $this->getReportTablesRows( $sProUid ); - $oData->reportTablesVars = $this->getReportTablesVarsRows( $sProUid ); - $oData->stepSupervisor = $this->getStepSupervisorRows( $sProUid ); - $oData->objectPermissions = $this->getObjectPermissionRows( $sProUid ); - $oData->subProcess = $this->getSubProcessRow( $sProUid ); - $oData->caseTracker = $this->getCaseTrackerRow( $sProUid ); - $oData->caseTrackerObject = $this->getCaseTrackerObjectRow( $sProUid ); - $oData->stage = $this->getStageRow( $sProUid ); - $oData->fieldCondition = $this->getFieldCondition( $sProUid ); - $oData->event = $this->getEventRow( $sProUid ); - $oData->caseScheduler = $this->getCaseSchedulerRow( $sProUid ); - $oData->processCategory = $this->getProcessCategoryRow( $sProUid ); - + + + /** + * change Status of any Process + * + * @param string $sProUid + * @return boolean + */ + public function serializeProcess ($sProUid = '') + { + $oProcess = new Process(); + $oData->process = $this->getProcessRow( $sProUid, false ); + $oData->tasks = $this->getTaskRows( $sProUid ); + $oData->routes = $this->getRouteRows( $sProUid ); + $oData->lanes = $this->getLaneRows( $sProUid ); + $oData->gateways = $this->getGatewayRows( $sProUid ); + $oData->inputs = $this->getInputRows( $sProUid ); + $oData->outputs = $this->getOutputRows( $sProUid ); + $oData->dynaforms = $this->getDynaformRows( $sProUid ); + $oData->steps = $this->getStepRows( $sProUid ); + $oData->triggers = $this->getTriggerRows( $sProUid ); + $oData->taskusers = $this->getTaskUserRows( $oData->tasks ); + $oData->groupwfs = $this->getGroupwfRows( $oData->taskusers ); + $oData->steptriggers = $this->getStepTriggerRows( $oData->tasks ); + $oData->dbconnections = $this->getDBConnectionsRows( $sProUid ); + $oData->reportTables = $this->getReportTablesRows( $sProUid ); + $oData->reportTablesVars = $this->getReportTablesVarsRows( $sProUid ); + $oData->stepSupervisor = $this->getStepSupervisorRows( $sProUid ); + $oData->objectPermissions = $this->getObjectPermissionRows( $sProUid ); + $oData->subProcess = $this->getSubProcessRow( $sProUid ); + $oData->caseTracker = $this->getCaseTrackerRow( $sProUid ); + $oData->caseTrackerObject = $this->getCaseTrackerObjectRow( $sProUid ); + $oData->stage = $this->getStageRow( $sProUid ); + $oData->fieldCondition = $this->getFieldCondition( $sProUid ); + $oData->event = $this->getEventRow( $sProUid ); + $oData->caseScheduler = $this->getCaseSchedulerRow( $sProUid ); + $oData->processCategory = $this->getProcessCategoryRow( $sProUid ); + //krumo ($oData);die; //$oJSON = new Services_JSON(); //krumo ( $oJSON->encode($oData) ); //return $oJSON->encode($oData); - return serialize( $oData ); - } - - /** - * Save a Serialized Process from an object - * - * @param array $oData - * @return $result an array - */ - function saveSerializedProcess ($oData) - { + return serialize( $oData ); + } + + /** + * Save a Serialized Process from an object + * + * @param array $oData + * @return $result an array + */ + public function saveSerializedProcess ($oData) + { //$oJSON = new Services_JSON(); //$data = $oJSON->decode($oData); //$sProUid = $data->process->PRO_UID; - $data = unserialize( $oData ); - $sProUid = $data->process['PRO_UID']; - $path = PATH_DOCUMENT . 'output' . PATH_SEP; - - if (! is_dir( $path )) { - G::verifyPath( $path, true ); - } - $proTitle = (substr( G::inflect( $data->process['PRO_TITLE'] ), 0, 245 )); - $proTitle = preg_replace( "/[^A-Za-z0-9_]/", "", $proTitle ); + $data = unserialize( $oData ); + $sProUid = $data->process['PRO_UID']; + $path = PATH_DOCUMENT . 'output' . PATH_SEP; + + if (! is_dir( $path )) { + G::verifyPath( $path, true ); + } + + $proTitle = (substr( G::inflect( $data->process['PRO_TITLE'] ), 0, 245 )); + $proTitle = preg_replace( "/[^A-Za-z0-9_]/", "", $proTitle ); //Calculating the maximum length of file name - $pathLength = strlen( PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "files" . PATH_SEP . "output" . PATH_SEP ); - $length = strlen( $proTitle ) + $pathLength; - if ($length >= 250) { - $proTitle = myTruncate( $proTitle, 250 - $pathLength, '_', '' ); - } - $index = ''; - - $lastIndex = ''; - - do { - $filename = $path . $proTitle . $index . '.pm'; - $lastIndex = $index; - - if ($index == '') - $index = 1; - else - $index ++; - } while (file_exists( $filename )); - - $proTitle .= $lastIndex; - - $filenameOnly = $proTitle . '.pm'; - - $fp = fopen( $filename . 'tpm', "wb" ); - - $fsData = sprintf( "%09d", strlen( $oData ) ); + $pathLength = strlen( PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "files" . PATH_SEP . "output" . PATH_SEP ); + $length = strlen( $proTitle ) + $pathLength; + if ($length >= 250) { + $proTitle = myTruncate( $proTitle, 250 - $pathLength, '_', '' ); + } + $index = ''; + + $lastIndex = ''; + + do { + $filename = $path . $proTitle . $index . '.pm'; + $lastIndex = $index; + + if ($index == '') { + $index = 1; + } else { + $index ++; + } + } while (file_exists( $filename )); + + $proTitle .= $lastIndex; + + $filenameOnly = $proTitle . '.pm'; + + $fp = fopen( $filename . 'tpm', "wb" ); + + $fsData = sprintf( "%09d", strlen( $oData ) ); $bytesSaved = fwrite( $fp, $fsData ); //writing the size of $oData $bytesSaved += fwrite( $fp, $oData ); //writing the $oData - - - foreach ($data->dynaforms as $key => $val) { - $sFileName = PATH_DYNAFORM . $val['DYN_FILENAME'] . '.xml'; - if (file_exists( $sFileName )) { - $xmlGuid = $val['DYN_UID']; - $fsXmlGuid = sprintf( "%09d", strlen( $xmlGuid ) ); + + + foreach ($data->dynaforms as $key => $val) { + $sFileName = PATH_DYNAFORM . $val['DYN_FILENAME'] . '.xml'; + if (file_exists( $sFileName )) { + $xmlGuid = $val['DYN_UID']; + $fsXmlGuid = sprintf( "%09d", strlen( $xmlGuid ) ); $bytesSaved += fwrite( $fp, $fsXmlGuid ); //writing the size of xml file $bytesSaved += fwrite( $fp, $xmlGuid ); //writing the xmlfile - - - $xmlContent = file_get_contents( $sFileName ); - $fsXmlContent = sprintf( "%09d", strlen( $xmlContent ) ); + + $xmlContent = file_get_contents( $sFileName ); + $fsXmlContent = sprintf( "%09d", strlen( $xmlContent ) ); $bytesSaved += fwrite( $fp, $fsXmlContent ); //writing the size of xml file $bytesSaved += fwrite( $fp, $xmlContent ); //writing the xmlfile - } - - $sFileName2 = PATH_DYNAFORM . $val['DYN_FILENAME'] . '.html'; - if (file_exists( $sFileName2 )) { - $htmlGuid = $val['DYN_UID']; - $fsHtmlGuid = sprintf( "%09d", strlen( $htmlGuid ) ); + } + + $sFileName2 = PATH_DYNAFORM . $val['DYN_FILENAME'] . '.html'; + if (file_exists( $sFileName2 )) { + $htmlGuid = $val['DYN_UID']; + $fsHtmlGuid = sprintf( "%09d", strlen( $htmlGuid ) ); $bytesSaved += fwrite( $fp, $fsHtmlGuid ); //writing size dynaform id $bytesSaved += fwrite( $fp, $htmlGuid ); //writing dynaform id - - - $htmlContent = file_get_contents( $sFileName2 ); - $fsHtmlContent = sprintf( "%09d", strlen( $htmlContent ) ); + + + $htmlContent = file_get_contents( $sFileName2 ); + $fsHtmlContent = sprintf( "%09d", strlen( $htmlContent ) ); $bytesSaved += fwrite( $fp, $fsHtmlContent ); //writing the size of xml file $bytesSaved += fwrite( $fp, $htmlContent ); //writing the htmlfile - } - } - /** - * By - * here we should work for the new functionalities - * we have a many files for attach into this file - * - * here we go with the anothers files ;) - */ + } + } + /** + * By + * here we should work for the new functionalities + * we have a many files for attach into this file + * + * here we go with the anothers files ;) + */ //before to do something we write a header into pm file for to do a differentiation between document types - - + + //create the store object //$file_objects = new ObjectCellection(); - - + + // for mailtemplates files - $MAILS_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'mailTemplates' . PATH_SEP . $data->process['PRO_UID']; - - $isMailTempSent = false; - $isPublicSent = false; + $MAILS_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'mailTemplates' . PATH_SEP . $data->process['PRO_UID']; + + $isMailTempSent = false; + $isPublicSent = false; //if this process have any mailfile - if (is_dir( $MAILS_ROOT_PATH )) { - + if (is_dir( $MAILS_ROOT_PATH )) { + //get mail files list from this directory - $file_list = scandir( $MAILS_ROOT_PATH ); - - foreach ($file_list as $filename) { + $file_list = scandir( $MAILS_ROOT_PATH ); + + foreach ($file_list as $filename) { // verify if this filename is a valid file, because it could be . or .. on *nix systems - if ($filename != '.' && $filename != '..') { - if (@is_readable( $MAILS_ROOT_PATH . PATH_SEP . $filename )) { - $sFileName = $MAILS_ROOT_PATH . PATH_SEP . $filename; - if (file_exists( $sFileName )) { - if (! $isMailTempSent) { - $bytesSaved += fwrite( $fp, 'MAILTEMPL' ); - $isMailTempSent = true; - } + if ($filename != '.' && $filename != '..') { + if (@is_readable( $MAILS_ROOT_PATH . PATH_SEP . $filename )) { + $sFileName = $MAILS_ROOT_PATH . PATH_SEP . $filename; + if (file_exists( $sFileName )) { + if (! $isMailTempSent) { + $bytesSaved += fwrite( $fp, 'MAILTEMPL' ); + $isMailTempSent = true; + } //$htmlGuid = $val['DYN_UID']; - $fsFileName = sprintf( "%09d", strlen( $filename ) ); + $fsFileName = sprintf( "%09d", strlen( $filename ) ); $bytesSaved += fwrite( $fp, $fsFileName ); //writing the fileName size $bytesSaved += fwrite( $fp, $filename ); //writing the fileName size - - - $fileContent = file_get_contents( $sFileName ); - $fsFileContent = sprintf( "%09d", strlen( $fileContent ) ); + + $fileContent = file_get_contents( $sFileName ); + $fsFileContent = sprintf( "%09d", strlen( $fileContent ) ); $bytesSaved += fwrite( $fp, $fsFileContent ); //writing the size of xml file $bytesSaved += fwrite( $fp, $fileContent ); //writing the htmlfile - } - - } - } - } - } - + } + } + } + } + } + // for public files - $PUBLIC_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP . $data->process['PRO_UID']; - + $PUBLIC_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP . $data->process['PRO_UID']; + //if this process have any mailfile - if (is_dir( $PUBLIC_ROOT_PATH )) { - + if (is_dir( $PUBLIC_ROOT_PATH )) { //get mail files list from this directory - $file_list = scandir( $PUBLIC_ROOT_PATH ); - - foreach ($file_list as $filename) { + $file_list = scandir( $PUBLIC_ROOT_PATH ); + foreach ($file_list as $filename) { // verify if this filename is a valid file, because it could be . or .. on *nix systems - if ($filename != '.' && $filename != '..') { - if (@is_readable( $PUBLIC_ROOT_PATH . PATH_SEP . $filename )) { - $sFileName = $PUBLIC_ROOT_PATH . PATH_SEP . $filename; - if (file_exists( $sFileName )) { - if (! $isPublicSent) { - $bytesSaved += fwrite( $fp, 'PUBLIC ' ); - $isPublicSent = true; - } + if ($filename != '.' && $filename != '..') { + if (@is_readable( $PUBLIC_ROOT_PATH . PATH_SEP . $filename )) { + $sFileName = $PUBLIC_ROOT_PATH . PATH_SEP . $filename; + if (file_exists( $sFileName )) { + if (! $isPublicSent) { + $bytesSaved += fwrite( $fp, 'PUBLIC ' ); + $isPublicSent = true; + } //$htmlGuid = $val['DYN_UID']; - $fsFileName = sprintf( "%09d", strlen( $filename ) ); - $bytesSaved += fwrite( $fp, $fsFileName ); //writing the fileName size - $bytesSaved += fwrite( $fp, $filename ); //writing the fileName size - - - $fileContent = file_get_contents( $sFileName ); - $fsFileContent = sprintf( "%09d", strlen( $fileContent ) ); - $bytesSaved += fwrite( $fp, $fsFileContent ); //writing the size of xml file - $bytesSaved += fwrite( $fp, $fileContent ); //writing the htmlfile - } - - } - } - } - } - + $fsFileName = sprintf( "%09d", strlen( $filename ) ); + $bytesSaved += fwrite( $fp, $fsFileName ); + //writing the fileName size + $bytesSaved += fwrite( $fp, $filename ); + //writing the fileName size + $fileContent = file_get_contents( $sFileName ); + $fsFileContent = sprintf( "%09d", strlen( $fileContent ) ); + $bytesSaved += fwrite( $fp, $fsFileContent ); + //writing the size of xml file + $bytesSaved += fwrite( $fp, $fileContent ); + //writing the htmlfile + } + } + } + } + } + /* - // for public files - $PUBLIC_ROOT_PATH = PATH_DATA.'sites'.PATH_SEP.SYS_SYS.PATH_SEP.'public'.PATH_SEP.$data->process['PRO_UID']; - - //if this process have any mailfile - if ( is_dir( $PUBLIC_ROOT_PATH ) ) { - - //get mail files list from this directory - $files_list = scandir($PUBLIC_ROOT_PATH); - foreach ($file_list as $filename) { - // verify if this filename is a valid file, beacuse it could be . or .. on *nix systems - if($filename != '.' && $filename != '..'){ - if (@is_readable($PUBLIC_ROOT_PATH.PATH_SEP.$nombre_archivo)) { - $tmp = explode('.', $filename); - $ext = $tmp[1]; - $ext_fp = fopen($PUBLIC_ROOT_PATH.PATH_SEP.$nombre_archivo, 'r'); - $file_data = fread($ext_fp, filesize($PUBLIC_ROOT_PATH.PATH_SEP.$nombre_archivo)); - fclose($ext_fp); - $file_objects->add($filename, $ext, $file_data,'public'); + // for public files + $PUBLIC_ROOT_PATH = PATH_DATA.'sites'.PATH_SEP.SYS_SYS.PATH_SEP.'public'.PATH_SEP.$data->process['PRO_UID']; + //if this process have any mailfile + if ( is_dir( $PUBLIC_ROOT_PATH ) ) { + //get mail files list from this directory + $files_list = scandir($PUBLIC_ROOT_PATH); + foreach ($file_list as $filename) { + // verify if this filename is a valid file, beacuse it could be . or .. on *nix systems + if($filename != '.' && $filename != '..'){ + if (@is_readable($PUBLIC_ROOT_PATH.PATH_SEP.$nombre_archivo)) { + $tmp = explode('.', $filename); + $ext = $tmp[1]; + $ext_fp = fopen($PUBLIC_ROOT_PATH.PATH_SEP.$nombre_archivo, 'r'); + $file_data = fread($ext_fp, filesize($PUBLIC_ROOT_PATH.PATH_SEP.$nombre_archivo)); + fclose($ext_fp); + $file_objects->add($filename, $ext, $file_data,'public'); + } + } + } } - } - } - } - - //So,. we write the store object into pm export file - $extended_data = serialize($file_objects); - $bytesSaved += fwrite( $fp, $extended_data ); - */ - /* under here, I've not modified those lines */ - - fclose( $fp ); + //So,. we write the store object into pm export file + $extended_data = serialize($file_objects); + $bytesSaved += fwrite( $fp, $extended_data ); + */ + /* under here, I've not modified those lines */ + fclose( $fp ); //$bytesSaved = file_put_contents ( $filename , $oData ); - $filenameLink = 'processes_DownloadFile?p=' . $proTitle . '&r=' . rand( 100, 1000 ); - $result['PRO_UID'] = $data->process['PRO_UID']; - $result['PRO_TITLE'] = $data->process['PRO_TITLE']; - $result['PRO_DESCRIPTION'] = $data->process['PRO_DESCRIPTION']; - $result['SIZE'] = $bytesSaved; - $result['FILENAME'] = $filenameOnly; - $result['FILENAME_LINK'] = $filenameLink; - return $result; - } - - /** - * Get the process Data form a filename - * - * @param array $pmFilename - * @return void - */ - function getProcessData ($pmFilename) - { - $oProcess = new Process(); - if (! file_exists( $pmFilename )) - throw (new Exception( 'Unable to read uploaded file, please check permissions. ' )); - - if (! filesize( $pmFilename ) >= 9) - throw (new Exception( 'Uploaded file is corrupted, please check the file before continuing. ' )); - clearstatcache(); - $fp = fopen( $pmFilename, "rb" ); + $filenameLink = 'processes_DownloadFile?p=' . $proTitle . '&r=' . rand( 100, 1000 ); + $result['PRO_UID'] = $data->process['PRO_UID']; + $result['PRO_TITLE'] = $data->process['PRO_TITLE']; + $result['PRO_DESCRIPTION'] = $data->process['PRO_DESCRIPTION']; + $result['SIZE'] = $bytesSaved; + $result['FILENAME'] = $filenameOnly; + $result['FILENAME_LINK'] = $filenameLink; + return $result; + } + + /** + * Get the process Data form a filename + * + * @param array $pmFilename + * @return void + */ + public function getProcessData ($pmFilename) + { + $oProcess = new Process(); + if (! file_exists( $pmFilename )) { + throw (new Exception( 'Unable to read uploaded file, please check permissions. ' )); + } + if (! filesize( $pmFilename ) >= 9) { + throw (new Exception( 'Uploaded file is corrupted, please check the file before continuing. ' )); + } + clearstatcache(); + $fp = fopen( $pmFilename, "rb" ); $fsData = intval( fread( $fp, 9 ) ); //reading the size of $oData - $contents = ''; + $contents = ''; $contents = @fread( $fp, $fsData ); //reading string $oData - - - if ($contents != '') { - $oData = unserialize( $contents ); - if ($oData === false) - throw new Exception( "Process file is not valid" ); - - foreach ($oData->dynaforms as $key => $value) { - if ($value['DYN_TYPE'] == 'grid') { - $oData->gridFiles[$value['DYN_UID']] = $value['DYN_UID']; - } - } - - $oData->dynaformFiles = array (); - $sIdentifier = 0; - while (! feof( $fp ) && is_numeric( $sIdentifier )) { - $sIdentifier = fread( $fp, 9 ); //reading the block identifier - if (is_numeric( $sIdentifier )) { + + if ($contents != '') { + $oData = unserialize( $contents ); + if ($oData === false) { + throw new Exception( "Process file is not valid" ); + } + foreach ($oData->dynaforms as $key => $value) { + if ($value['DYN_TYPE'] == 'grid') { + $oData->gridFiles[$value['DYN_UID']] = $value['DYN_UID']; + } + } + + $oData->dynaformFiles = array (); + $sIdentifier = 0; + while (! feof( $fp ) && is_numeric( $sIdentifier )) { + $sIdentifier = fread( $fp, 9 );//reading the block identifier + if (is_numeric( $sIdentifier )) { $fsXmlGuid = intval( $sIdentifier ); //reading the size of $filename - if ($fsXmlGuid > 0) + if ($fsXmlGuid > 0) { $XmlGuid = fread( $fp, $fsXmlGuid ); //reading string $XmlGuid - - + } + $fsXmlContent = intval( fread( $fp, 9 ) ); //reading the size of $XmlContent - if ($fsXmlContent > 0) { - $oData->dynaformFiles[$XmlGuid] = $XmlGuid; + if ($fsXmlContent > 0) { + $oData->dynaformFiles[$XmlGuid] = $XmlGuid; $XmlContent = fread( $fp, $fsXmlContent ); //reading string $XmlContent - unset( $XmlContent ); - } - } - } - } else { - $oData = null; - } - fclose( $fp ); - return $oData; - } - + unset( $XmlContent ); + } + } + } + } else { + $oData = null; + } + fclose( $fp ); + return $oData; + } + // import process related functions - - - /** - * function checkExistingGroups - * checkExistingGroups check if any of the groups listed in the parameter - * array exist and wich are those, that is the result $sFilteredGroups array. - * - * @author gustavo cruz gustavo-at-colosa.com - * @param $sGroupList array of a group list - * @return $existingGroupList array of existing groups or null - */ - function checkExistingGroups ($sGroupList) - { - $aGroupwf = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->addSelectColumn( GroupwfPeer::GRP_UID ); - $oCriteria->addSelectColumn( ContentPeer::CON_ID ); - $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); - $oCriteria->add( ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); - $oCriteria->add( ContentPeer::CON_LANG, 'en' ); - $oCriteria->addJoin( ContentPeer::CON_ID, GroupwfPeer::GRP_UID ); - $oDataset = ContentPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aGroupwf[] = $aRow; - $oDataset->next(); - } + + + /** + * function checkExistingGroups + * checkExistingGroups check if any of the groups listed in the parameter + * array exist and wich are those, that is the result $sFilteredGroups array. + * + * @author gustavo cruz gustavo-at-colosa.com + * @param $sGroupList array of a group list + * @return $existingGroupList array of existing groups or null + */ + public function checkExistingGroups ($sGroupList) + { + $aGroupwf = array (); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( GroupwfPeer::GRP_UID ); + $oCriteria->addSelectColumn( ContentPeer::CON_ID ); + $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); + $oCriteria->add( ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); + $oCriteria->add( ContentPeer::CON_LANG, 'en' ); + $oCriteria->addJoin( ContentPeer::CON_ID, GroupwfPeer::GRP_UID ); + $oDataset = ContentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aGroupwf[] = $aRow; + $oDataset->next(); + } //check if any group name exists in the dbase - if (is_array( $sGroupList )) { - foreach ($aGroupwf as $groupBase) { - foreach ($sGroupList as $group) { - if ($groupBase['CON_VALUE'] == $group['GRP_TITLE'] && $groupBase['CON_ID'] != $group['GRP_UID']) { - $existingGroupList[] = $group; - } - } - } - } + if (is_array( $sGroupList )) { + foreach ($aGroupwf as $groupBase) { + foreach ($sGroupList as $group) { + if ($groupBase['CON_VALUE'] == $group['GRP_TITLE'] && $groupBase['CON_ID'] != $group['GRP_UID']) { + $existingGroupList[] = $group; + } + } + } + } //return $sGroupList; - if (isset( $existingGroupList )) - return $existingGroupList; - else - return null; - - } - - /** - * function renameExistingGroups - * renameExistingGroups check if any of the groups listed in the parameter - * array exist and wich are those, then rename the file adding a number - * suffix to the title atribute of each element of the $renamedGroupList array. - * - * @author gustavo cruz gustavo-at-colosa.com - * @param $sGroupList array of a group list - * @return $renamedGroupList array of existing groups - */ - - function renameExistingGroups ($sGroupList) - { - $checkedGroup = $this->checkExistingGroups( $sGroupList ); - foreach ($sGroupList as $groupBase) { - foreach ($checkedGroup as $group) { - if ($groupBase['GRP_TITLE'] == $group['GRP_TITLE']) { - $index = substr( $groupBase['GRP_TITLE'], - 1, 0 ); - if (is_int( $index )) { - $index ++; - } else { - $index = 1; - } - $groupBase['GRP_TITLE'] = $groupBase['GRP_TITLE'] . $index; - } - - } - $renamedGroupList[] = $groupBase; - } - - if (isset( $renamedGroupList )) - return $renamedGroupList; - else - return null; - - } - - /** - * function mergeExistingGroups - * mergeExistingGroups check if any of the groups listed in the parameter - * array exist and wich are those, then replaces the id of the elements in - * in the $mergedGroupList array. - * - * @author gustavo cruz gustavo-at-colosa.com - * @param $sGroupList array of a group list - * @return $mergedGroupList array of existing groups - */ - function mergeExistingGroups ($sGroupList) - { - - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->addSelectColumn( GroupwfPeer::GRP_UID ); - $oCriteria->addSelectColumn( ContentPeer::CON_ID ); - $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); - $oCriteria->add( ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); - $oCriteria->add( ContentPeer::CON_LANG, 'en' ); - $oCriteria->addJoin( ContentPeer::CON_ID, GroupwfPeer::GRP_UID ); - $oDataset = ContentPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aGroupwf[] = $aRow; - $oDataset->next(); - } + if (isset( $existingGroupList )) { + return $existingGroupList; + } else { + return null; + } + } + + /** + * function renameExistingGroups + * renameExistingGroups check if any of the groups listed in the parameter + * array exist and wich are those, then rename the file adding a number + * suffix to the title atribute of each element of the $renamedGroupList array. + * + * @author gustavo cruz gustavo-at-colosa.com + * @param $sGroupList array of a group list + * @return $renamedGroupList array of existing groups + */ + + public function renameExistingGroups ($sGroupList) + { + $checkedGroup = $this->checkExistingGroups( $sGroupList ); + foreach ($sGroupList as $groupBase) { + foreach ($checkedGroup as $group) { + if ($groupBase['GRP_TITLE'] == $group['GRP_TITLE']) { + $index = substr( $groupBase['GRP_TITLE'], - 1, 0 ); + if (is_int( $index )) { + $index ++; + } else { + $index = 1; + } + $groupBase['GRP_TITLE'] = $groupBase['GRP_TITLE'] . $index; + } + + } + $renamedGroupList[] = $groupBase; + } + + if (isset( $renamedGroupList )) { + return $renamedGroupList; + } else { + return null; + } + } + + /** + * function mergeExistingGroups + * mergeExistingGroups check if any of the groups listed in the parameter + * array exist and wich are those, then replaces the id of the elements in + * in the $mergedGroupList array. + * + * @author gustavo cruz gustavo-at-colosa.com + * @param $sGroupList array of a group list + * @return $mergedGroupList array of existing groups + */ + public function mergeExistingGroups ($sGroupList) + { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( GroupwfPeer::GRP_UID ); + $oCriteria->addSelectColumn( ContentPeer::CON_ID ); + $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); + $oCriteria->add( ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); + $oCriteria->add( ContentPeer::CON_LANG, 'en' ); + $oCriteria->addJoin( ContentPeer::CON_ID, GroupwfPeer::GRP_UID ); + $oDataset = ContentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aGroupwf[] = $aRow; + $oDataset->next(); + } //check if any group name exists in the dbase - foreach ($sGroupList as $group) { - $merged = false; - foreach ($aGroupwf as $groupBase) { - if ($groupBase['CON_VALUE'] == $group['GRP_TITLE'] && $groupBase['CON_ID'] != $group['GRP_UID']) { - $group['GRP_UID'] = $groupBase['CON_ID']; - $mergedGroupList[] = $group; - $merged = true; - } - } - // - if (! $merged) { - $mergedGroupList[] = $group; - } - } - - if (isset( $mergedGroupList )) { - return $mergedGroupList; - } else { - return null; - } - } - - /** - * function mergeExistingUsers - * mergeExistingGroups check if any of the groups listed in the parameter - * array exist and wich are those, then replaces the id of the elements in - * in the $mergedGroupList array. - * - * @author gustavo cruz gustavo-at-colosa.com - * @param $sBaseGroupList array of a group list with the original group list - * @param $sGroupList array of a group list with the merged group list - * @param $sTaskUserList array of the task user list, it contents the link between - * the task and the group list - * @return $mergedTaskUserList array of the merged task user list - */ - function mergeExistingUsers ($sBaseGroupList, $sGroupList, $sTaskUserList) - { - foreach ($sTaskUserList as $taskuser) { - $merged = false; - foreach ($sBaseGroupList as $groupBase) { - foreach ($sGroupList as $group) { + foreach ($sGroupList as $group) { + $merged = false; + foreach ($aGroupwf as $groupBase) { + if ($groupBase['CON_VALUE'] == $group['GRP_TITLE'] && $groupBase['CON_ID'] != $group['GRP_UID']) { + $group['GRP_UID'] = $groupBase['CON_ID']; + $mergedGroupList[] = $group; + $merged = true; + } + } + + if (! $merged) { + $mergedGroupList[] = $group; + } + } + + if (isset( $mergedGroupList )) { + return $mergedGroupList; + } else { + return null; + } + } + + /** + * function mergeExistingUsers + * mergeExistingGroups check if any of the groups listed in the parameter + * array exist and wich are those, then replaces the id of the elements in + * in the $mergedGroupList array. + * + * @author gustavo cruz gustavo-at-colosa.com + * @param $sBaseGroupList array of a group list with the original group list + * @param $sGroupList array of a group list with the merged group list + * @param $sTaskUserList array of the task user list, it contents the link between + * the task and the group list + * @return $mergedTaskUserList array of the merged task user list + */ + public function mergeExistingUsers ($sBaseGroupList, $sGroupList, $sTaskUserList) + { + foreach ($sTaskUserList as $taskuser) { + $merged = false; + foreach ($sBaseGroupList as $groupBase) { + foreach ($sGroupList as $group) { // check if the group has been merged - if ($groupBase['GRP_TITLE'] == $group['GRP_TITLE'] && $groupBase['GRP_UID'] != $group['GRP_UID'] && $groupBase['GRP_UID'] == $taskuser['USR_UID']) { + if ($groupBase['GRP_TITLE'] == $group['GRP_TITLE'] && $groupBase['GRP_UID'] != $group['GRP_UID'] && $groupBase['GRP_UID'] == $taskuser['USR_UID']) { // merging the user id to match the merged group - $taskuser['USR_UID'] = $group['GRP_UID']; - $mergedTaskUserList[] = $taskuser; - $merged = true; - } - } - } + $taskuser['USR_UID'] = $group['GRP_UID']; + $mergedTaskUserList[] = $taskuser; + $merged = true; + } + } + } //if hasn't been merged set the default value - if (! $merged) { - $mergedTaskUserList[] = $taskuser; - } - } - if (isset( $mergedTaskUserList )) { - return $mergedTaskUserList; - } else { - return null; - } - } - + if (! $merged) { + $mergedTaskUserList[] = $taskuser; + } + } + if (isset( $mergedTaskUserList )) { + return $mergedTaskUserList; + } else { + return null; + } + } + // end of import process related functions - - - /** - * disable all previous process with the parent $sProUid - * - * @param $sProUid process uid - * @return void - */ - function disablePreviousProcesses ($sProUid) - { + + + /** + * disable all previous process with the parent $sProUid + * + * @param $sProUid process uid + * @return void + */ + public function disablePreviousProcesses ($sProUid) + { //change status of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ProcessPeer::PRO_PARENT, $sProUid ); - $oDataset = ProcessPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $oProcess = new Process(); - while ($aRow = $oDataset->getRow()) { - $aRow['PRO_STATUS'] = 'DISABLED'; - $aRow['PRO_UPDATE_DATE'] = 'now'; - $oProcess->update( $aRow ); - $oDataset->next(); - } - - } - - /** - * create the files from a . - * pm file - * - * @param $oData process data - * @param $pmFilename process file name - * @return boolean true - */ - function createFiles ($oData, $pmFilename) - { - if (! file_exists( $pmFilename )) - throw (new Exception( 'Unable to read uploaded .pm file, please check permissions. ' )); - - if (! filesize( $pmFilename ) >= 9) - throw (new Exception( 'Uploaded .pm file is corrupted, please check the file before continue. ' )); - - $fp = fopen( $pmFilename, "rb" ); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ProcessPeer::PRO_PARENT, $sProUid ); + $oDataset = ProcessPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $oProcess = new Process(); + while ($aRow = $oDataset->getRow()) { + $aRow['PRO_STATUS'] = 'DISABLED'; + $aRow['PRO_UPDATE_DATE'] = 'now'; + $oProcess->update( $aRow ); + $oDataset->next(); + } + } + + /** + * create the files from a . + * + * pm file + * + * @param $oData process data + * @param $pmFilename process file name + * @return boolean true + */ + public function createFiles ($oData, $pmFilename) + { + if (! file_exists( $pmFilename )) { + throw (new Exception( 'Unable to read uploaded .pm file, please check permissions. ' )); + } + if (! filesize( $pmFilename ) >= 9) { + throw (new Exception( 'Uploaded .pm file is corrupted, please check the file before continue. ' )); + } + $fp = fopen( $pmFilename, "rb" ); $fsData = intval( fread( $fp, 9 ) ); //reading the size of $oData $contents = fread( $fp, $fsData ); //reading string $oData - - - $path = PATH_DYNAFORM . $oData->process['PRO_UID'] . PATH_SEP; - if (! is_dir( $path )) { - G::verifyPath( $path, true ); - } - - $sIdentifier = 1; - while (! feof( $fp ) && is_numeric( $sIdentifier )) { + + $path = PATH_DYNAFORM . $oData->process['PRO_UID'] . PATH_SEP; + if (! is_dir( $path )) { + G::verifyPath( $path, true ); + } + + $sIdentifier = 1; + while (! feof( $fp ) && is_numeric( $sIdentifier )) { $sIdentifier = fread( $fp, 9 ); //reading the size of $filename - if (is_numeric( $sIdentifier )) { + if (is_numeric( $sIdentifier )) { $fsXmlGuid = intval( $sIdentifier ); //reading the size of $filename - if ($fsXmlGuid > 0) + if ($fsXmlGuid > 0) $XmlGuid = fread( $fp, $fsXmlGuid ); //reading string $XmlGuid $fsXmlContent = intval( fread( $fp, 9 ) ); //reading the size of $XmlContent - if ($fsXmlContent > 0) { - $newXmlGuid = $oData->dynaformFiles[$XmlGuid]; - if (isset( $oData->process['PRO_UID_OLD'] )) { + if ($fsXmlContent > 0) { + $newXmlGuid = $oData->dynaformFiles[$XmlGuid]; + if (isset( $oData->process['PRO_UID_OLD'] )) { $XmlContent = fread( $fp, $fsXmlContent ); //reading string $XmlContent - - - $XmlContent = str_replace( $oData->process['PRO_UID_OLD'], $oData->process['PRO_UID'], $XmlContent ); - $XmlContent = str_replace( $XmlGuid, $newXmlGuid, $XmlContent ); - + $XmlContent = str_replace( $oData->process['PRO_UID_OLD'], $oData->process['PRO_UID'], $XmlContent ); + $XmlContent = str_replace( $XmlGuid, $newXmlGuid, $XmlContent ); + //foreach - if (isset( $oData->gridFiles )) { - if (is_array( $oData->gridFiles )) { - foreach ($oData->gridFiles as $key => $value) { - $XmlContent = str_replace( $key, $value, $XmlContent ); - } - } - } - - if (isset( $oData->sqlConnections )) { - foreach ($oData->sqlConnections as $key => $value) { - $XmlContent = str_replace( $key, $value, $XmlContent ); - } - - } - + if (isset( $oData->gridFiles )) { + if (is_array( $oData->gridFiles )) { + foreach ($oData->gridFiles as $key => $value) { + $XmlContent = str_replace( $key, $value, $XmlContent ); + } + } + } + + if (isset( $oData->sqlConnections )) { + foreach ($oData->sqlConnections as $key => $value) { + $XmlContent = str_replace( $key, $value, $XmlContent ); + } + + } + #here we verify if is adynaform or a html - $aAux = explode( ' ', $XmlContent ); - $ext = (strpos( $aAux[0], 'process['PRO_UID'] . PATH_SEP; - $pathMailTem = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP . $oData->process['PRO_UID'] . PATH_SEP; - G::mk_dir( $pathPublic ); - G::mk_dir( $pathMailTem ); - - if ($sIdentifier == 'MAILTEMPL') { - $sIdentifier = 1; - while (! feof( $fp ) && is_numeric( $sIdentifier )) { + $pathPublic = PATH_DATA_SITE . 'public' . PATH_SEP . $oData->process['PRO_UID'] . PATH_SEP; + $pathMailTem = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP . $oData->process['PRO_UID'] . PATH_SEP; + G::mk_dir( $pathPublic ); + G::mk_dir( $pathMailTem ); + + if ($sIdentifier == 'MAILTEMPL') { + $sIdentifier = 1; + while (! feof( $fp ) && is_numeric( $sIdentifier )) { $sIdentifier = fread( $fp, 9 ); //reading the size of $filename - if (is_numeric( $sIdentifier )) { + if (is_numeric( $sIdentifier )) { $fsFileName = intval( $sIdentifier ); //reading the size of $filename - if ($fsFileName > 0) + if ($fsFileName > 0) { $sFileName = fread( $fp, $fsFileName ); //reading filename string + } $fsContent = function_exists( 'mb_strlen' ) ? mb_strlen( fread( $fp, 9 ) ) : strlen( fread( $fp, 9 ) ); //reading the size of $Content - if ($fsContent > 0) { + if ($fsContent > 0) { $fileContent = fread( $fp, $fsContent ); //reading string $XmlContent - $newFileName = $pathMailTem . $sFileName; - $bytesSaved = @file_put_contents( $newFileName, $fileContent ); - if ($bytesSaved != $fsContent) - throw (new Exception( 'Error writing MailTemplate file in directory : ' . $pathMailTem )); - } - } - } - } - - if (trim( $sIdentifier ) == 'PUBLIC') { - $sIdentifier = 1; - while (! feof( $fp ) && is_numeric( $sIdentifier )) { + $newFileName = $pathMailTem . $sFileName; + $bytesSaved = @file_put_contents( $newFileName, $fileContent ); + if ($bytesSaved != $fsContent) { + throw (new Exception( 'Error writing MailTemplate file in directory : ' . $pathMailTem )); + } + } + } + } + } + + if (trim( $sIdentifier ) == 'PUBLIC') { + $sIdentifier = 1; + while (! feof( $fp ) && is_numeric( $sIdentifier )) { $sIdentifier = fread( $fp, 9 ); //reading the size of $filename - if (is_numeric( $sIdentifier )) { + if (is_numeric( $sIdentifier )) { $fsFileName = intval( $sIdentifier ); //reading the size of $filename - if ($fsFileName > 0) + if ($fsFileName > 0) { $sFileName = fread( $fp, $fsFileName ); //reading filename string + } $fsContent = function_exists( 'mb_strlen' ) ? mb_strlen( fread( $fp, 9 ) ) : strlen( fread( $fp, 9 ) ); //reading the size of $Content - if ($fsContent > 0) { + if ($fsContent > 0) { $fileContent = fread( $fp, $fsContent ); //reading string $XmlContent - $newFileName = $pathPublic . $sFileName; - $bytesSaved = @file_put_contents( $newFileName, $fileContent ); - if ($bytesSaved != $fsContent) - throw (new Exception( 'Error writing Public file in directory : ' . $pathPublic )); - } - } - } - } - - fclose( $fp ); - - return true; - - } - - /** - * this function remove all Process except the PROCESS ROW - * - * @param string $sProUid - * @return boolean - */ - function removeProcessRows ($sProUid) - { - try { + $newFileName = $pathPublic . $sFileName; + $bytesSaved = @file_put_contents( $newFileName, $fileContent ); + if ($bytesSaved != $fsContent) { + throw (new Exception( 'Error writing Public file in directory : ' . $pathPublic )); + } + } + } + } + } + + fclose( $fp ); + + return true; + + } + + /** + * this function remove all Process except the PROCESS ROW + * + * @param string $sProUid + * @return boolean + */ + public function removeProcessRows ($sProUid) + { + try { //Instance all classes necesaries - $oProcess = new Process(); - $oDynaform = new Dynaform(); - $oInputDocument = new InputDocument(); - $oOutputDocument = new OutputDocument(); - $oTrigger = new Triggers(); - $oStepTrigger = new StepTrigger(); - $oRoute = new Route(); - $oStep = new Step(); - $oSubProcess = new SubProcess(); - $oCaseTracker = new CaseTracker(); - $oCaseTrackerObject = new CaseTrackerObject(); - $oObjectPermission = new ObjectPermission(); - $oSwimlaneElement = new SwimlanesElements(); - $oConnection = new DbSource(); - $oStage = new Stage(); - $oEvent = new Event(); - $oCaseScheduler = new CaseScheduler(); - + $oProcess = new Process(); + $oDynaform = new Dynaform(); + $oInputDocument = new InputDocument(); + $oOutputDocument = new OutputDocument(); + $oTrigger = new Triggers(); + $oStepTrigger = new StepTrigger(); + $oRoute = new Route(); + $oStep = new Step(); + $oSubProcess = new SubProcess(); + $oCaseTracker = new CaseTracker(); + $oCaseTrackerObject = new CaseTrackerObject(); + $oObjectPermission = new ObjectPermission(); + $oSwimlaneElement = new SwimlanesElements(); + $oConnection = new DbSource(); + $oStage = new Stage(); + $oEvent = new Event(); + $oCaseScheduler = new CaseScheduler(); + //Delete the tasks of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( TaskPeer::PRO_UID, $sProUid ); - $oDataset = TaskPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $oTask = new Task(); - while ($aRow = $oDataset->getRow()) { - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StepTriggerPeer::TAS_UID, $aRow['TAS_UID'] ); - StepTriggerPeer::doDelete( $oCriteria ); - if ($oTask->taskExists( $aRow['TAS_UID'] )) - $oTask->remove( $aRow['TAS_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( TaskPeer::PRO_UID, $sProUid ); + $oDataset = TaskPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $oTask = new Task(); + while ($aRow = $oDataset->getRow()) { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepTriggerPeer::TAS_UID, $aRow['TAS_UID'] ); + StepTriggerPeer::doDelete( $oCriteria ); + if ($oTask->taskExists( $aRow['TAS_UID'] )) { + $oTask->remove( $aRow['TAS_UID'] ); + } + $oDataset->next(); + } + //Delete the dynaforms of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); - $oDataset = DynaformPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $sWildcard = PATH_DYNAFORM . $aRow['PRO_UID'] . PATH_SEP . $aRow['DYN_UID'] . '_tmp*'; - foreach (glob( $sWildcard ) as $fn) { - @unlink( $fn ); - } - $sWildcard = PATH_DYNAFORM . $aRow['PRO_UID'] . PATH_SEP . $aRow['DYN_UID'] . '.*'; - foreach (glob( $sWildcard ) as $fn) { - @unlink( $fn ); - } - if ($oDynaform->dynaformExists( $aRow['DYN_UID'] )) - $oDynaform->remove( $aRow['DYN_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); + $oDataset = DynaformPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $sWildcard = PATH_DYNAFORM . $aRow['PRO_UID'] . PATH_SEP . $aRow['DYN_UID'] . '_tmp*'; + foreach (glob( $sWildcard ) as $fn) { + @unlink( $fn ); + } + $sWildcard = PATH_DYNAFORM . $aRow['PRO_UID'] . PATH_SEP . $aRow['DYN_UID'] . '.*'; + foreach (glob( $sWildcard ) as $fn) { + @unlink( $fn ); + } + if ($oDynaform->dynaformExists( $aRow['DYN_UID'] )) { + $oDynaform->remove( $aRow['DYN_UID'] ); + } + $oDataset->next(); + } + //Delete the input documents of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( InputDocumentPeer::PRO_UID, $sProUid ); - $oDataset = InputDocumentPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oInputDocument->InputExists( $aRow['INP_DOC_UID'] )) - $oInputDocument->remove( $aRow['INP_DOC_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( InputDocumentPeer::PRO_UID, $sProUid ); + $oDataset = InputDocumentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oInputDocument->InputExists( $aRow['INP_DOC_UID'] )) { + $oInputDocument->remove( $aRow['INP_DOC_UID'] ); + } + $oDataset->next(); + } + //Delete the output documents of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( OutputDocumentPeer::PRO_UID, $sProUid ); - $oDataset = OutputDocumentPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oOutputDocument->OutputExists( $aRow['OUT_DOC_UID'] )) - $oOutputDocument->remove( $aRow['OUT_DOC_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( OutputDocumentPeer::PRO_UID, $sProUid ); + $oDataset = OutputDocumentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oOutputDocument->OutputExists( $aRow['OUT_DOC_UID'] )) { + $oOutputDocument->remove( $aRow['OUT_DOC_UID'] ); + } + $oDataset->next(); + } + //Delete the steps - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StepPeer::PRO_UID, $sProUid ); - $oDataset = StepPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - //Delete the steptrigger of process - /*$oCriteria = new Criteria('workflow'); - $oCriteria->add(StepTriggerPeer::STEP_UID, $aRow['STEP_UID']); - $oDataseti = StepTriggerPeer::doSelectRS($oCriteria); - $oDataseti->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataseti->next(); - while ($aRowi = $oDataseti->getRow()) { - if ($oStepTrigger->stepTriggerExists($aRowi['STEP_UID'], $aRowi['TAS_UID'], $aRowi['TRI_UID'], $aRowi['ST_TYPE'])) - $oStepTrigger->remove($aRowi['STEP_UID'], $aRowi['TAS_UID'], $aRowi['TRI_UID'], $aRowi['ST_TYPE']); - $oDataseti->next(); - }*/ - $oStep->remove( $aRow['STEP_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepPeer::PRO_UID, $sProUid ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + //Delete the steptrigger of process + /*$oCriteria = new Criteria('workflow'); + $oCriteria->add(StepTriggerPeer::STEP_UID, $aRow['STEP_UID']); + $oDataseti = StepTriggerPeer::doSelectRS($oCriteria); + $oDataseti->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataseti->next(); + while ($aRowi = $oDataseti->getRow()) { + if ($oStepTrigger->stepTriggerExists($aRowi['STEP_UID'], $aRowi['TAS_UID'], $aRowi['TRI_UID'], $aRowi['ST_TYPE'])) + $oStepTrigger->remove($aRowi['STEP_UID'], $aRowi['TAS_UID'], $aRowi['TRI_UID'], $aRowi['ST_TYPE']); + $oDataseti->next(); + }*/ + $oStep->remove( $aRow['STEP_UID'] ); + $oDataset->next(); + } + //Delete the StepSupervisor - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StepSupervisorPeer::PRO_UID, $sProUid ); - $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oStep->StepExists( $aRow['STEP_UID'] )) - $oStep->remove( $aRow['STEP_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepSupervisorPeer::PRO_UID, $sProUid ); + $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oStep->StepExists( $aRow['STEP_UID'] )) { + $oStep->remove( $aRow['STEP_UID'] ); + } + $oDataset->next(); + } + //Delete the triggers of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( TriggersPeer::PRO_UID, $sProUid ); - $oDataset = TriggersPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oTrigger->TriggerExists( $aRow['TRI_UID'] )) - $oTrigger->remove( $aRow['TRI_UID'] ); - $oDataset->next(); - } - - //Delete the routes of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( RoutePeer::PRO_UID, $sProUid ); - $oDataset = RoutePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oRoute->routeExists( $aRow['ROU_UID'] )) - $oRoute->remove( $aRow['ROU_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( TriggersPeer::PRO_UID, $sProUid ); + $oDataset = TriggersPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oTrigger->TriggerExists( $aRow['TRI_UID'] )) { + $oTrigger->remove( $aRow['TRI_UID'] ); + } + $oDataset->next(); + } + //Delete the routes of process + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( RoutePeer::PRO_UID, $sProUid ); + $oDataset = RoutePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oRoute->routeExists( $aRow['ROU_UID'] )) { + $oRoute->remove( $aRow['ROU_UID'] ); + } + $oDataset->next(); + } //Delete the swimlanes elements of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( SwimlanesElementsPeer::PRO_UID, $sProUid ); - $oDataset = SwimlanesElementsPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oSwimlaneElement->swimlanesElementsExists( $aRow['SWI_UID'] )) - $oSwimlaneElement->remove( $aRow['SWI_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( SwimlanesElementsPeer::PRO_UID, $sProUid ); + $oDataset = SwimlanesElementsPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oSwimlaneElement->swimlanesElementsExists( $aRow['SWI_UID'] )) { + $oSwimlaneElement->remove( $aRow['SWI_UID'] ); + } + $oDataset->next(); + } + //Delete the DB connections of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( DbSourcePeer::PRO_UID, $sProUid ); - $oDataset = DbSourcePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oConnection->Exists( $aRow['DBS_UID'], $aRow['PRO_UID'] )) - $oConnection->remove( $aRow['DBS_UID'], $aRow['PRO_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( DbSourcePeer::PRO_UID, $sProUid ); + $oDataset = DbSourcePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oConnection->Exists( $aRow['DBS_UID'], $aRow['PRO_UID'] )) { + $oConnection->remove( $aRow['DBS_UID'], $aRow['PRO_UID'] ); + } + $oDataset->next(); + } + //Delete the sub process of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( SubProcessPeer::PRO_PARENT, $sProUid ); - $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oSubProcess->subProcessExists( $aRow['SP_UID'] )) - $oSubProcess->remove( $aRow['SP_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( SubProcessPeer::PRO_PARENT, $sProUid ); + $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oSubProcess->subProcessExists( $aRow['SP_UID'] )) { + $oSubProcess->remove( $aRow['SP_UID'] ); + } + $oDataset->next(); + } + //Delete the caseTracker of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( CaseTrackerPeer::PRO_UID, $sProUid ); - $oDataset = CaseTrackerPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oCaseTracker->caseTrackerExists( $aRow['PRO_UID'] )) - $oCaseTracker->remove( $aRow['PRO_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( CaseTrackerPeer::PRO_UID, $sProUid ); + $oDataset = CaseTrackerPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oCaseTracker->caseTrackerExists( $aRow['PRO_UID'] )) { + $oCaseTracker->remove( $aRow['PRO_UID'] ); + } + $oDataset->next(); + } + //Delete the caseTrackerObject of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( CaseTrackerObjectPeer::PRO_UID, $sProUid ); - $oDataset = CaseTrackerObjectPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oCaseTrackerObject->caseTrackerObjectExists( $aRow['CTO_UID'] )) { - $oCaseTrackerObject->remove( $aRow['CTO_UID'] ); - } - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( CaseTrackerObjectPeer::PRO_UID, $sProUid ); + $oDataset = CaseTrackerObjectPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oCaseTrackerObject->caseTrackerObjectExists( $aRow['CTO_UID'] )) { + $oCaseTrackerObject->remove( $aRow['CTO_UID'] ); + } + $oDataset->next(); + } + //Delete the ObjectPermission of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ObjectPermissionPeer::PRO_UID, $sProUid ); - $oDataset = ObjectPermissionPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oObjectPermission->Exists( $aRow['OP_UID'] )) { - $oObjectPermission->remove( $aRow['OP_UID'] ); - } - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ObjectPermissionPeer::PRO_UID, $sProUid ); + $oDataset = ObjectPermissionPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oObjectPermission->Exists( $aRow['OP_UID'] )) { + $oObjectPermission->remove( $aRow['OP_UID'] ); + } + $oDataset->next(); + } + //Delete the Stage of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( StagePeer::PRO_UID, $sProUid ); - $oDataset = StagePeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oStage->Exists( $aRow['STG_UID'] )) - $oStage->remove( $aRow['STG_UID'] ); - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StagePeer::PRO_UID, $sProUid ); + $oDataset = StagePeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oStage->Exists( $aRow['STG_UID'] )) { + $oStage->remove( $aRow['STG_UID'] ); + } + $oDataset->next(); + } + //Delete the Event of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( EventPeer::PRO_UID, $sProUid ); - $oDataset = EventPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oEvent->Exists( $aRow['EVN_UID'] )) - $oEvent->remove( $aRow['EVN_UID'] ); - $oDataset->next(); - if ($oEvent->existsByTaskUidFrom( $aRow['TAS_UID'] )) { - $aRowEvent = $oEvent->getRowByTaskUidFrom( $aRow['TAS_UID'] ); - $oEvent->remove( $aRowEvent['EVN_UID'] ); - } - $oDataset->next(); - } - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( EventPeer::PRO_UID, $sProUid ); + $oDataset = EventPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oEvent->Exists( $aRow['EVN_UID'] )) { + $oEvent->remove( $aRow['EVN_UID'] ); + } + $oDataset->next(); + if ($oEvent->existsByTaskUidFrom( $aRow['TAS_UID'] )) { + $aRowEvent = $oEvent->getRowByTaskUidFrom( $aRow['TAS_UID'] ); + $oEvent->remove( $aRowEvent['EVN_UID'] ); + } + $oDataset->next(); + } + //Delete the CaseScheduler of process - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( CaseSchedulerPeer::PRO_UID, $sProUid ); - $oDataset = CaseSchedulerPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($oCaseScheduler->Exists( $aRow['SCH_UID'] )) - $oCaseScheduler->remove( $aRow['SCH_UID'] ); - $oDataset->next(); - } - - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /** - * this function creates a new Process, defined in the object $oData - * - * @param string $sProUid - * @return boolean - */ - function createProcessFromData ($oData, $pmFilename) - { - $this->removeProcessRows( $oData->process['PRO_UID'] ); - + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( CaseSchedulerPeer::PRO_UID, $sProUid ); + $oDataset = CaseSchedulerPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($oCaseScheduler->Exists( $aRow['SCH_UID'] )) { + $oCaseScheduler->remove( $aRow['SCH_UID'] ); + } + $oDataset->next(); + } + + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * this function creates a new Process, defined in the object $oData + * + * @param string $sProUid + * @return boolean + */ + public function createProcessFromData ($oData, $pmFilename) + { + $this->removeProcessRows( $oData->process['PRO_UID'] ); + // (*) Creating process dependencies // creating the process category - $this->createProcessCategoryRow( isset( $oData->processCategory ) ? $oData->processCategory : null ); - + $this->createProcessCategoryRow( isset( $oData->processCategory ) ? $oData->processCategory : null ); + // create the process - $this->createProcessRow( $oData->process ); - - $this->createTaskRows( $oData->tasks ); + $this->createProcessRow( $oData->process ); + $this->createTaskRows( $oData->tasks ); //it was commented becuase it seems to be working fine //$this->createEventRows(isset($oData->event) ? $oData->event : array()); - - - $aRoutesUID = $this->createRouteRows( $oData->routes ); - $this->createLaneRows( $oData->lanes ); - + + $aRoutesUID = $this->createRouteRows( $oData->routes ); + $this->createLaneRows( $oData->lanes ); + /*if(!isset($oData->gateways)){ //Adding gateway information while importing processes from older version //Making compatible with old export process @@ -3481,447 +3493,435 @@ class Processes } } } - else*/ - - if (isset( $oData->gateways )) - $this->createGatewayRows( $oData->gateways ); - - $this->createDynaformRows( $oData->dynaforms ); - $this->createInputRows( $oData->inputs ); - $this->createOutputRows( $oData->outputs ); - $this->createStepRows( $oData->steps ); - $this->createStepSupervisorRows( isset( $oData->stepSupervisor ) ? $oData->stepSupervisor : array () ); - $this->createTriggerRows( $oData->triggers ); - $this->createStepTriggerRows( $oData->steptriggers ); - $this->createTaskUserRows( $oData->taskusers ); - $this->createGroupRow( $oData->groupwfs ); - $this->createDBConnectionsRows( isset( $oData->dbconnections ) ? $oData->dbconnections : array () ); - $this->createReportTables( isset( $oData->reportTables ) ? $oData->reportTables : array (), isset( $oData->reportTablesVars ) ? $oData->reportTablesVars : array () ); - $this->createSubProcessRows( isset( $oData->subProcess ) ? $oData->subProcess : array () ); - $this->createCaseTrackerRows( isset( $oData->caseTracker ) ? $oData->caseTracker : array () ); - $this->createCaseTrackerObjectRows( isset( $oData->caseTrackerObject ) ? $oData->caseTrackerObject : array () ); - $this->createObjectPermissionsRows( isset( $oData->objectPermissions ) ? $oData->objectPermissions : array () ); - $this->createStageRows( isset( $oData->stage ) ? $oData->stage : array () ); - - $this->createFieldCondition( isset( $oData->fieldCondition ) ? $oData->fieldCondition : array (), $oData->dynaforms ); - + else*/ + + if (isset( $oData->gateways )) { + $this->createGatewayRows( $oData->gateways ); + } + $this->createDynaformRows( $oData->dynaforms ); + $this->createInputRows( $oData->inputs ); + $this->createOutputRows( $oData->outputs ); + $this->createStepRows( $oData->steps ); + $this->createStepSupervisorRows( isset( $oData->stepSupervisor ) ? $oData->stepSupervisor : array () ); + $this->createTriggerRows( $oData->triggers ); + $this->createStepTriggerRows( $oData->steptriggers ); + $this->createTaskUserRows( $oData->taskusers ); + $this->createGroupRow( $oData->groupwfs ); + $this->createDBConnectionsRows( isset( $oData->dbconnections ) ? $oData->dbconnections : array () ); + $this->createReportTables( isset( $oData->reportTables ) ? $oData->reportTables : array (), isset( $oData->reportTablesVars ) ? $oData->reportTablesVars : array () ); + $this->createSubProcessRows( isset( $oData->subProcess ) ? $oData->subProcess : array () ); + $this->createCaseTrackerRows( isset( $oData->caseTracker ) ? $oData->caseTracker : array () ); + $this->createCaseTrackerObjectRows( isset( $oData->caseTrackerObject ) ? $oData->caseTrackerObject : array () ); + $this->createObjectPermissionsRows( isset( $oData->objectPermissions ) ? $oData->objectPermissions : array () ); + $this->createStageRows( isset( $oData->stage ) ? $oData->stage : array () ); + + $this->createFieldCondition( isset( $oData->fieldCondition ) ? $oData->fieldCondition : array (), $oData->dynaforms ); + // Create before to createRouteRows for avoid duplicates - $this->createEventRows( isset( $oData->event ) ? $oData->event : array () ); - - $this->createCaseSchedulerRows( isset( $oData->caseScheduler ) ? $oData->caseScheduler : array () ); - + $this->createEventRows( isset( $oData->event ) ? $oData->event : array () ); + + $this->createCaseSchedulerRows( isset( $oData->caseScheduler ) ? $oData->caseScheduler : array () ); + // and finally create the files, dynaforms (xml and html), emailTemplates and Public files - $this->createFiles( $oData, $pmFilename ); - } - - /** - * this function creates a new Process, defined in the object $oData - * - * @param string $sProUid - * @return boolean - */ - function updateProcessFromData ($oData, $pmFilename) - { - $this->updateProcessRow( $oData->process ); - $this->removeProcessRows( $oData->process['PRO_UID'] ); - $this->createTaskRows( $oData->tasks ); - $this->createRouteRows( $oData->routes ); - $this->createLaneRows( $oData->lanes ); - $this->createDynaformRows( $oData->dynaforms ); - $this->createInputRows( $oData->inputs ); - $this->createOutputRows( $oData->outputs ); - $this->createStepRows( $oData->steps ); - $this->createStepSupervisorRows( $oData->stepSupervisor ); - $this->createTriggerRows( $oData->triggers ); - $this->createStepTriggerRows( $oData->steptriggers ); - $this->createTaskUserRows( $oData->taskusers ); - $this->createGroupRow( $oData->groupwfs ); - $this->createDBConnectionsRows( $oData->dbconnections ); - $this->updateReportTables( $oData->reportTables, $oData->reportTablesVars ); - $this->createFiles( $oData, $pmFilename ); - $this->createSubProcessRows( $oData->subProcess ); - $this->createCaseTrackerRows( $oData->caseTracker ); - $this->createCaseTrackerObjectRows( $oData->caseTrackerObject ); - $this->createObjectPermissionsRows( $oData->objectPermissions ); - $this->createStageRows( $oData->stage ); - $this->createFieldCondition( $oData->fieldCondition, $oData->dynaforms ); - $this->createEventRows( $oData->event ); - $this->createCaseSchedulerRows( $oData->caseScheduler ); - $this->createProcessCategoryRow( isset( $oData->processCategory ) ? $oData->processCategory : null ); - - } - - /** - * get the starting task for a user but from a Tasks object - * - * @param $sProUid process uid - * @param $sUserUid user uid - * @return an array of tasks - */ - function getStartingTaskForUser ($sProUid, $sUsrUid) - { - $oTask = new Tasks(); - - return $oTask->getStartingTaskForUser( $sProUid, $sUsrUid ); - } - - /** - * *********************************************** - * functions to enable open ProcessMaker Library - * *********************************************** - */ - /** - * Open a WebService connection - * - * @param $user username for pm - * @param $pass password for the user - * @return 1 integer. - */ - function ws_open ($user, $pass) - { - global $sessionId; - global $client; - $endpoint = PML_WSDL_URL; - $sessionId = ''; - $proxy = array (); - $sysConf = System::getSystemConfiguration(); - if ($sysConf['proxy_host'] != '') { - $proxy['proxy_host'] = $sysConf['proxy_host']; - if ($sysConf['proxy_port'] != '') { - $proxy['proxy_port'] = $sysConf['proxy_port']; - } - if ($sysConf['proxy_user'] != '') { - $proxy['proxy_login'] = $sysConf['proxy_user']; - } - if ($sysConf['proxy_pass'] != '') { - $proxy['proxy_password'] = $sysConf['proxy_pass']; - } - } - $client = new SoapClient( $endpoint, $proxy ); - - $params = array ('userid' => $user,'password' => $pass - ); - $result = $client->__SoapCall( 'login', array ($params - ) ); - if ($result->status_code == 0) { - $sessionId = $result->message; - return 1; - } - throw (new Exception( $result->message )); - return 1; - } - - /** - * Open a WebService public connection - * - * @param $user username for pm - * @param $pass password for the user - * @return 1 integer. - */ - function ws_open_public () - { - - global $sessionId; - global $client; - $endpoint = PML_WSDL_URL; - $sessionId = ''; + $this->createFiles( $oData, $pmFilename ); + } + + /** + * this function creates a new Process, defined in the object $oData + * + * @param string $sProUid + * @return boolean + */ + public function updateProcessFromData ($oData, $pmFilename) + { + $this->updateProcessRow( $oData->process ); + $this->removeProcessRows( $oData->process['PRO_UID'] ); + $this->createTaskRows( $oData->tasks ); + $this->createRouteRows( $oData->routes ); + $this->createLaneRows( $oData->lanes ); + $this->createDynaformRows( $oData->dynaforms ); + $this->createInputRows( $oData->inputs ); + $this->createOutputRows( $oData->outputs ); + $this->createStepRows( $oData->steps ); + $this->createStepSupervisorRows( $oData->stepSupervisor ); + $this->createTriggerRows( $oData->triggers ); + $this->createStepTriggerRows( $oData->steptriggers ); + $this->createTaskUserRows( $oData->taskusers ); + $this->createGroupRow( $oData->groupwfs ); + $this->createDBConnectionsRows( $oData->dbconnections ); + $this->updateReportTables( $oData->reportTables, $oData->reportTablesVars ); + $this->createFiles( $oData, $pmFilename ); + $this->createSubProcessRows( $oData->subProcess ); + $this->createCaseTrackerRows( $oData->caseTracker ); + $this->createCaseTrackerObjectRows( $oData->caseTrackerObject ); + $this->createObjectPermissionsRows( $oData->objectPermissions ); + $this->createStageRows( $oData->stage ); + $this->createFieldCondition( $oData->fieldCondition, $oData->dynaforms ); + $this->createEventRows( $oData->event ); + $this->createCaseSchedulerRows( $oData->caseScheduler ); + $this->createProcessCategoryRow( isset( $oData->processCategory ) ? $oData->processCategory : null ); + } + + /** + * get the starting task for a user but from a Tasks object + * + * @param $sProUid process uid + * @param $sUserUid user uid + * @return an array of tasks + */ + public function getStartingTaskForUser ($sProUid, $sUsrUid) + { + $oTask = new Tasks(); + return $oTask->getStartingTaskForUser( $sProUid, $sUsrUid ); + } + + /** + * *********************************************** + * functions to enable open ProcessMaker Library + * *********************************************** + */ + /** + * Open a WebService connection + * + * @param $user username for pm + * @param $pass password for the user + * @return 1 integer. + */ + public function ws_open ($user, $pass) + { + global $sessionId; + global $client; + $endpoint = PML_WSDL_URL; + $sessionId = ''; + $proxy = array (); + $sysConf = System::getSystemConfiguration(); + if ($sysConf['proxy_host'] != '') { + $proxy['proxy_host'] = $sysConf['proxy_host']; + if ($sysConf['proxy_port'] != '') { + $proxy['proxy_port'] = $sysConf['proxy_port']; + } + if ($sysConf['proxy_user'] != '') { + $proxy['proxy_login'] = $sysConf['proxy_user']; + } + if ($sysConf['proxy_pass'] != '') { + $proxy['proxy_password'] = $sysConf['proxy_pass']; + } + } + $client = new SoapClient( $endpoint, $proxy ); + $params = array ('userid' => $user,'password' => $pass); + $result = $client->__SoapCall( 'login', array ($params) ); + if ($result->status_code == 0) { + $sessionId = $result->message; + return 1; + } + throw (new Exception( $result->message )); + return 1; + } + + /** + * Open a WebService public connection + * + * @param $user username for pm + * @param $pass password for the user + * @return 1 integer. + */ + public function ws_open_public () + { + global $sessionId; + global $client; + $endpoint = PML_WSDL_URL; + $sessionId = ''; ini_set( "soap.wsdl_cache_enabled", "0" ); // enabling WSDL cache - try { - $proxy = array (); - $sysConf = System::getSystemConfiguration(); - if ($sysConf['proxy_host'] != '') { - $proxy['proxy_host'] = $sysConf['proxy_host']; - if ($sysConf['proxy_port'] != '') { - $proxy['proxy_port'] = $sysConf['proxy_port']; - } - if ($sysConf['proxy_user'] != '') { - $proxy['proxy_login'] = $sysConf['proxy_user']; - } - if ($sysConf['proxy_pass'] != '') { - $proxy['proxy_password'] = $sysConf['proxy_pass']; - } - } - $client = @new SoapClient( $endpoint, $proxy ); - } catch (Exception $e) { - throw (new Exception( $e->getMessage() )); - } - - return 1; - } - - /** - * Consume the processList WebService - * - * @return $result process list. - */ - function ws_processList () - { - global $sessionId; - global $client; - - $endpoint = PML_WSDL_URL; - $proxy = array (); - $sysConf = System::getSystemConfiguration(); - if ($sysConf['proxy_host'] != '') { - $proxy['proxy_host'] = $sysConf['proxy_host']; - if ($sysConf['proxy_port'] != '') { - $proxy['proxy_port'] = $sysConf['proxy_port']; - } - if ($sysConf['proxy_user'] != '') { - $proxy['proxy_login'] = $sysConf['proxy_user']; - } - if ($sysConf['proxy_pass'] != '') { - $proxy['proxy_password'] = $sysConf['proxy_pass']; - } - } - $client = new SoapClient( $endpoint, $proxy ); - - $sessionId = ''; - $params = array ('sessionId' => $sessionId - ); - $result = $client->__SoapCall( 'processList', array ($params - ) ); - if ($result->status_code == 0) { - return $result; - } - throw (new Exception( $result->message )); - } - - /** - * download a File - * - * @param $file file to download - * @param $local_path path of the file - * @param $newfilename - * @return $errorMsg process list. - */ - function downloadFile ($file, $local_path, $newfilename) - { - $err_msg = ''; - $out = fopen( $local_path . $newfilename, 'wb' ); - if ($out == FALSE) { - throw (new Exception( "File $newfilename not opened" )); - } - - if (! function_exists( 'curl_init' )) { - G::SendTemporalMessage( 'ID_CURLFUN_ISUNDEFINED', "warning", 'LABEL', '', '100%', '' ); - G::header( 'location: ../processes/processes_Library' ); - die(); - } - $ch = curl_init(); - - curl_setopt( $ch, CURLOPT_FILE, $out ); - curl_setopt( $ch, CURLOPT_HEADER, 0 ); - curl_setopt( $ch, CURLOPT_URL, $file ); - - curl_exec( $ch ); - $errorMsg = curl_error( $ch ); - fclose( $out ); - - curl_close( $ch ); - return $errorMsg; - + try { + $proxy = array (); + $sysConf = System::getSystemConfiguration(); + if ($sysConf['proxy_host'] != '') { + $proxy['proxy_host'] = $sysConf['proxy_host']; + if ($sysConf['proxy_port'] != '') { + $proxy['proxy_port'] = $sysConf['proxy_port']; + } + if ($sysConf['proxy_user'] != '') { + $proxy['proxy_login'] = $sysConf['proxy_user']; + } + if ($sysConf['proxy_pass'] != '') { + $proxy['proxy_password'] = $sysConf['proxy_pass']; + } + } + $client = @new SoapClient( $endpoint, $proxy ); + } catch (Exception $e) { + throw (new Exception( $e->getMessage() )); + } + return 1; + } + + /** + * Consume the processList WebService + * + * @return $result process list. + */ + public function ws_processList () + { + global $sessionId; + global $client; + + $endpoint = PML_WSDL_URL; + $proxy = array (); + $sysConf = System::getSystemConfiguration(); + + if ($sysConf['proxy_host'] != '') { + $proxy['proxy_host'] = $sysConf['proxy_host']; + if ($sysConf['proxy_port'] != '') { + $proxy['proxy_port'] = $sysConf['proxy_port']; + } + if ($sysConf['proxy_user'] != '') { + $proxy['proxy_login'] = $sysConf['proxy_user']; + } + if ($sysConf['proxy_pass'] != '') { + $proxy['proxy_password'] = $sysConf['proxy_pass']; + } + } + + $client = new SoapClient( $endpoint, $proxy ); + $sessionId = ''; + $params = array ('sessionId' => $sessionId); + $result = $client->__SoapCall( 'processList', array ($params) ); + if ($result->status_code == 0) { + return $result; + } + throw (new Exception( $result->message )); + } + + /** + * download a File + * + * @param $file file to download + * @param $local_path path of the file + * @param $newfilename + * @return $errorMsg process list. + */ + public function downloadFile ($file, $local_path, $newfilename) + { + $err_msg = ''; + $out = fopen( $local_path . $newfilename, 'wb' ); + if ($out == false) { + throw (new Exception( "File $newfilename not opened" )); + } + + if (! function_exists( 'curl_init' )) { + G::SendTemporalMessage( 'ID_CURLFUN_ISUNDEFINED', "warning", 'LABEL', '', '100%', '' ); + G::header( 'location: ../processes/processes_Library' ); + die(); + } + $ch = curl_init(); + + curl_setopt( $ch, CURLOPT_FILE, $out ); + curl_setopt( $ch, CURLOPT_HEADER, 0 ); + curl_setopt( $ch, CURLOPT_URL, $file ); + + curl_exec( $ch ); + $errorMsg = curl_error( $ch ); + fclose( $out ); + + curl_close( $ch ); + return $errorMsg; + } //end function - - - /** - * get the process Data from a process - * - * @param $proId process Uid - * @return $result - */ - function ws_processGetData ($proId) - { - global $sessionId; - global $client; - - $endpoint = PML_WSDL_URL; - $proxy = array (); - $sysConf = System::getSystemConfiguration(); - if ($sysConf['proxy_host'] != '') { - $proxy['proxy_host'] = $sysConf['proxy_host']; - if ($sysConf['proxy_port'] != '') { - $proxy['proxy_port'] = $sysConf['proxy_port']; - } - if ($sysConf['proxy_user'] != '') { - $proxy['proxy_login'] = $sysConf['proxy_user']; - } - if ($sysConf['proxy_pass'] != '') { - $proxy['proxy_password'] = $sysConf['proxy_pass']; - } - } - $client = new SoapClient( $endpoint, $proxy ); - - $sessionId = ''; - $params = array ('sessionId' => $sessionId,'processId' => $proId - ); - $result = $client->__SoapCall( 'processGetData', array ($params - ) ); - if ($result->status_code == 0) { - return $result; - } - throw (new Exception( $result->message )); - } - - /** - * parse an array of Items - * - * @param $proId process Uid - * @return $result - */ - function parseItemArray ($array) - { - if (! isset( $array->item ) && ! is_array( $array )) { - return null; - } - - $result = array (); - if (isset( $array->item )) { - foreach ($array->item as $key => $value) { - $result[$value->key] = $value->value; - } - } else { - foreach ($array as $key => $value) { - $result[$value->key] = $value->value; - } - } - return $result; - } - - public function getProcessFiles ($proUid, $type) - { - $filesList = array (); - - switch ($type) { - case "mail": - case "email": - $basePath = PATH_DATA_MAILTEMPLATES; - break; - case "public": - $basePath = PATH_DATA_PUBLIC; - break; - default: - throw new Exception( "Unknow Process Files Type \"$type\"." ); - break; - } - - $dir = $basePath . $proUid . PATH_SEP; - + + + /** + * get the process Data from a process + * + * @param $proId process Uid + * @return $result + */ + public function ws_processGetData ($proId) + { + global $sessionId; + global $client; + + $endpoint = PML_WSDL_URL; + $proxy = array (); + $sysConf = System::getSystemConfiguration(); + if ($sysConf['proxy_host'] != '') { + $proxy['proxy_host'] = $sysConf['proxy_host']; + if ($sysConf['proxy_port'] != '') { + $proxy['proxy_port'] = $sysConf['proxy_port']; + } + if ($sysConf['proxy_user'] != '') { + $proxy['proxy_login'] = $sysConf['proxy_user']; + } + if ($sysConf['proxy_pass'] != '') { + $proxy['proxy_password'] = $sysConf['proxy_pass']; + } + } + $client = new SoapClient( $endpoint, $proxy ); + + $sessionId = ''; + $params = array ('sessionId' => $sessionId,'processId' => $proId); + $result = $client->__SoapCall( 'processGetData', array ($params) ); + if ($result->status_code == 0) { + return $result; + } + throw (new Exception( $result->message )); + } + + /** + * parse an array of Items + * + * @param $proId process Uid + * @return $result + */ + public function parseItemArray ($array) + { + if (! isset( $array->item ) && ! is_array( $array )) { + return null; + } + + $result = array (); + if (isset( $array->item )) { + foreach ($array->item as $key => $value) { + $result[$value->key] = $value->value; + } + } else { + foreach ($array as $key => $value) { + $result[$value->key] = $value->value; + } + } + return $result; + } + + public function getProcessFiles ($proUid, $type) + { + $filesList = array (); + + switch ($type) { + case "mail": + case "email": + $basePath = PATH_DATA_MAILTEMPLATES; + break; + case "public": + $basePath = PATH_DATA_PUBLIC; + break; + default: + throw new Exception( "Unknow Process Files Type \"$type\"." ); + break; + } + + $dir = $basePath . $proUid . PATH_SEP; + G::verifyPath( $dir, true ); //Create if it does not exist - - + //Creating the default template (if not exists) - if (! file_exists( $dir . "alert_message.html" )) { - @copy( PATH_TPL . "mails" . PATH_SEP . "alert_message.html", $dir . "alert_message.html" ); - } - - if (! file_exists( $dir . "unassignedMessage.html" )) { - @copy( PATH_TPL . "mails" . PATH_SEP . "unassignedMessage.html", $dir . "unassignedMessage.html" ); - } - - $files = glob( $dir . "*.*" ); - - foreach ($files as $file) { - $fileName = basename( $file ); - - if ($fileName != "alert_message.html" && $fileName != "unassignedMessage.html") { - $filesList[] = array ("filepath" => $file,"filename" => $fileName - ); - } - } - - return $filesList; - } - + if (! file_exists( $dir . "alert_message.html" )) { + @copy( PATH_TPL . "mails" . PATH_SEP . "alert_message.html", $dir . "alert_message.html" ); + } + + if (! file_exists( $dir . "unassignedMessage.html" )) { + @copy( PATH_TPL . "mails" . PATH_SEP . "unassignedMessage.html", $dir . "unassignedMessage.html" ); + } + + $files = glob( $dir . "*.*" ); + + foreach ($files as $file) { + $fileName = basename( $file ); + + if ($fileName != "alert_message.html" && $fileName != "unassignedMessage.html") { + $filesList[] = array ("filepath" => $file,"filename" => $fileName); + } + } + return $filesList; + } + } //end class processes - - -/** - * Object Document class - * - * @package workflow.engine.ProcessMaker - */ -class ObjectDocument -{ - public $type; - public $name; - public $data; - public $origin; - - /** - * Constructor - */ - function __construct () - { - $this->type = ''; - $this->name = ''; - $this->data = ''; - $this->origin = ''; - } -} - -/** - * ObjectDocument Collection - * - * @package workflow.engine.ProcessMaker - */ -class ObjectCellection -{ - public $num; - public $swapc; - public $objects; - - /** - * Constructor - */ - function __construct () - { - $this->objects = Array (); - $this->num = 0; - $this->swapc = $this->num; - array_push( $this->objects, 'void' ); - } - - /** - * add in the collecetion a new object Document - * - * @param $name name object document - * @param $type type object document - * @param $data data object document - * @param $origin origin object document - * @return void - */ - function add ($name, $type, $data, $origin) - { - $o = new ObjectDocument(); - $o->name = $name; - $o->type = $type; - $o->data = $data; - $o->origin = $origin; - - $this->num ++; - array_push( $this->objects, $o ); - $this->swapc = $this->num; - } - - /** - * get the collection of ObjectDocument - * - * @param $name name object document - * @param $type type object document - * @param $data data object document - * @param $origin origin object document - * @return void - */ - function get () - { - if ($this->swapc > 0) { - $e = $this->objects[$this->swapc]; - $this->swapc --; - return $e; - } else { - $this->swapc = $this->num; - return false; - } - } -} + + +/** + * Object Document class + * + * @package workflow.engine.ProcessMaker + */ +class ObjectDocument +{ + public $type; + public $name; + public $data; + public $origin; + + /** + * Constructor + */ + public function __construct () + { + $this->type = ''; + $this->name = ''; + $this->data = ''; + $this->origin = ''; + } +} + +/** + * ObjectDocument Collection + * + * @package workflow.engine.ProcessMaker + */ +class ObjectCellection +{ + public $num; + public $swapc; + public $objects; + + /** + * Constructor + */ + public function __construct () + { + $this->objects = Array (); + $this->num = 0; + $this->swapc = $this->num; + array_push( $this->objects, 'void' ); + } + + /** + * add in the collecetion a new object Document + * + * @param $name name object document + * @param $type type object document + * @param $data data object document + * @param $origin origin object document + * @return void + */ + public function add ($name, $type, $data, $origin) + { + $o = new ObjectDocument(); + $o->name = $name; + $o->type = $type; + $o->data = $data; + $o->origin = $origin; + + $this->num ++; + array_push( $this->objects, $o ); + $this->swapc = $this->num; + } + + /** + * get the collection of ObjectDocument + * + * @param $name name object document + * @param $type type object document + * @param $data data object document + * @param $origin origin object document + * @return void + */ + public function get () + { + if ($this->swapc > 0) { + $e = $this->objects[$this->swapc]; + $this->swapc --; + return $e; + } else { + $this->swapc = $this->num; + return false; + } + } +} + diff --git a/workflow/engine/classes/model/CalendarDefinition.php b/workflow/engine/classes/model/CalendarDefinition.php index 076393d07..a64308a18 100755 --- a/workflow/engine/classes/model/CalendarDefinition.php +++ b/workflow/engine/classes/model/CalendarDefinition.php @@ -1,467 +1,455 @@ -clearSelectColumns (); - - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UID ); - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_NAME ); - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE ); - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_STATUS ); - // $Criteria->addAsColumn('DELETABLE', "IF (CALENDAR_UID <> '00000000000000000000000000000001', '".G::LoadTranslation('ID_DELETE')."','') "); - $Criteria->addAsColumn('DELETABLE', "CASE WHEN CALENDAR_UID <> '00000000000000000000000000000001' THEN '".G::LoadTranslation('ID_DELETE')."' ELSE '' END "); - // Note: This list doesn't show deleted items (STATUS = DELETED) - if ($onlyActive) { // Show only active. Used on assignment lists - $Criteria->add ( calendarDefinitionPeer::CALENDAR_STATUS, "ACTIVE", CRITERIA::EQUAL ); - } else { // Show Active and Inactive calendars. USed in main list - $Criteria->add ( calendarDefinitionPeer::CALENDAR_STATUS, array ("ACTIVE", "INACTIVE" ), CRITERIA::IN ); - } - - $Criteria->add ( calendarDefinitionPeer::CALENDAR_UID, "xx", CRITERIA::NOT_EQUAL ); - - if (! $arrayMode) { - return $Criteria; - } else { - $oDataset = calendarDefinitionPeer::doSelectRS ( $Criteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $calendarA = array (0 => 'dummy' ); - $calendarCount = 0; - while ( is_array ( $aRow = $oDataset->getRow () ) ) { - $calendarCount ++; - $calendarA [$calendarCount] = $aRow; - $oDataset->next (); - } - $return ['criteria'] = $Criteria; - $return ['array'] = $calendarA; - return $return; - } - } - //Added by qennix - //Gets criteria for listing - function getCalendarCriterias($filter, $start, $limit){ - $Criteria = new Criteria ( 'workflow' ); - $Criteria->clearSelectColumns (); - $Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UID ); - if ($filter !=''){ - $Criteria->add( - $Criteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_NAME,'%'.$filter.'%',Criteria::LIKE)->addOr( - $Criteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_DESCRIPTION,'%'.$filter.'%',Criteria::LIKE))); - } - $Criteria->add(CalendarDefinitionPeer::CALENDAR_STATUS,'DELETED',Criteria::NOT_EQUAL); - - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UID ); - $oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_NAME ); - $oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); - $oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE ); - $oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); - $oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_STATUS ); - if ($filter !=''){ - $oCriteria->add( - $oCriteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_NAME,'%'.$filter.'%',Criteria::LIKE)->addOr( - $oCriteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_DESCRIPTION,'%'.$filter.'%',Criteria::LIKE))); - } - $oCriteria->add(CalendarDefinitionPeer::CALENDAR_STATUS,'DELETED',Criteria::NOT_EQUAL); - $oCriteria->setLimit($limit); - $oCriteria->setOffset($start); - - $criterias = array(); - $criterias['COUNTER'] = $Criteria; - $criterias['LIST'] = $oCriteria; - return $criterias; - } - function getCalendarInfo($CalendarUid) { - //if exists the row in the database propel will update it, otherwise will insert. - $tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); - - $defaultCalendar ['CALENDAR_UID'] = "00000000000000000000000000000001"; - $defaultCalendar ['CALENDAR_NAME'] = "Default"; - $defaultCalendar ['CALENDAR_CREATE_DATE'] = date ( "Y-m-d" ); - $defaultCalendar ['CALENDAR_UPDATE_DATE'] = date ( "Y-m-d" ); - $defaultCalendar ['CALENDAR_DESCRIPTION'] = "Default"; - $defaultCalendar ['CALENDAR_STATUS'] = "ACTIVE"; - $defaultCalendar ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; - $defaultCalendar ['CALENDAR_WORK_DAYS'] = explode ( "|", "1|2|3|4|5" ); - $defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_DAY'] = 7; - $defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_START'] = "09:00"; - $defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_END'] = "17:00"; - $defaultCalendar ['HOLIDAY'] = array (); - - if ((is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { - $fields ['CALENDAR_UID'] = $tr->getCalendarUid (); - $fields ['CALENDAR_NAME'] = $tr->getCalendarName (); - $fields ['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate (); - $fields ['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate (); - $fields ['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription (); - $fields ['CALENDAR_STATUS'] = $tr->getCalendarStatus (); - $fields ['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays (); - $fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", $tr->getCalendarWorkDays () ); - } else { - $fields=$defaultCalendar; - $this->saveCalendarInfo ( $fields ); - $fields ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; - $fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", "1|2|3|4|5" ); - $tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); - } - $CalendarBusinessHoursObj = new CalendarBusinessHours ( ); - $CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours ( $CalendarUid ); - $fields ['BUSINESS_DAY'] = $CalendarBusinessHours; - - $CalendarHolidaysObj = new CalendarHolidays ( ); - $CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays ( $CalendarUid ); - $fields ['HOLIDAY'] = $CalendarHolidays; - $fields=$this->validateCalendarInfo($fields, $defaultCalendar); //******************** - - return $fields; - - } - //for edit - function getCalendarInfoE($CalendarUid) { - //if exists the row in the database propel will update it, otherwise will insert. - $tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); - - $defaultCalendar ['CALENDAR_UID'] = "00000000000000000000000000000001"; - $defaultCalendar ['CALENDAR_NAME'] = "Default"; - $defaultCalendar ['CALENDAR_CREATE_DATE'] = date ( "Y-m-d" ); - $defaultCalendar ['CALENDAR_UPDATE_DATE'] = date ( "Y-m-d" ); - $defaultCalendar ['CALENDAR_DESCRIPTION'] = "Default"; - $defaultCalendar ['CALENDAR_STATUS'] = "ACTIVE"; - $defaultCalendar ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; - $defaultCalendar ['CALENDAR_WORK_DAYS'] = explode ( "|", "1|2|3|4|5" ); - $defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_DAY'] = 7; - $defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_START'] = "09:00"; - $defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_END'] = "17:00"; - $defaultCalendar ['HOLIDAY'] = array (); - - if ((is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { - $fields ['CALENDAR_UID'] = $tr->getCalendarUid (); - $fields ['CALENDAR_NAME'] = $tr->getCalendarName (); - $fields ['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate (); - $fields ['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate (); - $fields ['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription (); - $fields ['CALENDAR_STATUS'] = $tr->getCalendarStatus (); - $fields ['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays (); - $fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", $tr->getCalendarWorkDays () ); - } else { - $fields=$defaultCalendar; - $this->saveCalendarInfo ( $fields ); - $fields ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; - $fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", "1|2|3|4|5" ); - $tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); - } - $CalendarBusinessHoursObj = new CalendarBusinessHours ( ); - $CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours ( $CalendarUid ); - $fields ['BUSINESS_DAY'] = $CalendarBusinessHours; - - $CalendarHolidaysObj = new CalendarHolidays ( ); - $CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays ( $CalendarUid ); - $fields ['HOLIDAY'] = $CalendarHolidays; - // $fields=$this->validateCalendarInfo($fields, $defaultCalendar); //******************** - - return $fields; - - } - //end for edit - - function validateCalendarInfo($fields,$defaultCalendar){ - try { - //Validate if Working days are Correct - //Minimun 3 ? - $workingDays=explode ( "|", $fields['CALENDAR_WORK_DAYS'] ); - if(count($workingDays)<3){ - throw (new Exception ( "You must define at least 3 Working Days!" )); - } - //Validate that all Working Days have Bussines Hours - if(count($fields ['BUSINESS_DAY'])<1){ - throw (new Exception ( "You must define at least one Business Day for all days" )); - } - $workingDaysOK=array(); - foreach($workingDays as $key => $day){ - $workingDaysOK[$day]=false; - } - $sw_all=false; - foreach($fields ['BUSINESS_DAY'] as $keyB => $businessHours){ - if(($businessHours['CALENDAR_BUSINESS_DAY']==7)){ - $sw_all=true; - }elseif((in_array($businessHours['CALENDAR_BUSINESS_DAY'],$workingDays))){ - $workingDaysOK[$businessHours['CALENDAR_BUSINESS_DAY']]=true; - } - } - $sw_days=true; - - foreach($workingDaysOK as $day =>$sw_day){ - $sw_days=$sw_days && $sw_day; - } - if(!($sw_all || $sw_days)){ - throw (new Exception ( "Not all working days have their correspondent business day" )); - } - //Validate Holidays - - return $fields; - } catch (Exception $e) { - //print $e->getMessage(); - $this->addCalendarLog("!!!!!!! BAD CALENDAR DEFINITION. ".$e->getMessage()); - $defaultCalendar ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; - $defaultCalendar ['CALENDAR_WORK_DAYS_A'] = explode ( "|", "1|2|3|4|5" ); - return $defaultCalendar; - } - - - } - function saveCalendarInfo($aData) { - $CalendarUid = $aData ['CALENDAR_UID']; - $CalendarName = $aData ['CALENDAR_NAME']; - $CalendarDescription = $aData ['CALENDAR_DESCRIPTION']; - $CalendarStatus = isset ( $aData ['CALENDAR_STATUS'] ) ? $aData ['CALENDAR_STATUS'] : "INACTIVE"; - $defaultCalendars [] = '00000000000000000000000000000001'; - if (in_array ( $aData ['CALENDAR_UID'], $defaultCalendars )) { - $CalendarStatus = 'ACTIVE'; - $CalendarName = 'Default'; - } - $CalendarWorkDays = isset ( $aData ['CALENDAR_WORK_DAYS'] ) ? implode ( "|", $aData ['CALENDAR_WORK_DAYS'] ) : ""; - - //if exists the row in the database propel will update it, otherwise will insert. - $tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); - if (! (is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { - $tr = new CalendarDefinition ( ); - $tr->setCalendarCreateDate ( 'now' ); - } - $tr->setCalendarUid ( $CalendarUid ); - $tr->setCalendarName ( $CalendarName ); - - $tr->setCalendarUpdateDate ( 'now' ); - $tr->setCalendarDescription ( $CalendarDescription ); - $tr->setCalendarStatus ( $CalendarStatus ); - $tr->setCalendarWorkDays ( $CalendarWorkDays ); - - if ($tr->validate ()) { - // we save it, since we get no validation errors, or do whatever else you like. - $res = $tr->save (); - //Calendar Business Hours Save code. - //First Delete all current records - $CalendarBusinessHoursObj = new CalendarBusinessHours ( ); - $CalendarBusinessHoursObj->deleteAllCalendarBusinessHours ( $CalendarUid ); - //Save all the sent records - foreach ( $aData ['BUSINESS_DAY'] as $key => $objData ) { - $objData ['CALENDAR_UID'] = $CalendarUid; - $CalendarBusinessHoursObj->saveCalendarBusinessHours ( $objData ); - } - - //Holiday Save code. - //First Delete all current records - $CalendarHolidayObj = new CalendarHolidays ( ); - $CalendarHolidayObj->deleteAllCalendarHolidays ( $CalendarUid ); - //Save all the sent records - foreach ( $aData ['HOLIDAY'] as $key => $objData ) { - if (($objData ['CALENDAR_HOLIDAY_NAME'] != "") && ($objData ['CALENDAR_HOLIDAY_START'] != "") && ($objData ['CALENDAR_HOLIDAY_END'] != "")) { - $objData ['CALENDAR_UID'] = $CalendarUid; - $CalendarHolidayObj->saveCalendarHolidays ( $objData ); - } - } - } else { - // Something went wrong. We can now get the validationFailures and handle them. - $msg = ''; - $validationFailuresArray = $tr->getValidationFailures (); - foreach ( $validationFailuresArray as $objValidationFailure ) { - $msg .= $objValidationFailure->getMessage () . "
"; - } - //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); - } - //return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); - - - //to do: uniform coderror structures for all classes - - - //if ( $res['codError'] < 0 ) { - // G::SendMessageText ( $res['message'] , 'error' ); - //} - - - } - function deleteCalendar($CalendarUid) { - //if exists the row in the database propel will update it, otherwise will insert. - $tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); - - if (! (is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { - // - return false; - } - - $defaultCalendars [] = '00000000000000000000000000000001'; - if (in_array ( $tr->getCalendarUid(), $defaultCalendars )) { - return false; - } - - $tr->setCalendarStatus ( 'DELETED' ); - $tr->setCalendarUpdateDate ( 'now' ); - if ($tr->validate ()) { - // we save it, since we get no validation errors, or do whatever else you like. - $res = $tr->save (); - - } else { - // Something went wrong. We can now get the validationFailures and handle them. - $msg = ''; - $validationFailuresArray = $tr->getValidationFailures (); - foreach ( $validationFailuresArray as $objValidationFailure ) { - $msg .= $objValidationFailure->getMessage () . "
"; - } - G::SendMessage ( "ERROR", $msg ); - //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); - } - //return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); - - - //to do: uniform coderror structures for all classes - - - //if ( $res['codError'] < 0 ) { - // G::SendMessageText ( $res['message'] , 'error' ); - //} - - - } - function getCalendarFor($userUid, $proUid, $tasUid, $sw_validate=true) { - $Criteria = new Criteria ( 'workflow' ); - - //Default Calendar - $calendarUid = "00000000000000000000000000000001"; - $calendarOwner = "DEFAULT"; - - //Load User,Task and Process calendars (if exist) - $Criteria->addSelectColumn ( CalendarAssignmentsPeer::CALENDAR_UID ); - $Criteria->addSelectColumn ( CalendarAssignmentsPeer::OBJECT_UID ); - $Criteria->addSelectColumn ( CalendarAssignmentsPeer::OBJECT_TYPE ); - $Criteria->add ( CalendarAssignmentsPeer::OBJECT_UID, array($userUid, $proUid, $tasUid), CRITERIA::IN ); - $oDataset = CalendarAssignmentsPeer::doSelectRS ( $Criteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $calendarArray=array(); - while(is_array($aRow = $oDataset->getRow ())){ - if($aRow['OBJECT_UID']==$userUid){ - $calendarArray['USER']=$aRow ['CALENDAR_UID']; - } - if($aRow['OBJECT_UID']==$proUid){ - $calendarArray['PROCESS']=$aRow ['CALENDAR_UID']; - } - if($aRow['OBJECT_UID']==$tasUid){ - $calendarArray['TASK']=$aRow ['CALENDAR_UID']; - } - $oDataset->next (); - } - if(isset($calendarArray['USER'])){ - $calendarUid = $calendarArray['USER']; - $calendarOwner = "USER"; - }elseif (isset($calendarArray['PROCESS'])){ - $calendarUid = $calendarArray['PROCESS']; - $calendarOwner = "PROCESS"; - }elseif (isset($calendarArray['TASK'])){ - $calendarUid = $calendarArray['TASK']; - $calendarOwner = "TASK"; - } - - //print "

$calendarUid

"; - if($sw_validate){ - $calendarDefinition = $this->getCalendarInfo ( $calendarUid ); - }else{ - $calendarDefinition = $this->getCalendarInfoE ( $calendarUid ); - } - $calendarDefinition ['CALENDAR_APPLIED'] = $calendarOwner; - $this->addCalendarLog ( "--=== Calendar Applied: " . $calendarDefinition ['CALENDAR_NAME'] . " -> $calendarOwner" ); - return $calendarDefinition; - } - - function assignCalendarTo($objectUid, $calendarUid, $objectType) { - //if exists the row in the database propel will update it, otherwise will insert. - $tr = CalendarAssignmentsPeer::retrieveByPK ( $objectUid ); - if ($calendarUid != "") { - if (! (is_object ( $tr ) && get_class ( $tr ) == 'CalendarAssignments')) { - $tr = new CalendarAssignments ( ); - - } - $tr->setObjectUid ( $objectUid ); - $tr->setCalendarUid ( $calendarUid ); - $tr->setObjectType ( $objectType ); - - if ($tr->validate ()) { - // we save it, since we get no validation errors, or do whatever else you like. - $res = $tr->save (); - - } else { - // Something went wrong. We can now get the validationFailures and handle them. - $msg = ''; - $validationFailuresArray = $tr->getValidationFailures (); - foreach ( $validationFailuresArray as $objValidationFailure ) { - $msg .= $objValidationFailure->getMessage () . "
"; - } - //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); - } - } else { //Delete record - if ((is_object ( $tr ) && get_class ( $tr ) == 'CalendarAssignments')) { - $tr->delete (); - } - } - - } - //Added by Qennix - //Counts all users,task,process by calendar - function getAllCounterByCalendar($type){ - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(CalendarAssignmentsPeer::CALENDAR_UID); - $oCriteria->addSelectColumn('COUNT(*) AS CNT'); - $oCriteria->addGroupByColumn(CalendarAssignmentsPeer::CALENDAR_UID); - $oCriteria->add(CalendarAssignmentsPeer::OBJECT_TYPE,$type); - $oDataset = CalendarAssignmentsPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $aCounter = Array(); - while($oDataset->next()){ - $row = $oDataset->getRow(); - $aCounter[$row['CALENDAR_UID']] = $row['CNT']; - } - return $aCounter; - } - - function loadByCalendarName($calendarName) - { - $Criteria = new Criteria('workflow'); - $Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_UID); - $Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_NAME); - $Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_CREATE_DATE); - $Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_UPDATE_DATE); - $Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_DESCRIPTION); - $Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_STATUS); - $Criteria->add(calendarDefinitionPeer::CALENDAR_NAME, $calendarName, CRITERIA::EQUAL); - $oDataset = calendarDefinitionPeer::doSelectRS ($Criteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - return $oDataset->getRow(); - } -} // CalendarDefinition - - +clearSelectColumns(); + + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_NAME ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_STATUS ); + // $Criteria->addAsColumn('DELETABLE', "IF (CALENDAR_UID <> '00000000000000000000000000000001', '".G::LoadTranslation('ID_DELETE')."','') "); + $Criteria->addAsColumn( 'DELETABLE', "CASE WHEN CALENDAR_UID <> '00000000000000000000000000000001' THEN '" . G::LoadTranslation( 'ID_DELETE' ) . "' ELSE '' END " ); + // Note: This list doesn't show deleted items (STATUS = DELETED) + if ($onlyActive) { + // Show only active. Used on assignment lists + $Criteria->add( calendarDefinitionPeer::CALENDAR_STATUS, "ACTIVE", CRITERIA::EQUAL ); + } else { + // Show Active and Inactive calendars. USed in main list + $Criteria->add( calendarDefinitionPeer::CALENDAR_STATUS, array ("ACTIVE","INACTIVE"), CRITERIA::IN ); + } + + $Criteria->add( calendarDefinitionPeer::CALENDAR_UID, "xx", CRITERIA::NOT_EQUAL ); + + if (! $arrayMode) { + return $Criteria; + } else { + $oDataset = calendarDefinitionPeer::doSelectRS( $Criteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $calendarA = array (0 => 'dummy'); + $calendarCount = 0; + while (is_array( $aRow = $oDataset->getRow() )) { + $calendarCount ++; + $calendarA[$calendarCount] = $aRow; + $oDataset->next(); + } + $return['criteria'] = $Criteria; + $return['array'] = $calendarA; + return $return; + } + } + //Added by qennix + //Gets criteria for listing + public function getCalendarCriterias ($filter, $start, $limit) + { + $Criteria = new Criteria( 'workflow' ); + $Criteria->clearSelectColumns(); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID ); + if ($filter != '') { + $Criteria->add( $Criteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_NAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_DESCRIPTION, '%' . $filter . '%', Criteria::LIKE ) ) ); + } + $Criteria->add( CalendarDefinitionPeer::CALENDAR_STATUS, 'DELETED', Criteria::NOT_EQUAL ); + + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID ); + $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_NAME ); + $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); + $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE ); + $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); + $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_STATUS ); + if ($filter != '') { + $oCriteria->add( $oCriteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_NAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_DESCRIPTION, '%' . $filter . '%', Criteria::LIKE ) ) ); + } + $oCriteria->add( CalendarDefinitionPeer::CALENDAR_STATUS, 'DELETED', Criteria::NOT_EQUAL ); + $oCriteria->setLimit( $limit ); + $oCriteria->setOffset( $start ); + + $criterias = array (); + $criterias['COUNTER'] = $Criteria; + $criterias['LIST'] = $oCriteria; + return $criterias; + } + + public function getCalendarInfo ($CalendarUid) + { + //if exists the row in the database propel will update it, otherwise will insert. + $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid ); + + $defaultCalendar['CALENDAR_UID'] = "00000000000000000000000000000001"; + $defaultCalendar['CALENDAR_NAME'] = "Default"; + $defaultCalendar['CALENDAR_CREATE_DATE'] = date( "Y-m-d" ); + $defaultCalendar['CALENDAR_UPDATE_DATE'] = date( "Y-m-d" ); + $defaultCalendar['CALENDAR_DESCRIPTION'] = "Default"; + $defaultCalendar['CALENDAR_STATUS'] = "ACTIVE"; + $defaultCalendar['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; + $defaultCalendar['CALENDAR_WORK_DAYS'] = explode( "|", "1|2|3|4|5" ); + $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_DAY'] = 7; + $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_START'] = "09:00"; + $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_END'] = "17:00"; + $defaultCalendar['HOLIDAY'] = array (); + + if ((is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) { + $fields['CALENDAR_UID'] = $tr->getCalendarUid(); + $fields['CALENDAR_NAME'] = $tr->getCalendarName(); + $fields['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate(); + $fields['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate(); + $fields['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription(); + $fields['CALENDAR_STATUS'] = $tr->getCalendarStatus(); + $fields['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays(); + $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", $tr->getCalendarWorkDays() ); + } else { + $fields = $defaultCalendar; + $this->saveCalendarInfo( $fields ); + $fields['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; + $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", "1|2|3|4|5" ); + $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid ); + } + $CalendarBusinessHoursObj = new CalendarBusinessHours(); + $CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours( $CalendarUid ); + $fields['BUSINESS_DAY'] = $CalendarBusinessHours; + $CalendarHolidaysObj = new CalendarHolidays(); + $CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays( $CalendarUid ); + $fields['HOLIDAY'] = $CalendarHolidays; + $fields = $this->validateCalendarInfo( $fields, $defaultCalendar ); + //******************** + return $fields; + } + //for edit + public function getCalendarInfoE ($CalendarUid) + { + //if exists the row in the database propel will update it, otherwise will insert. + $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid ); + $defaultCalendar['CALENDAR_UID'] = "00000000000000000000000000000001"; + $defaultCalendar['CALENDAR_NAME'] = "Default"; + $defaultCalendar['CALENDAR_CREATE_DATE'] = date( "Y-m-d" ); + $defaultCalendar['CALENDAR_UPDATE_DATE'] = date( "Y-m-d" ); + $defaultCalendar['CALENDAR_DESCRIPTION'] = "Default"; + $defaultCalendar['CALENDAR_STATUS'] = "ACTIVE"; + $defaultCalendar['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; + $defaultCalendar['CALENDAR_WORK_DAYS'] = explode( "|", "1|2|3|4|5" ); + $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_DAY'] = 7; + $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_START'] = "09:00"; + $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_END'] = "17:00"; + $defaultCalendar['HOLIDAY'] = array (); + + if ((is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) { + $fields['CALENDAR_UID'] = $tr->getCalendarUid(); + $fields['CALENDAR_NAME'] = $tr->getCalendarName(); + $fields['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate(); + $fields['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate(); + $fields['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription(); + $fields['CALENDAR_STATUS'] = $tr->getCalendarStatus(); + $fields['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays(); + $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", $tr->getCalendarWorkDays() ); + } else { + $fields = $defaultCalendar; + $this->saveCalendarInfo( $fields ); + $fields['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; + $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", "1|2|3|4|5" ); + $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid ); + } + $CalendarBusinessHoursObj = new CalendarBusinessHours(); + $CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours( $CalendarUid ); + $fields['BUSINESS_DAY'] = $CalendarBusinessHours; + $CalendarHolidaysObj = new CalendarHolidays(); + $CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays( $CalendarUid ); + $fields['HOLIDAY'] = $CalendarHolidays; + // $fields=$this->validateCalendarInfo($fields, $defaultCalendar); //******************** + return $fields; + } + //end for edit + + public function validateCalendarInfo ($fields, $defaultCalendar) + { + try { + //Validate if Working days are Correct + //Minimun 3 ? + $workingDays = explode( "|", $fields['CALENDAR_WORK_DAYS'] ); + if (count( $workingDays ) < 3) { + throw (new Exception( "You must define at least 3 Working Days!" )); + } + //Validate that all Working Days have Bussines Hours + if (count( $fields['BUSINESS_DAY'] ) < 1) { + throw (new Exception( "You must define at least one Business Day for all days" )); + } + $workingDaysOK = array (); + foreach ($workingDays as $key => $day) { + $workingDaysOK[$day] = false; + } + $sw_all = false; + foreach ($fields['BUSINESS_DAY'] as $keyB => $businessHours) { + if (($businessHours['CALENDAR_BUSINESS_DAY'] == 7)) { + $sw_all = true; + } elseif ((in_array( $businessHours['CALENDAR_BUSINESS_DAY'], $workingDays ))) { + $workingDaysOK[$businessHours['CALENDAR_BUSINESS_DAY']] = true; + } + } + $sw_days = true; + + foreach ($workingDaysOK as $day => $sw_day) { + $sw_days = $sw_days && $sw_day; + } + if (! ($sw_all || $sw_days)) { + throw (new Exception( "Not all working days have their correspondent business day" )); + } + //Validate Holidays + return $fields; + } catch (Exception $e) { + //print $e->getMessage(); + $this->addCalendarLog( "!!!!!!! BAD CALENDAR DEFINITION. " . $e->getMessage() ); + $defaultCalendar['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; + $defaultCalendar['CALENDAR_WORK_DAYS_A'] = explode( "|", "1|2|3|4|5" ); + return $defaultCalendar; + } + + } + + public function saveCalendarInfo ($aData) + { + $CalendarUid = $aData['CALENDAR_UID']; + $CalendarName = $aData['CALENDAR_NAME']; + $CalendarDescription = $aData['CALENDAR_DESCRIPTION']; + $CalendarStatus = isset( $aData['CALENDAR_STATUS'] ) ? $aData['CALENDAR_STATUS'] : "INACTIVE"; + $defaultCalendars[] = '00000000000000000000000000000001'; + if (in_array( $aData['CALENDAR_UID'], $defaultCalendars )) { + $CalendarStatus = 'ACTIVE'; + $CalendarName = 'Default'; + } + $CalendarWorkDays = isset( $aData['CALENDAR_WORK_DAYS'] ) ? implode( "|", $aData['CALENDAR_WORK_DAYS'] ) : ""; + + //if exists the row in the database propel will update it, otherwise will insert. + $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid ); + if (! (is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) { + $tr = new CalendarDefinition(); + $tr->setCalendarCreateDate( 'now' ); + } + $tr->setCalendarUid( $CalendarUid ); + $tr->setCalendarName( $CalendarName ); + $tr->setCalendarUpdateDate( 'now' ); + $tr->setCalendarDescription( $CalendarDescription ); + $tr->setCalendarStatus( $CalendarStatus ); + $tr->setCalendarWorkDays( $CalendarWorkDays ); + + if ($tr->validate()) { + // we save it, since we get no validation errors, or do whatever else you like. + $res = $tr->save(); + //Calendar Business Hours Save code. + //First Delete all current records + $CalendarBusinessHoursObj = new CalendarBusinessHours(); + $CalendarBusinessHoursObj->deleteAllCalendarBusinessHours( $CalendarUid ); + //Save all the sent records + foreach ($aData['BUSINESS_DAY'] as $key => $objData) { + $objData['CALENDAR_UID'] = $CalendarUid; + $CalendarBusinessHoursObj->saveCalendarBusinessHours( $objData ); + } + //Holiday Save code. + //First Delete all current records + $CalendarHolidayObj = new CalendarHolidays(); + $CalendarHolidayObj->deleteAllCalendarHolidays( $CalendarUid ); + //Save all the sent records + foreach ($aData['HOLIDAY'] as $key => $objData) { + if (($objData['CALENDAR_HOLIDAY_NAME'] != "") && ($objData['CALENDAR_HOLIDAY_START'] != "") && ($objData['CALENDAR_HOLIDAY_END'] != "")) { + $objData['CALENDAR_UID'] = $CalendarUid; + $CalendarHolidayObj->saveCalendarHolidays( $objData ); + } + } + } else { + // Something went wrong. We can now get the validationFailures and handle them. + $msg = ''; + $validationFailuresArray = $tr->getValidationFailures(); + foreach ($validationFailuresArray as $objValidationFailure) { + $msg .= $objValidationFailure->getMessage() . "
"; + } + //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); + } + //return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); + //to do: uniform coderror structures for all classes + //if ( $res['codError'] < 0 ) { + // G::SendMessageText ( $res['message'] , 'error' ); + //} + } + + public function deleteCalendar ($CalendarUid) + { + //if exists the row in the database propel will update it, otherwise will insert. + $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid ); + + if (! (is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) { + // + return false; + } + + $defaultCalendars[] = '00000000000000000000000000000001'; + if (in_array( $tr->getCalendarUid(), $defaultCalendars )) { + return false; + } + + $tr->setCalendarStatus( 'DELETED' ); + $tr->setCalendarUpdateDate( 'now' ); + if ($tr->validate()) { + // we save it, since we get no validation errors, or do whatever else you like. + $res = $tr->save(); + } else { + // Something went wrong. We can now get the validationFailures and handle them. + $msg = ''; + $validationFailuresArray = $tr->getValidationFailures(); + foreach ($validationFailuresArray as $objValidationFailure) { + $msg .= $objValidationFailure->getMessage() . "
"; + } + G::SendMessage( "ERROR", $msg ); + //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); + } + //return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); + //to do: uniform coderror structures for all classes + //if ( $res['codError'] < 0 ) { + // G::SendMessageText ( $res['message'] , 'error' ); + //} + } + + public function getCalendarFor ($userUid, $proUid, $tasUid, $sw_validate = true) + { + $Criteria = new Criteria( 'workflow' ); + //Default Calendar + $calendarUid = "00000000000000000000000000000001"; + $calendarOwner = "DEFAULT"; + //Load User,Task and Process calendars (if exist) + $Criteria->addSelectColumn( CalendarAssignmentsPeer::CALENDAR_UID ); + $Criteria->addSelectColumn( CalendarAssignmentsPeer::OBJECT_UID ); + $Criteria->addSelectColumn( CalendarAssignmentsPeer::OBJECT_TYPE ); + $Criteria->add( CalendarAssignmentsPeer::OBJECT_UID, array ($userUid,$proUid,$tasUid), CRITERIA::IN ); + $oDataset = CalendarAssignmentsPeer::doSelectRS( $Criteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $calendarArray = array (); + while (is_array( $aRow = $oDataset->getRow() )) { + if ($aRow['OBJECT_UID'] == $userUid) { + $calendarArray['USER'] = $aRow['CALENDAR_UID']; + } + if ($aRow['OBJECT_UID'] == $proUid) { + $calendarArray['PROCESS'] = $aRow['CALENDAR_UID']; + } + if ($aRow['OBJECT_UID'] == $tasUid) { + $calendarArray['TASK'] = $aRow['CALENDAR_UID']; + } + $oDataset->next(); + } + + if (isset( $calendarArray['USER'] )) { + $calendarUid = $calendarArray['USER']; + $calendarOwner = "USER"; + } elseif (isset( $calendarArray['PROCESS'] )) { + $calendarUid = $calendarArray['PROCESS']; + $calendarOwner = "PROCESS"; + } elseif (isset( $calendarArray['TASK'] )) { + $calendarUid = $calendarArray['TASK']; + $calendarOwner = "TASK"; + } + + //print "

$calendarUid

"; + if ($sw_validate) { + $calendarDefinition = $this->getCalendarInfo( $calendarUid ); + } else { + $calendarDefinition = $this->getCalendarInfoE( $calendarUid ); + } + $calendarDefinition['CALENDAR_APPLIED'] = $calendarOwner; + $this->addCalendarLog( "--=== Calendar Applied: " . $calendarDefinition['CALENDAR_NAME'] . " -> $calendarOwner" ); + return $calendarDefinition; + } + + public function assignCalendarTo ($objectUid, $calendarUid, $objectType) + { + //if exists the row in the database propel will update it, otherwise will insert. + $tr = CalendarAssignmentsPeer::retrieveByPK( $objectUid ); + if ($calendarUid != "") { + if (! (is_object( $tr ) && get_class( $tr ) == 'CalendarAssignments')) { + $tr = new CalendarAssignments(); + } + $tr->setObjectUid( $objectUid ); + $tr->setCalendarUid( $calendarUid ); + $tr->setObjectType( $objectType ); + + if ($tr->validate()) { + // we save it, since we get no validation errors, or do whatever else you like. + $res = $tr->save(); + } else { + // Something went wrong. We can now get the validationFailures and handle them. + $msg = ''; + $validationFailuresArray = $tr->getValidationFailures(); + foreach ($validationFailuresArray as $objValidationFailure) { + $msg .= $objValidationFailure->getMessage() . "
"; + } + //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); + } + } else { + //Delete record + if ((is_object( $tr ) && get_class( $tr ) == 'CalendarAssignments')) { + $tr->delete(); + } + } + } + //Added by Qennix + //Counts all users,task,process by calendar + public function getAllCounterByCalendar ($type) + { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( CalendarAssignmentsPeer::CALENDAR_UID ); + $oCriteria->addSelectColumn( 'COUNT(*) AS CNT' ); + $oCriteria->addGroupByColumn( CalendarAssignmentsPeer::CALENDAR_UID ); + $oCriteria->add( CalendarAssignmentsPeer::OBJECT_TYPE, $type ); + $oDataset = CalendarAssignmentsPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $aCounter = Array (); + while ($oDataset->next()) { + $row = $oDataset->getRow(); + $aCounter[$row['CALENDAR_UID']] = $row['CNT']; + } + return $aCounter; + } + + public function loadByCalendarName ($calendarName) + { + $Criteria = new Criteria( 'workflow' ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_NAME ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); + $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_STATUS ); + $Criteria->add( calendarDefinitionPeer::CALENDAR_NAME, $calendarName, CRITERIA::EQUAL ); + $oDataset = calendarDefinitionPeer::doSelectRS( $Criteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + return $oDataset->getRow(); + } +} +// CalendarDefinition + diff --git a/workflow/engine/classes/model/Content.php b/workflow/engine/classes/model/Content.php index 31e208f5b..654e3fb85 100755 --- a/workflow/engine/classes/model/Content.php +++ b/workflow/engine/classes/model/Content.php @@ -1,479 +1,485 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ - -require_once 'classes/model/om/BaseContent.php'; - -/** - * Skeleton subclass for representing a row from the 'CONTENT' table. - * - * - * - * You should add additional methods to this class to meet the - * application requirements. This class will only be generated as - * long as it does not already exist in the output directory. - * - * @package workflow.engine.classes.model - */ -class Content extends BaseContent { - - public $langs; - public $rowsProcessed; - public $rowsInserted; - public $rowsUnchanged; - public $rowsClustered; - public $langsAsoc; - /* - * Load the content row specified by the parameters: +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +require_once 'classes/model/om/BaseContent.php'; + +/** + * Skeleton subclass for representing a row from the 'CONTENT' table. + * + * + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package workflow.engine.classes.model + */ +class Content extends BaseContent +{ + public $langs; + public $rowsProcessed; + public $rowsInserted; + public $rowsUnchanged; + public $rowsClustered; + public $langsAsoc; + /* + * Load the content row specified by the parameters: * @param string $sUID * @return variant - */ - function load($ConCategory, $ConParent, $ConId, $ConLang) { - $content = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $ConLang ); - if (is_null ( $content )) { - //we dont find any value for this field and language in CONTENT table - $ConValue = Content::autoLoadSave ( $ConCategory, $ConParent, $ConId, $ConLang ); - } else { - //krumo($content); - $ConValue = $content->getConValue (); - if ($ConValue == "") { //try to find a valid translation - $ConValue = Content::autoLoadSave ( $ConCategory, $ConParent, $ConId, $ConLang ); - } - } - return $ConValue; - } - /* - * Find a valid Lang for current Content. The most recent + */ + public function load ($ConCategory, $ConParent, $ConId, $ConLang) + { + $content = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $ConLang ); + if (is_null( $content )) { + //we dont find any value for this field and language in CONTENT table; + $ConValue = Content::autoLoadSave( $ConCategory, $ConParent, $ConId, $ConLang ); + } else { + //krumo($content); + $ConValue = $content->getConValue(); + if ($ConValue == "") { + //try to find a valid translation + $ConValue = Content::autoLoadSave( $ConCategory, $ConParent, $ConId, $ConLang ); + } + } + return $ConValue; + } + /* + * Find a valid Lang for current Content. The most recent * @param string $ConCategory * @param string $ConParent - * @param string $ConId + * @param string $ConId * @return string - * - */ - function getDefaultContentLang($ConCategory, $ConParent, $ConId, $destConLang) { - $Criteria = new Criteria ( 'workflow' ); - $Criteria->clearSelectColumns ()->clearOrderByColumns (); - - $Criteria->addSelectColumn ( ContentPeer::CON_CATEGORY ); - $Criteria->addSelectColumn ( ContentPeer::CON_PARENT ); - $Criteria->addSelectColumn ( ContentPeer::CON_ID ); - $Criteria->addSelectColumn ( ContentPeer::CON_LANG ); - $Criteria->addSelectColumn ( ContentPeer::CON_VALUE ); - - $Criteria->add ( ContentPeer::CON_CATEGORY, $ConCategory, CRITERIA::EQUAL ); - $Criteria->add ( ContentPeer::CON_PARENT, $ConParent, CRITERIA::EQUAL ); - $Criteria->add ( ContentPeer::CON_ID, $ConId, CRITERIA::EQUAL ); - - $Criteria->add ( ContentPeer::CON_LANG, $destConLang, CRITERIA::NOT_EQUAL ); - - $rs = ContentPeer::doSelectRS ( $Criteria ); - $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $rs->next (); - - if (is_array ( $row = $rs->getRow () )) { - $defaultLang = $row ['CON_LANG']; - - } else { - $defaultLang = ""; - } - return ($defaultLang); - } - /* - * Load the content row and the Save automatically the row for the destination language - * @param string $ConCategory - * @param string $ConParent - * @param string $ConId - * @param string $destConLang - * @return string - * if the row doesn't exist, it will be created automatically, even the default 'en' language - */ - function autoLoadSave($ConCategory, $ConParent, $ConId, $destConLang) { - //search in 'en' language, the default language - $content = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, 'en' ); - - if ((is_null ( $content )) || ($content->getConValue () == "")) { - $differentLang = Content::getDefaultContentLang ( $ConCategory, $ConParent, $ConId, $destConLang ); - $content = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $differentLang ); - } - - //to do: review if the $destConLang is a valid language/ - if (is_null ( $content )) - $ConValue = ''; //we dont find any value for this field and language in CONTENT table - else - $ConValue = $content->getConValue (); - - try { - $con = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $destConLang ); - if (is_null ( $con )) { - $con = new Content ( ); - } - $con->setConCategory ( $ConCategory ); - $con->setConParent ( $ConParent ); - $con->setConId ( $ConId ); - $con->setConLang ( $destConLang ); - $con->setConValue ( $ConValue ); - if ($con->validate ()) { - $res = $con->save (); - } - } catch ( Exception $e ) { - throw ($e); - } - - return $ConValue; - } - - /* - * Insert a content row + * + */ + public function getDefaultContentLang ($ConCategory, $ConParent, $ConId, $destConLang) + { + $Criteria = new Criteria( 'workflow' ); + $Criteria->clearSelectColumns()->clearOrderByColumns(); + + $Criteria->addSelectColumn( ContentPeer::CON_CATEGORY ); + $Criteria->addSelectColumn( ContentPeer::CON_PARENT ); + $Criteria->addSelectColumn( ContentPeer::CON_ID ); + $Criteria->addSelectColumn( ContentPeer::CON_LANG ); + $Criteria->addSelectColumn( ContentPeer::CON_VALUE ); + + $Criteria->add( ContentPeer::CON_CATEGORY, $ConCategory, CRITERIA::EQUAL ); + $Criteria->add( ContentPeer::CON_PARENT, $ConParent, CRITERIA::EQUAL ); + $Criteria->add( ContentPeer::CON_ID, $ConId, CRITERIA::EQUAL ); + $Criteria->add( ContentPeer::CON_LANG, $destConLang, CRITERIA::NOT_EQUAL ); + + $rs = ContentPeer::doSelectRS( $Criteria ); + $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $rs->next(); + + if (is_array( $row = $rs->getRow() )) { + $defaultLang = $row['CON_LANG']; + } else { + $defaultLang = ""; + } + return ($defaultLang); + } + /* + * Load the content row and the Save automatically the row for the destination language + * @param string $ConCategory + * @param string $ConParent + * @param string $ConId + * @param string $destConLang + * @return string + * if the row doesn't exist, it will be created automatically, even the default 'en' language + */ + public function autoLoadSave ($ConCategory, $ConParent, $ConId, $destConLang) + { + //search in 'en' language, the default language + $content = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, 'en' ); + + if ((is_null( $content )) || ($content->getConValue() == "")) { + $differentLang = Content::getDefaultContentLang( $ConCategory, $ConParent, $ConId, $destConLang ); + $content = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $differentLang ); + } + + //to do: review if the $destConLang is a valid language/ + if (is_null( $content )) { + $ConValue = ''; + //we dont find any value for this field and language in CONTENT table + } else { + $ConValue = $content->getConValue(); + } + + try { + $con = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $destConLang ); + if (is_null( $con )) { + $con = new Content(); + } + $con->setConCategory( $ConCategory ); + $con->setConParent( $ConParent ); + $con->setConId( $ConId ); + $con->setConLang( $destConLang ); + $con->setConValue( $ConValue ); + if ($con->validate()) { + $res = $con->save(); + } + } catch (Exception $e) { + throw ($e); + } + + return $ConValue; + } + + /* + * Insert a content row * @param string $ConCategory * @param string $ConParent * @param string $ConId * @param string $ConLang - * @param string $ConValue + * @param string $ConValue * @return variant - */ - function addContent($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) { - try { - if ($ConLang != 'en') { - $baseLangContent = ContentPeer::retrieveByPk($ConCategory, $ConParent, $ConId, 'en'); - if ($baseLangContent === null) { - Content::addContent($ConCategory, $ConParent, $ConId, 'en', $ConValue); - } - } - - $con = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $ConLang ); - - if (is_null ( $con )) { - $con = new Content ( ); - } else { - if ($con->getConParent () == $ConParent && $con->getConCategory () == $ConCategory && $con->getConValue () == $ConValue && $con->getConLang () == $ConLang && $con->getConId () == $ConId) - return true; - } - $con->setConCategory ( $ConCategory ); - if ($con->getConParent () != $ConParent) - $con->setConParent ( $ConParent ); - $con->setConId ( $ConId ); - $con->setConLang ( $ConLang ); - $con->setConValue ( $ConValue ); - if ($con->validate ()) { - $res = $con->save (); - return $res; - } else { - $e = new Exception ( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" ); - throw ($e); - } - } catch ( Exception $e ) { - throw ($e); - } - } - - /* - * Insert a content row + */ + public function addContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) + { + try { + if ($ConLang != 'en') { + $baseLangContent = ContentPeer::retrieveByPk( $ConCategory, $ConParent, $ConId, 'en' ); + if ($baseLangContent === null) { + Content::addContent( $ConCategory, $ConParent, $ConId, 'en', $ConValue ); + } + } + + $con = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $ConLang ); + + if (is_null( $con )) { + $con = new Content(); + } else { + if ($con->getConParent() == $ConParent && $con->getConCategory() == $ConCategory && $con->getConValue() == $ConValue && $con->getConLang() == $ConLang && $con->getConId() == $ConId) { + return true; + } + } + $con->setConCategory( $ConCategory ); + if ($con->getConParent() != $ConParent) { + $con->setConParent( $ConParent ); + } + $con->setConId( $ConId ); + $con->setConLang( $ConLang ); + $con->setConValue( $ConValue ); + if ($con->validate()) { + $res = $con->save(); + return $res; + } else { + $e = new Exception( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" ); + throw ($e); + } + } catch (Exception $e) { + throw ($e); + } + } + + /* + * Insert a content row * @param string $ConCategory * @param string $ConParent * @param string $ConId * @param string $ConLang - * @param string $ConValue + * @param string $ConValue * @return variant - */ - function insertContent($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) { - try { - $con = new Content ( ); - $con->setConCategory ( $ConCategory ); - $con->setConParent ( $ConParent ); - $con->setConId ( $ConId ); - $con->setConLang ( $ConLang ); - $con->setConValue ( $ConValue ); - if ($con->validate ()) { - $res = $con->save (); - return $res; - } else { - $e = new Exception ( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" ); - throw ($e); - } - } catch ( Exception $e ) { - throw ($e); - } - } - - /* - * remove a content row + */ + public function insertContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) + { + try { + $con = new Content(); + $con->setConCategory( $ConCategory ); + $con->setConParent( $ConParent ); + $con->setConId( $ConId ); + $con->setConLang( $ConLang ); + $con->setConValue( $ConValue ); + if ($con->validate()) { + $res = $con->save(); + return $res; + } else { + $e = new Exception( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" ); + throw ($e); + } + } catch (Exception $e) { + throw ($e); + } + } + + /* + * remove a content row * @param string $ConCategory * @param string $ConParent * @param string $ConId * @param string $ConLang - * @param string $ConValue + * @param string $ConValue * @return variant - */ - function removeContent($ConCategory, $ConParent, $ConId) { - try { - $c = new Criteria ( ); - $c->add ( ContentPeer::CON_CATEGORY, $ConCategory ); - $c->add ( ContentPeer::CON_PARENT, $ConParent ); - $c->add ( ContentPeer::CON_ID, $ConId ); - $result = ContentPeer::doSelectRS ( $c ); - $result->next (); - $row = $result->getRow (); - while ( is_array ( $row ) ) { - ContentPeer::doDelete ( array ($ConCategory, $ConParent, $ConId, $row [3] ) ); - $result->next (); - $row = $result->getRow (); - } - } catch ( Exception $e ) { - throw ($e); - } - - } - - /* + */ + public function removeContent ($ConCategory, $ConParent, $ConId) + { + try { + $c = new Criteria(); + $c->add( ContentPeer::CON_CATEGORY, $ConCategory ); + $c->add( ContentPeer::CON_PARENT, $ConParent ); + $c->add( ContentPeer::CON_ID, $ConId ); + $result = ContentPeer::doSelectRS( $c ); + $result->next(); + $row = $result->getRow(); + while (is_array( $row )) { + ContentPeer::doDelete( array ($ConCategory,$ConParent,$ConId,$row[3]) ); + $result->next(); + $row = $result->getRow(); + } + } catch (Exception $e) { + throw ($e); + } + + } + + /* * Reasons if the record already exists * * @param string $ConCategory * @param string $ConParent * @param string $ConId * @param string $ConLang - * @param string $ConValue + * @param string $ConValue * @return boolean true or false - */ - function Exists ($ConCategory, $ConParent, $ConId, $ConLang) - { - try { - $oPro = ContentPeer::retrieveByPk($ConCategory, $ConParent, $ConId, $ConLang); - if (is_object($oPro) && get_class ($oPro) == 'Content' ) { - return true; - } else { - return false; - } - } - catch (Exception $oError) { - throw($oError); - } - } - + */ + public function Exists ($ConCategory, $ConParent, $ConId, $ConLang) + { + try { + $oPro = ContentPeer::retrieveByPk( $ConCategory, $ConParent, $ConId, $ConLang ); + if (is_object( $oPro ) && get_class( $oPro ) == 'Content') { + return true; + } else { + return false; + } + } catch (Exception $oError) { + throw ($oError); + } + } + /* * Regenerate Table Content * * @param array $langs - */ - function regenerateContent($langs, $workSpace=SYS_SYS) - { + */ + public function regenerateContent ($langs, $workSpace = SYS_SYS) + { //Search the language - $key = array_search('en',$langs); - if ($key === false) { - $key = array_search(SYS_LANG,$langs); - if ($key === false) { - $key = '0'; - } - } - $this->langsAsoc = array(); - foreach ($langs as $key=>$value) { - $this->langsAsoc[$value] = $value; - } - - $this->langs = $langs; - $this->rowsProcessed = 0; - $this->rowsInserted = 0; - $this->rowsUnchanged = 0; - $this->rowsClustered = 0; - + $key = array_search( 'en', $langs ); + if ($key === false) { + $key = array_search( SYS_LANG, $langs ); + if ($key === false) { + $key = '0'; + } + } + $this->langsAsoc = array (); + foreach ($langs as $key => $value) { + $this->langsAsoc[$value] = $value; + } + + $this->langs = $langs; + $this->rowsProcessed = 0; + $this->rowsInserted = 0; + $this->rowsUnchanged = 0; + $this->rowsClustered = 0; + //Creating table CONTENT_BACKUP - $oConnection = Propel::getConnection('workflow'); - $oStatement = $oConnection->prepareStatement("CREATE TABLE IF NOT EXISTS `CONTENT_BACKUP` ( + $oConnection = Propel::getConnection( 'workflow' ); + $oStatement = $oConnection->prepareStatement( "CREATE TABLE IF NOT EXISTS `CONTENT_BACKUP` ( `CON_CATEGORY` VARCHAR(30) default '' NOT NULL, `CON_PARENT` VARCHAR(32) default '' NOT NULL, `CON_ID` VARCHAR(100) default '' NOT NULL, `CON_LANG` VARCHAR(10) default '' NOT NULL, `CON_VALUE` MEDIUMTEXT NOT NULL, CONSTRAINT CONTENT_BACKUP_PK PRIMARY KEY (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG) - )Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='Table for add content';"); - $oStatement->executeQuery(); - - $con = Propel::getConnection('workflow'); + )Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='Table for add content';" ); + $oStatement->executeQuery(); + + $con = Propel::getConnection( 'workflow' ); $sql = " SELECT DISTINCT CON_LANG - FROM CONTENT "; - $stmt = $con->createStatement(); - $rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); - while ($rs->next()) { - $row = $rs->getRow(); - $language = $row['CON_LANG']; - if (array_search($row['CON_LANG'],$langs) === false) { - Content::removeLanguageContent($row['CON_LANG']); - } - } - + FROM CONTENT "; + $stmt = $con->createStatement(); + $rs = $stmt->executeQuery( $sql, ResultSet::FETCHMODE_ASSOC ); + while ($rs->next()) { + $row = $rs->getRow(); + $language = $row['CON_LANG']; + if (array_search( $row['CON_LANG'], $langs ) === false) { + Content::removeLanguageContent( $row['CON_LANG'] ); + } + } + $sql = " SELECT CON_ID, CON_CATEGORY, CON_LANG, CON_PARENT, CON_VALUE FROM CONTENT - ORDER BY CON_ID, CON_CATEGORY, CON_PARENT, CON_LANG"; - - G::LoadClass("wsTools"); - $workSpace = new workspaceTools($workSpace); - $workSpace->getDBInfo(); - - $link = mysql_pconnect($workSpace->dbHost, $workSpace->dbUser, $workSpace->dbPass) - or die ("Could not connect"); - - mysql_select_db($workSpace->dbName, $link); - mysql_query("SET NAMES 'utf8';"); - mysql_query('SET OPTION SQL_BIG_SELECTS=1'); - $result = mysql_unbuffered_query($sql, $link); - $list = array(); - $default = array(); - $sw = array('CON_ID'=>'','CON_CATEGORY'=>'','CON_PARENT'=>''); - while ($row = mysql_fetch_assoc($result)) { - if ($sw['CON_ID'] == $row['CON_ID'] && - $sw['CON_CATEGORY'] == $row['CON_CATEGORY'] && - $sw['CON_PARENT'] == $row['CON_PARENT']) { - $list[] = $row; - } else { - $this->rowsClustered++; - if (count($langs) != count($list)) { - $this->checkLanguage($list, $default); - } else { - $this->rowsUnchanged = $this->rowsUnchanged + count($langs); - } - $sw = array(); - $sw['CON_ID'] = $row['CON_ID']; - $sw['CON_CATEGORY'] = $row['CON_CATEGORY']; - $sw['CON_LANG'] = $row['CON_LANG']; - $sw['CON_PARENT'] = $row['CON_PARENT']; - unset($list); - unset($default); - $list = array(); - $default = array(); - $list[] = $row; - } - if ($sw['CON_LANG'] == $langs[$key]) { - $default = $row; - } - $this->rowsProcessed++; - } - if (count($langs) != count($list)) { - $this->checkLanguage($list, $default); - } else { - $this->rowsUnchanged = $this->rowsUnchanged + count($langs); - } - mysql_free_result($result); - $total = $this->rowsProcessed + $this->rowsInserted; - - $connection = Propel::getConnection('workflow'); - $statement = $connection->prepareStatement("INSERT INTO CONTENT + ORDER BY CON_ID, CON_CATEGORY, CON_PARENT, CON_LANG"; + + G::LoadClass( "wsTools" ); + $workSpace = new workspaceTools( $workSpace ); + $workSpace->getDBInfo(); + + $link = mysql_pconnect( $workSpace->dbHost, $workSpace->dbUser, $workSpace->dbPass ) or die( "Could not connect" ); + + mysql_select_db( $workSpace->dbName, $link ); + mysql_query( "SET NAMES 'utf8';" ); + mysql_query( 'SET OPTION SQL_BIG_SELECTS=1' ); + $result = mysql_unbuffered_query( $sql, $link ); + $list = array (); + $default = array (); + $sw = array ('CON_ID' => '','CON_CATEGORY' => '','CON_PARENT' => '' + ); + while ($row = mysql_fetch_assoc( $result )) { + if ($sw['CON_ID'] == $row['CON_ID'] && $sw['CON_CATEGORY'] == $row['CON_CATEGORY'] && $sw['CON_PARENT'] == $row['CON_PARENT']) { + $list[] = $row; + } else { + $this->rowsClustered ++; + if (count( $langs ) != count( $list )) { + $this->checkLanguage( $list, $default ); + } else { + $this->rowsUnchanged = $this->rowsUnchanged + count( $langs ); + } + $sw = array (); + $sw['CON_ID'] = $row['CON_ID']; + $sw['CON_CATEGORY'] = $row['CON_CATEGORY']; + $sw['CON_LANG'] = $row['CON_LANG']; + $sw['CON_PARENT'] = $row['CON_PARENT']; + unset( $list ); + unset( $default ); + $list = array (); + $default = array (); + $list[] = $row; + } + if ($sw['CON_LANG'] == $langs[$key]) { + $default = $row; + } + $this->rowsProcessed ++; + } + if (count( $langs ) != count( $list )) { + $this->checkLanguage( $list, $default ); + } else { + $this->rowsUnchanged = $this->rowsUnchanged + count( $langs ); + } + mysql_free_result( $result ); + $total = $this->rowsProcessed + $this->rowsInserted; + $connection = Propel::getConnection( 'workflow' ); + $statement = $connection->prepareStatement( "INSERT INTO CONTENT SELECT CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE - FROM CONTENT_BACKUP"); - $statement->executeQuery(); - - $statement = $connection->prepareStatement("DROP TABLE CONTENT_BACKUP"); - $statement->executeQuery(); - - if (!isset($_SERVER['SERVER_NAME'])) { - CLI::logging("Rows Processed ---> $this->rowsProcessed ..... \n"); - CLI::logging("Rows Clustered ---> $this->rowsClustered ..... \n"); - CLI::logging("Rows Unchanged ---> $this->rowsUnchanged ..... \n"); - CLI::logging("Rows Inserted ---> $this->rowsInserted ..... \n"); - CLI::logging("Rows Total ---> $total ..... \n"); - } - } - - function checkLanguage($content, $default) - { - if (count($content)>0) { - $langs = $this->langs; - $langsAsoc = $this->langsAsoc; + FROM CONTENT_BACKUP" ); + $statement->executeQuery(); + + $statement = $connection->prepareStatement( "DROP TABLE CONTENT_BACKUP" ); + $statement->executeQuery(); + + if (! isset( $_SERVER['SERVER_NAME'] )) { + CLI::logging( "Rows Processed ---> $this->rowsProcessed ..... \n" ); + CLI::logging( "Rows Clustered ---> $this->rowsClustered ..... \n" ); + CLI::logging( "Rows Unchanged ---> $this->rowsUnchanged ..... \n" ); + CLI::logging( "Rows Inserted ---> $this->rowsInserted ..... \n" ); + CLI::logging( "Rows Total ---> $total ..... \n" ); + } + } + + public function checkLanguage ($content, $default) + { + if (count( $content ) > 0) { + $langs = $this->langs; + $langsAsoc = $this->langsAsoc; //Element default - $default = (count($default)>0) ? $default : $content[0]; - foreach ($content as $key => $value) { - unset($langsAsoc[$value['CON_LANG']]); - } - foreach ($langsAsoc as $key => $value) { - $this->rowsInserted++; - $this->fastInsertContent( - $default['CON_CATEGORY'], - $default['CON_PARENT'], - $default['CON_ID'], - $value, - $default['CON_VALUE'] - ); - } - } - } - - function fastInsertContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) { - $ConValue = mysql_real_escape_string($ConValue); - $connection = Propel::getConnection('workflow'); - $statement = $connection->prepareStatement("INSERT INTO CONTENT_BACKUP ( + $default = (count( $default ) > 0) ? $default : $content[0]; + foreach ($content as $key => $value) { + unset( $langsAsoc[$value['CON_LANG']] ); + } + foreach ($langsAsoc as $key => $value) { + $this->rowsInserted ++; + $this->fastInsertContent( $default['CON_CATEGORY'], $default['CON_PARENT'], $default['CON_ID'], $value, $default['CON_VALUE'] ); + } + } + } + + public function fastInsertContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) + { + $ConValue = mysql_real_escape_string( $ConValue ); + $connection = Propel::getConnection( 'workflow' ); + $statement = $connection->prepareStatement( "INSERT INTO CONTENT_BACKUP ( CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE) - VALUES ('$ConCategory', '$ConParent', '$ConId', '$ConLang', '$ConValue');"); - $statement->executeQuery(); - } - - function removeLanguageContent($lanId) { - try { - $c = new Criteria ( ); - $c->addSelectColumn(ContentPeer::CON_CATEGORY); - $c->addSelectColumn(ContentPeer::CON_PARENT); - $c->addSelectColumn(ContentPeer::CON_ID); - $c->addSelectColumn(ContentPeer::CON_LANG); - - $c->add ( ContentPeer::CON_LANG, $lanId ); - - $result = ContentPeer::doSelectRS ( $c ); - $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $result->next (); - $row = $result->getRow (); - - while ( is_array ( $row ) ) { - $content = ContentPeer::retrieveByPK( $row['CON_CATEGORY'], $row['CON_PARENT'], $row['CON_ID'], $lanId); - - if( $content !== null ) - $content->delete(); - - $result->next (); - $row = $result->getRow (); - } - - } catch ( Exception $e ) { - throw ($e); - } - } - //Added by Enrique at Feb 9th,2011 - //Gets all Role Names by Role - function getAllContentsByRole($sys_lang=SYS_LANG){ - if (!isset($sys_lang)) $sys_lang = 'en'; - $oCriteria = new Criteria('workflow'); - $oCriteria->clearSelectColumns(); - $oCriteria->addSelectColumn(ContentPeer::CON_ID); - $oCriteria->addAsColumn('ROL_NAME', ContentPeer::CON_VALUE); - //$oCriteria->addAsColumn('ROL_UID', ContentPeer::CON_ID); - $oCriteria->add(ContentPeer::CON_CATEGORY,'ROL_NAME'); - $oCriteria->add(ContentPeer::CON_LANG, $sys_lang); - $oDataset = ContentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $aRoles = Array(); - while ($oDataset->next()){ - $xRow = $oDataset->getRow(); - $aRoles[$xRow['CON_ID']] = $xRow['ROL_NAME']; - } - return $aRoles; - } - -} // Content + VALUES ('$ConCategory', '$ConParent', '$ConId', '$ConLang', '$ConValue');" ); + $statement->executeQuery(); + } + + public function removeLanguageContent ($lanId) + { + try { + $c = new Criteria(); + $c->addSelectColumn( ContentPeer::CON_CATEGORY ); + $c->addSelectColumn( ContentPeer::CON_PARENT ); + $c->addSelectColumn( ContentPeer::CON_ID ); + $c->addSelectColumn( ContentPeer::CON_LANG ); + + $c->add( ContentPeer::CON_LANG, $lanId ); + + $result = ContentPeer::doSelectRS( $c ); + $result->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $result->next(); + $row = $result->getRow(); + + while (is_array( $row )) { + $content = ContentPeer::retrieveByPK( $row['CON_CATEGORY'], $row['CON_PARENT'], $row['CON_ID'], $lanId ); + + if ($content !== null) { + $content->delete(); + } + $result->next(); + $row = $result->getRow(); + } + + } catch (Exception $e) { + throw ($e); + } + } + //Added by Enrique at Feb 9th,2011 + //Gets all Role Names by Role + public function getAllContentsByRole ($sys_lang = SYS_LANG) + { + if (! isset( $sys_lang )) { + $sys_lang = 'en'; + } + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->clearSelectColumns(); + $oCriteria->addSelectColumn( ContentPeer::CON_ID ); + $oCriteria->addAsColumn( 'ROL_NAME', ContentPeer::CON_VALUE ); + //$oCriteria->addAsColumn('ROL_UID', ContentPeer::CON_ID); + $oCriteria->add( ContentPeer::CON_CATEGORY, 'ROL_NAME' ); + $oCriteria->add( ContentPeer::CON_LANG, $sys_lang ); + $oDataset = ContentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $aRoles = Array (); + while ($oDataset->next()) { + $xRow = $oDataset->getRow(); + $aRoles[$xRow['CON_ID']] = $xRow['ROL_NAME']; + } + return $aRoles; + } +} +// Content + diff --git a/workflow/engine/classes/model/Translation.php b/workflow/engine/classes/model/Translation.php index 5a50c1b04..154df7f0c 100755 --- a/workflow/engine/classes/model/Translation.php +++ b/workflow/engine/classes/model/Translation.php @@ -1,461 +1,455 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ - -require_once 'classes/model/om/BaseTranslation.php'; - - -/** - * Skeleton subclass for representing a row from the 'TRANSLATION' table. - * - * - * - * You should add additional methods to this class to meet the - * application requirements. This class will only be generated as - * long as it does not already exist in the output directory. - * - * @package workflow.engine.classes.model - */ -class Translation extends BaseTranslation { - - public static $meta; - public static $localeSeparator = '-'; - - private $envFilePath; - - function __construct(){ - $this->envFilePath = PATH_DATA . "META-INF" . PATH_SEP . "translations.env"; - } - - function getAllCriteria(){ - - //SELECT * from TRANSLATION WHERE TRN_LANG = 'en' order by TRN_CATEGORY, TRN_ID - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TranslationPeer::TRN_ID); - $oCriteria->addSelectColumn(TranslationPeer::TRN_CATEGORY); - $oCriteria->addSelectColumn(TranslationPeer::TRN_LANG); - $oCriteria->addSelectColumn(TranslationPeer::TRN_VALUE); - //$c->add(TranslationPeer::TRN_LANG, 'en'); - - return $oCriteria; - } - - function getAll($lang='en', $start=null, $limit=null, $search=null, $dateFrom=null, $dateTo=null){ - $totalCount = 0; - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TranslationPeer::TRN_ID); - $oCriteria->addSelectColumn(TranslationPeer::TRN_CATEGORY); - $oCriteria->addSelectColumn(TranslationPeer::TRN_LANG); - $oCriteria->addSelectColumn(TranslationPeer::TRN_VALUE); - $oCriteria->addSelectColumn(TranslationPeer::TRN_UPDATE_DATE); - $oCriteria->add(TranslationPeer::TRN_LANG, $lang); - $oCriteria->add(TranslationPeer::TRN_CATEGORY, 'LABEL'); - //$oCriteria->addAscendingOrderByColumn ( 'TRN_CATEGORY' ); - $oCriteria->addAscendingOrderByColumn ( 'TRN_ID' ); - - - if( $search ) { - $oCriteria->add( - $oCriteria->getNewCriterion( - TranslationPeer::TRN_ID, - "%$search%", Criteria::LIKE - )->addOr($oCriteria->getNewCriterion( - TranslationPeer::TRN_VALUE, - "%$search%", Criteria::LIKE - )) - ); - } - // for date filter - if( ($dateFrom)&&($dateTo) ) { - $oCriteria->add( - $oCriteria->getNewCriterion( - TranslationPeer::TRN_UPDATE_DATE, - "$dateFrom", Criteria::GREATER_EQUAL//LESS_EQUAL - )->addAnd($oCriteria->getNewCriterion( - TranslationPeer::TRN_UPDATE_DATE, - "$dateTo", Criteria::LESS_EQUAL//GREATER_EQUAL - )) - ); - } - // end filter - $c = clone $oCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = TranslationPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - $totalCount = $aRow[0]; - - if($start) - $oCriteria->setOffset($start); - if($limit) //&& !isset($seach) && !isset($search)) - $oCriteria->setLimit($limit); - - $rs = TranslationPeer::doSelectRS($oCriteria); - $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $rows = Array(); - while( $rs->next() ) { - $rows[] = $rs->getRow(); - } - - $result->data = $rows; - $result->totalCount = $totalCount; - - return $result; - } - - - /* Load strings from a Database . +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +require_once 'classes/model/om/BaseTranslation.php'; + +/** + * Skeleton subclass for representing a row from the 'TRANSLATION' table. + * + * + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package workflow.engine.classes.model + */ +class Translation extends BaseTranslation +{ + + public static $meta; + public static $localeSeparator = '-'; + + private $envFilePath; + + public function __construct () + { + $this->envFilePath = PATH_DATA . "META-INF" . PATH_SEP . "translations.env"; + } + + public function getAllCriteria () + { + + //SELECT * from TRANSLATION WHERE TRN_LANG = 'en' order by TRN_CATEGORY, TRN_ID + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_ID ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_CATEGORY ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_LANG ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_VALUE ); + //$c->add(TranslationPeer::TRN_LANG, 'en'); + + + return $oCriteria; + } + + public function getAll ($lang = 'en', $start = null, $limit = null, $search = null, $dateFrom = null, $dateTo = null) + { + $totalCount = 0; + + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_ID ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_CATEGORY ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_LANG ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_VALUE ); + $oCriteria->addSelectColumn( TranslationPeer::TRN_UPDATE_DATE ); + $oCriteria->add( TranslationPeer::TRN_LANG, $lang ); + $oCriteria->add( TranslationPeer::TRN_CATEGORY, 'LABEL' ); + //$oCriteria->addAscendingOrderByColumn ( 'TRN_CATEGORY' ); + $oCriteria->addAscendingOrderByColumn( 'TRN_ID' ); + + if ($search) { + $oCriteria->add( $oCriteria->getNewCriterion( TranslationPeer::TRN_ID, "%$search%", Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( TranslationPeer::TRN_VALUE, "%$search%", Criteria::LIKE ) ) ); + } + // for date filter + if (($dateFrom) && ($dateTo)) { + $oCriteria->add( $oCriteria->getNewCriterion( TranslationPeer::TRN_UPDATE_DATE, "$dateFrom", Criteria::GREATER_EQUAL ) //LESS_EQUAL +->addAnd( $oCriteria->getNewCriterion( TranslationPeer::TRN_UPDATE_DATE, "$dateTo", Criteria::LESS_EQUAL ) //GREATER_EQUAL + ) ); + } + // end filter + $c = clone $oCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn( 'COUNT(*)' ); + $oDataset = TranslationPeer::doSelectRS( $c ); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if (is_array( $aRow )) { + $totalCount = $aRow[0]; + } + if ($start) { + $oCriteria->setOffset( $start ); + } + if ($limit) { + //&& !isset($seach) && !isset($search)) + $oCriteria->setLimit( $limit ); + } + $rs = TranslationPeer::doSelectRS( $oCriteria ); + $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $rows = Array (); + while ($rs->next()) { + $rows[] = $rs->getRow(); + } + + $result->data = $rows; + $result->totalCount = $totalCount; + + return $result; + } + + /* Load strings from a Database . * @author Fernando Ontiveros * @parameter $languageId (es|en|...). - */ - - function generateFileTranslation ($languageId = '') { - $translation = Array(); - $translationJS = Array(); - - if ($languageId === '') - $languageId = defined('SYS_LANG') ? SYS_LANG : 'en'; - - $c = new Criteria(); - $c->add(TranslationPeer::TRN_LANG, $languageId ); - $c->addAscendingOrderByColumn ( 'TRN_CATEGORY' ); - $c->addAscendingOrderByColumn ( 'TRN_ID' ); - $tranlations = TranslationPeer::doSelect($c); - - $cacheFile = PATH_LANGUAGECONT . "translation." . $languageId; - $cacheFileJS = PATH_CORE . 'js' . PATH_SEP . 'labels' . PATH_SEP . $languageId.".js"; - - foreach ( $tranlations as $key => $row ) { - if ( $row->getTrnCategory() === 'LABEL' ) { - $translation[ $row->getTrnId() ] = $row->getTrnValue(); - } - if ( $row->getTrnCategory() === 'JAVASCRIPT') { - $translationJS[ $row->getTrnId() ] = $row->getTrnValue(); - } - } - - try { - - if( ! is_dir(dirname($cacheFile)) ) - G::mk_dir(dirname($cacheFile)); - - if( ! is_dir(dirname($cacheFileJS)) ) - G::mk_dir(dirname($cacheFileJS)); - - $f = fopen( $cacheFile , 'w+'); - fwrite( $f , "" ); - fclose( $f ); - - $json=new Services_JSON(); - - $f = fopen( $cacheFileJS , 'w'); - fwrite( $f , "var G_STRINGS =". $json->encode( $translationJS ) . ";\n"); - fclose( $f ); - - $res['cacheFile'] = $cacheFile; - $res['cacheFileJS'] = $cacheFileJS; - $res['rows'] = count ( $translation ); - $res['rowsJS'] = count ( $translationJS ); - return $res; - } catch( Exception $e ) { - echo $e->getMessage(); - } - } - - /** - * returns an array with - * codError 0 - no error, < 0 error - * rowsAffected 0,1 the number of rows affected - * message message error. - */ - function addTranslation ( $category, $id, $languageId, $value ) { - //if exists the row in the database propel will update it, otherwise will insert. - $tr = TranslationPeer::retrieveByPK( $category, $id, $languageId ); - if ( ! ( is_object ( $tr ) && get_class ($tr) == 'Translation' ) ) { - $tr = new Translation(); - } - $tr->setTrnCategory( $category ); - $tr->setTrnId( $id ); - $tr->setTrnLang( $languageId); - $tr->setTrnValue( $value ); - $tr->setTrnUpdateDate( date('Y-m-d') ); - - if ($tr->validate() ) { - // we save it, since we get no validation errors, or do whatever else you like. - $res = $tr->save(); - } - else { - // Something went wrong. We can now get the validationFailures and handle them. - $msg = ''; - $validationFailuresArray = $tr->getValidationFailures(); - foreach($validationFailuresArray as $objValidationFailure) { - $msg .= $objValidationFailure->getMessage() . "\n"; - } - return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); - } - return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); - //to do: uniform coderror structures for all classes - } - - function remove($sCategory, $sId, $sLang) { - $oTranslation = TranslationPeer::retrieveByPK($sCategory, $sId, $sLang); - if ( ( is_object ( $oTranslation ) && get_class ($oTranslation) == 'Translation' ) ) { - $oTranslation->delete(); - } - } - - function addTranslationEnvironment($locale, $headers, $numRecords) - { - $filePath = $this->envFilePath; - $environments = Array(); - - if( file_exists($filePath) ) { - $environments = unserialize(file_get_contents($filePath)); - } - - $environment['LOCALE'] = $locale; - $environment['HEADERS'] = $headers; - $environment['DATE'] = date('Y-m-d H:i:s'); - $environment['NUM_RECORDS'] = $numRecords; - $environment['LANGUAGE'] = $headers['X-Poedit-Language']; - $environment['COUNTRY'] = $headers['X-Poedit-Country']; - - if( strpos($locale, self::$localeSeparator) !== false ) { - list($environment['LAN_ID'], $environment['IC_UID']) = explode(self::$localeSeparator, strtoupper($locale)); - $environments[$environment['LAN_ID']][$environment['IC_UID']] = $environment; - } else { - $environment['LAN_ID'] = strtoupper($locale); - $environment['IC_UID'] = ''; - $environments[$locale]['__INTERNATIONAL__'] = $environment; - } - - - file_put_contents($filePath, serialize($environments)); - } - - function removeTranslationEnvironment($locale) - { - $filePath = $this->envFilePath; - if (strpos($locale, self::$localeSeparator) !== false) { - list($LAN_ID, $IC_UID) = explode('-', strtoupper($locale)); - } else { - $LAN_ID = $locale; - $IC_UID = '__INTERNATIONAL__'; + */ + + public function generateFileTranslation ($languageId = '') + { + $translation = Array (); + $translationJS = Array (); + + if ($languageId === '') { + $languageId = defined( 'SYS_LANG' ) ? SYS_LANG : 'en'; + } + $c = new Criteria(); + $c->add( TranslationPeer::TRN_LANG, $languageId ); + $c->addAscendingOrderByColumn( 'TRN_CATEGORY' ); + $c->addAscendingOrderByColumn( 'TRN_ID' ); + $tranlations = TranslationPeer::doSelect( $c ); + + $cacheFile = PATH_LANGUAGECONT . "translation." . $languageId; + $cacheFileJS = PATH_CORE . 'js' . PATH_SEP . 'labels' . PATH_SEP . $languageId . ".js"; + + foreach ($tranlations as $key => $row) { + if ($row->getTrnCategory() === 'LABEL') { + $translation[$row->getTrnId()] = $row->getTrnValue(); + } + if ($row->getTrnCategory() === 'JAVASCRIPT') { + $translationJS[$row->getTrnId()] = $row->getTrnValue(); + } + } + + try { + + if (! is_dir( dirname( $cacheFile ) )) { + G::mk_dir( dirname( $cacheFile ) ); + } + if (! is_dir( dirname( $cacheFileJS ) )) { + G::mk_dir( dirname( $cacheFileJS ) ); + } + $f = fopen( $cacheFile, 'w+' ); + fwrite( $f, "" ); + fclose( $f ); + + $json = new Services_JSON(); + + $f = fopen( $cacheFileJS, 'w' ); + fwrite( $f, "var G_STRINGS =" . $json->encode( $translationJS ) . ";\n" ); + fclose( $f ); + + $res['cacheFile'] = $cacheFile; + $res['cacheFileJS'] = $cacheFileJS; + $res['rows'] = count( $translation ); + $res['rowsJS'] = count( $translationJS ); + return $res; + } catch (Exception $e) { + echo $e->getMessage(); + } + } + + /** + * returns an array with + * codError 0 - no error, < 0 error + * rowsAffected 0,1 the number of rows affected + * message message error. + */ + public function addTranslation ($category, $id, $languageId, $value) + { + //if exists the row in the database propel will update it, otherwise will insert. + $tr = TranslationPeer::retrieveByPK( $category, $id, $languageId ); + if (! (is_object( $tr ) && get_class( $tr ) == 'Translation')) { + $tr = new Translation(); + } + $tr->setTrnCategory( $category ); + $tr->setTrnId( $id ); + $tr->setTrnLang( $languageId ); + $tr->setTrnValue( $value ); + $tr->setTrnUpdateDate( date( 'Y-m-d' ) ); + + if ($tr->validate()) { + // we save it, since we get no validation errors, or do whatever else you like. + $res = $tr->save(); + } else { + // Something went wrong. We can now get the validationFailures and handle them. + $msg = ''; + $validationFailuresArray = $tr->getValidationFailures(); + foreach ($validationFailuresArray as $objValidationFailure) { + $msg .= $objValidationFailure->getMessage() . "\n"; + } + return array ('codError' => - 100,'rowsAffected' => 0,'message' => $msg); + } + return array ('codError' => 0,'rowsAffected' => $res,'message' => ''); + //to do: uniform coderror structures for all classes + } + + public function remove ($sCategory, $sId, $sLang) + { + $oTranslation = TranslationPeer::retrieveByPK( $sCategory, $sId, $sLang ); + if ((is_object( $oTranslation ) && get_class( $oTranslation ) == 'Translation')) { + $oTranslation->delete(); + } + } + + public function addTranslationEnvironment ($locale, $headers, $numRecords) + { + $filePath = $this->envFilePath; + $environments = Array (); + + if (file_exists( $filePath )) { + $environments = unserialize( file_get_contents( $filePath ) ); + } + + $environment['LOCALE'] = $locale; + $environment['HEADERS'] = $headers; + $environment['DATE'] = date( 'Y-m-d H:i:s' ); + $environment['NUM_RECORDS'] = $numRecords; + $environment['LANGUAGE'] = $headers['X-Poedit-Language']; + $environment['COUNTRY'] = $headers['X-Poedit-Country']; + + if (strpos( $locale, self::$localeSeparator ) !== false) { + list ($environment['LAN_ID'], $environment['IC_UID']) = explode( self::$localeSeparator, strtoupper( $locale ) ); + $environments[$environment['LAN_ID']][$environment['IC_UID']] = $environment; + } else { + $environment['LAN_ID'] = strtoupper( $locale ); + $environment['IC_UID'] = ''; + $environments[$locale]['__INTERNATIONAL__'] = $environment; + } + + file_put_contents( $filePath, serialize( $environments ) ); + } + + public function removeTranslationEnvironment ($locale) + { + $filePath = $this->envFilePath; + if (strpos( $locale, self::$localeSeparator ) !== false) { + list ($LAN_ID, $IC_UID) = explode( '-', strtoupper( $locale ) ); + } else { + $LAN_ID = $locale; + $IC_UID = '__INTERNATIONAL__'; + } + + if (file_exists( $filePath )) { + $environments = unserialize( file_get_contents( $filePath ) ); + if (! isset( $environments[$LAN_ID][$IC_UID] )) { + return null; + } + + unset( $environments[$LAN_ID][$IC_UID] ); + file_put_contents( $filePath, serialize( $environments ) ); + + if (file_exists( PATH_CORE . "META-INF" . PATH_SEP . "translation." . $locale )) { + G::rm_dir( PATH_DATA . "META-INF" . PATH_SEP . "translation." . $locale ); + } + if (file_exists( PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po' )) { + G::rm_dir( PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po' ); + } + } + } + + public function getTranslationEnvironments () + { + $filePath = $this->envFilePath; + $envs = Array (); + + if (! file_exists( $filePath )) { + //the transaltions table file doesn't exist, then build it + + + if (! is_dir( dirname( $this->envFilePath ) )) { + G::mk_dir( dirname( $this->envFilePath ) ); + } + $translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP; + $basePOFile = $translationsPath . 'english' . PATH_SEP . 'processmaker.en.po'; + + $params = self::getInfoFromPOFile( $basePOFile ); + $this->addTranslationEnvironment( $params['LOCALE'], $params['HEADERS'], $params['COUNT'] ); + //getting more lanuguage translations + $files = glob( $translationsPath . "*.po" ); + foreach ($files as $file) { + $params = self::getInfoFromPOFile( $file ); + $this->addTranslationEnvironment( $params['LOCALE'], $params['HEADERS'], $params['COUNT'] ); + } + } + $envs = unserialize( file_get_contents( $filePath ) ); + + $environments = Array (); + foreach ($envs as $LAN_ID => $rec1) { + foreach ($rec1 as $IC_UID => $rec2) { + $environments[] = $rec2; + } + } + + return $environments; + + /* + G::LoadSystem('dbMaintenance'); + $o = new DataBaseMaintenance('localhost', 'root', 'atopml2005'); + $o->connect('wf_os'); + $r = $o->query('select * from ISO_COUNTRY'); + foreach ($r as $i=>$v) { + $r[$i]['IC_NAME'] = utf8_encode($r[$i]['IC_NAME']); + unset($r[$i]['IC_SORT_ORDER']); + } + $r1 = $o->query('select * from LANGUAGE'); + $r2 = Array(); + foreach ($r1 as $i=>$v) { + $r2[$i]['LAN_NAME'] = utf8_encode($r1[$i]['LAN_NAME']); + $r2[$i]['LAN_ID'] = utf8_encode($r1[$i]['LAN_ID']); } - - if (file_exists($filePath)) { - $environments = unserialize(file_get_contents($filePath)); - if (!isset($environments[$LAN_ID][$IC_UID])) { - return NULL; - } - - unset($environments[$LAN_ID][$IC_UID]); - file_put_contents($filePath, serialize($environments)); - - if (file_exists(PATH_CORE . "META-INF" . PATH_SEP . "translation.".$locale)) { - G::rm_dir(PATH_DATA . "META-INF" . PATH_SEP . "translation.".$locale); - } - if (file_exists(PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po')) { - G::rm_dir(PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po'); - } - } - } - - function getTranslationEnvironments(){ - $filePath = $this->envFilePath; - $envs = Array(); - - if( ! file_exists($filePath) ) { - //the transaltions table file doesn't exist, then build it - - if( ! is_dir(dirname($this->envFilePath)) ) - G::mk_dir(dirname($this->envFilePath)); - - $translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP; - $basePOFile = $translationsPath . 'english' . PATH_SEP . 'processmaker.en.po'; - - $params = self::getInfoFromPOFile($basePOFile); - $this->addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); - - //getting more lanuguage translations - $files = glob($translationsPath . "*.po"); - foreach( $files as $file ){ - $params = self::getInfoFromPOFile($file); - $this->addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); - } - } - $envs = unserialize(file_get_contents($filePath)); - - $environments = Array(); - foreach($envs as $LAN_ID => $rec1 ){ - foreach($rec1 as $IC_UID => $rec2 ){ - $environments[] = $rec2; - } - } - - return $environments; - - /*G::LoadSystem('dbMaintenance'); - $o = new DataBaseMaintenance('localhost', 'root', 'atopml2005'); - $o->connect('wf_os'); - $r = $o->query('select * from ISO_COUNTRY'); - foreach($r as $i=>$v){ - $r[$i]['IC_NAME'] = utf8_encode($r[$i]['IC_NAME']); - unset($r[$i]['IC_SORT_ORDER']); - } - $r1 = $o->query('select * from LANGUAGE'); - $r2 = Array(); - foreach($r1 as $i=>$v){ - $r2[$i]['LAN_NAME'] = utf8_encode($r1[$i]['LAN_NAME']); - $r2[$i]['LAN_ID'] = utf8_encode($r1[$i]['LAN_ID']); - } - $s = Array('ISO_COUNTRY'=>$r, 'LANGUAGE'=>$r2); - file_put_contents($translationsPath . 'pmos-translations.meta', serialize($s)); - */ - } - - function getInfoFromPOFile($file){ - G::loadClass('i18n_po'); - $POFile = new i18n_PO($file); - $POFile->readInit(); - $POHeaders = $POFile->getHeaders(); - - if( $POHeaders['X-Poedit-Country'] != '.' ) { - $country = self::getTranslationMetaByCountryName($POHeaders['X-Poedit-Country']); - } else { - $country = '.'; - } - $language = self::getTranslationMetaByLanguageName($POHeaders['X-Poedit-Language']); - - if( $language !== false ) { - if( $country !== false ) { - if( $country != '.') { - $LOCALE = $language['LAN_ID'] . '-' . $country['IC_UID']; - } else if( $country == '.' ) { - //this a trsnlation file with a language international, no country name was set - $LOCALE = $language['LAN_ID']; - } else - throw new Exception('PO File Error: "'.$file.'" has a invalid country definition!'); - } else - throw new Exception('PO File Error: "'.$file.'" has a invalid country definition!'); - } else - throw new Exception('PO File Error: "'.$file.'" has a invalid language definition!'); - - $countItems = 0; - try { - while( $rowTranslation = $POFile->getTranslation() ) { - $countItems++; - } - } catch(Exception $e) { - $countItems = '-'; - } - - return Array('LOCALE'=>$LOCALE, 'HEADERS'=>$POHeaders , 'COUNT'=>$countItems); - } - - function getTranslationEnvironment($locale){ - $filePath = $this->envFilePath; - $environments = Array(); - - if( ! file_exists($filePath) ) { - throw new Exception("The file $filePath doesn't exist"); - } - - $environments = unserialize(file_get_contents($filePath)); - if( strpos($locale, self::$localeSeparator) !== false ) { - list($LAN_ID, $IC_UID) = explode(self::localeSeparator, strtoupper($locale)); - } else { - $LAN_ID = $locale; - $IC_UID = '__INTERNATIONAL__'; - } - - if( isset($environments[$LAN_ID][$IC_UID]) ) - return $environments[$LAN_ID][$IC_UID]; - else - return false; - } - - function saveTranslationEnvironment($locale, $data){ - $filePath = $this->envFilePath; - $environments = Array(); - - if( ! file_exists($filePath) ) { - throw new Exception("The file $filePath doesn't exist"); - } - - $environments = unserialize(file_get_contents($filePath)); - if( strpos($locale, self::$localeSeparator) !== false ) { - list($LAN_ID, $IC_UID) = explode(self::localeSeparator, strtoupper($locale)); - } else { - $LAN_ID = $locale; - $IC_UID = '__INTERNATIONAL__'; - } - - $environments[$LAN_ID][$IC_UID] = $data; - file_put_contents($filePath, serialize($environments)); - } - - function getTranslationMeta(){ - $translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP; - $translationsTable = unserialize(file_get_contents($translationsPath . 'pmos-translations.meta')); - return $translationsTable; - } - - function getTranslationMetaByCountryName($IC_NAME){ - $translationsTable = self::getTranslationMeta(); - - foreach ($translationsTable['ISO_COUNTRY'] as $row) { - if( $row['IC_NAME'] == $IC_NAME ) - return $row; - } - return false; - } - - function getTranslationMetaByLanguageName($LAN_NAME){ - $translationsTable = self::getTranslationMeta(); - - foreach ($translationsTable['LANGUAGE'] as $row) { - if( $row['LAN_NAME'] == $LAN_NAME ) - return $row; - } - return false; - } -} // Translation - - - - - - - - - - + $s = Array('ISO_COUNTRY'=>$r, 'LANGUAGE'=>$r2); + file_put_contents($translationsPath . 'pmos-translations.meta', serialize($s)); + */ + } + + public function getInfoFromPOFile ($file) + { + G::loadClass( 'i18n_po' ); + $POFile = new i18n_PO( $file ); + $POFile->readInit(); + $POHeaders = $POFile->getHeaders(); + + if ($POHeaders['X-Poedit-Country'] != '.') { + $country = self::getTranslationMetaByCountryName( $POHeaders['X-Poedit-Country'] ); + } else { + $country = '.'; + } + $language = self::getTranslationMetaByLanguageName( $POHeaders['X-Poedit-Language'] ); + + if ($language !== false) { + if ($country !== false) { + if ($country != '.') { + $LOCALE = $language['LAN_ID'] . '-' . $country['IC_UID']; + } else if ($country == '.') { + //this a trsnlation file with a language international, no country name was set + $LOCALE = $language['LAN_ID']; + } else + throw new Exception( 'PO File Error: "' . $file . '" has a invalid country definition!' ); + } else + throw new Exception( 'PO File Error: "' . $file . '" has a invalid country definition!' ); + } else + throw new Exception( 'PO File Error: "' . $file . '" has a invalid language definition!' ); + + $countItems = 0; + try { + while ($rowTranslation = $POFile->getTranslation()) { + $countItems ++; + } + } catch (Exception $e) { + $countItems = '-'; + } + return Array ('LOCALE' => $LOCALE,'HEADERS' => $POHeaders,'COUNT' => $countItems); + } + + public function getTranslationEnvironment ($locale) + { + $filePath = $this->envFilePath; + $environments = Array (); + + if (! file_exists( $filePath )) { + throw new Exception( "The file $filePath doesn't exist" ); + } + + $environments = unserialize( file_get_contents( $filePath ) ); + if (strpos( $locale, self::$localeSeparator ) !== false) { + list ($LAN_ID, $IC_UID) = explode( self::localeSeparator, strtoupper( $locale ) ); + } else { + $LAN_ID = $locale; + $IC_UID = '__INTERNATIONAL__'; + } + + if (isset( $environments[$LAN_ID][$IC_UID] )) { + return $environments[$LAN_ID][$IC_UID]; + } else { + return false; + } + } + + public function saveTranslationEnvironment ($locale, $data) + { + $filePath = $this->envFilePath; + $environments = Array (); + + if (! file_exists( $filePath )) { + throw new Exception( "The file $filePath doesn't exist" ); + } + + $environments = unserialize( file_get_contents( $filePath ) ); + if (strpos( $locale, self::$localeSeparator ) !== false) { + list ($LAN_ID, $IC_UID) = explode( self::localeSeparator, strtoupper( $locale ) ); + } else { + $LAN_ID = $locale; + $IC_UID = '__INTERNATIONAL__'; + } + + $environments[$LAN_ID][$IC_UID] = $data; + file_put_contents( $filePath, serialize( $environments ) ); + } + + public function getTranslationMeta () + { + $translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP; + $translationsTable = unserialize( file_get_contents( $translationsPath . 'pmos-translations.meta' ) ); + return $translationsTable; + } + + public function getTranslationMetaByCountryName ($IC_NAME) + { + $translationsTable = self::getTranslationMeta(); + + foreach ($translationsTable['ISO_COUNTRY'] as $row) { + if ($row['IC_NAME'] == $IC_NAME) { + return $row; + } + } + return false; + } + + public function getTranslationMetaByLanguageName ($LAN_NAME) + { + $translationsTable = self::getTranslationMeta(); + + foreach ($translationsTable['LANGUAGE'] as $row) { + if ($row['LAN_NAME'] == $LAN_NAME) { + return $row; + } + } + return false; + } +} +// Translation +