From 06810f7ff0b1e37d76608a6b526d6faa862e6f27 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Tue, 29 Apr 2014 11:06:16 -0400 Subject: [PATCH 1/5] Se modifica update start event de Case Scheduler y Web Entry --- .../Project/Adapter/BpmnWorkflow.php | 22 +++++++------------ .../src/ProcessMaker/Project/Workflow.php | 6 ++--- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index eee0bf7b2..61f45383e 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -229,14 +229,14 @@ class BpmnWorkflow extends Project\Bpmn // update case scheduler if ($event && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") { - $aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'SCH_UID'=>$data["FLO_ELEMENT_ORIGIN"]); - $this->wp->updateCaseScheduler($aData); + $caseSchedulerData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"]); + $this->wp->updateCaseScheduler($data["FLO_ELEMENT_ORIGIN"], $caseSchedulerData); } // update web entry if ($event && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") { - $aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'WE_UID'=>$data["FLO_ELEMENT_ORIGIN"]); - $this->wp->updateWebEntry($aData); + $webEntryData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"]); + $this->wp->updateWebEntry($data["FLO_ELEMENT_ORIGIN"], $webEntryData); } break; } @@ -286,20 +286,14 @@ class BpmnWorkflow extends Project\Bpmn // update case scheduler if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") { - $aData = array( - 'TAS_UID'=>'', - 'SCH_UID'=>$flow->getFloElementOrigin() - ); - $this->wp->updateCaseScheduler($aData); + $caseSchedulerData = array( 'TAS_UID'=>'' ); + $this->wp->updateCaseScheduler($flow->getFloElementOrigin(), $caseSchedulerData); } // update web entry if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") { - $aData = array( - 'TAS_UID'=>'', - 'WE_UID'=>$flow->getFloElementOrigin() - ); - $this->wp->updateWebEntry($aData); + $webEntryData = array( 'TAS_UID'=>'' ); + $this->wp->updateWebEntry($flow->getFloElementOrigin(), $webEntryData); } } elseif ($flow->getFloElementOriginType() == "bpmnActivity" && diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index c484b07c5..d82606c91 100644 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -829,9 +829,10 @@ class Workflow extends Handler } } - public function updateCaseScheduler($data) + public function updateCaseScheduler($schUid, $data) { try { + $data = array_merge(array("SCH_UID" => $schUid), $data); $caseScheduler = new \CaseScheduler(); $caseScheduler->update($data); self::log("Update Case Scheduler Success!"); @@ -873,10 +874,9 @@ class Workflow extends Handler } } - public function updateWebEntry($data) + public function updateWebEntry($webEntryUid, $data) { try { - $webEntryUid = $data['WE_UID']; $webEntry = \WebEntryPeer::retrieveByPK($webEntryUid); $webEntry->fromArray($data, \BasePeer::TYPE_FIELDNAME); $webEntry->save(); From df642423e328a1a7eeaa409a37f97e0bfde4868d Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Tue, 29 Apr 2014 12:49:04 -0400 Subject: [PATCH 2/5] Se incluye validacion para el campo sch_option en Case Scheduler --- .../src/ProcessMaker/BusinessModel/CaseScheduler.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php index 2993c74e1..ad96dba4d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php @@ -529,8 +529,12 @@ class CaseScheduler } $oCaseScheduler = new \CaseScheduler(); $aFields = $oCaseScheduler->Load($sSchUID); - //$sOption = $aFields['SCH_OPTION']; - $sOption = $aData['SCH_OPTION']; + if ($aData['SCH_OPTION'] == null) { + $sOption = $aFields['SCH_OPTION']; + $aData['SCH_OPTION'] = $sOption; + } else { + $sOption = $aData['SCH_OPTION']; + } $aData['sch_repeat_stop_if_running'] = '0'; $aData['case_sh_plugin_uid'] = null; $aData = array_change_key_case($aData, CASE_UPPER); From 5c99da4b2ff0b40e415091bf853ca3756bae8b48 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Tue, 29 Apr 2014 15:57:44 -0400 Subject: [PATCH 3/5] Se agregan y se modifican validaciones de los campos out_doc_template, out_doc_current_revision, out_doc_field_mapping para OUTPUTDOCUMENTS --- .../BusinessModel/OutputDocument.php | 19 ++++++++++++------- .../Services/Api/Project/OutputDocuments.php | 5 ----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php index 4a8981856..8e7b007b7 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php @@ -83,7 +83,6 @@ class OutputDocument 'out_doc_title' => $aRow['OUT_DOC_TITLE'], 'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'], 'out_doc_filename' => $aRow['OUT_DOC_FILENAME'], - 'out_doc_template' => $aRow['OUT_DOC_TEMPLATE'], 'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'], 'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'], 'out_doc_media' => $aRow['OUT_DOC_MEDIA'], @@ -191,7 +190,6 @@ class OutputDocument 'out_doc_title' => $aRow['OUT_DOC_TITLE'], 'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'], 'out_doc_filename' => $aRow['OUT_DOC_FILENAME'], - 'out_doc_template' => $aRow['OUT_DOC_TEMPLATE'], 'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'], 'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'], 'out_doc_media' => $aRow['OUT_DOC_MEDIA'], @@ -261,6 +259,16 @@ class OutputDocument $aData['OUT_DOC_PDF_SECURITY_PERMISSIONS'] = ""; } } + if (isset($aData['OUT_DOC_CURRENT_REVISION'])) { + $oOutputDocument->setOutDocCurrentRevision($aData['OUT_DOC_CURRENT_REVISION']); + } else { + $oOutputDocument->setOutDocCurrentRevision(0); + } + if (isset($aData['OUT_DOC_FIELD_MAPPING'])) { + $oOutputDocument->setOutDocFieldMapping($aData['OUT_DOC_FIELD_MAPPING']); + } else { + $oOutputDocument->setOutDocFieldMapping(null); + } $outDocUid = $oOutputDocument->create($aData); $aData = array_change_key_case($aData, CASE_LOWER); if (isset( $aData['out_doc_pdf_security_open_password'] ) && $aData['out_doc_pdf_security_open_password'] != "") { @@ -321,10 +329,7 @@ class OutputDocument if (isset($aData['OUT_DOC_FILENAME'])) { $oOutputDocument->setOutDocFilename($aData['OUT_DOC_FILENAME']); } - if (isset($aData['OUT_DOC_TEMPLATE'])) { - $oOutputDocument->setOutDocTemplate($aData['OUT_DOC_TEMPLATE']); - } - $iResult = $oOutputDocument->save(); + $oOutputDocument->save(); $oConnection->commit(); } else { $sMessage = ''; @@ -338,7 +343,7 @@ class OutputDocument throw (new \Exception('This row does not exist!')); } } catch (\Exception $e) { - throw $e; + throw $e; } } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/OutputDocuments.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/OutputDocuments.php index 708fb8718..f55c911b4 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/OutputDocuments.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/OutputDocuments.php @@ -128,11 +128,6 @@ class OutputDocumentStructure */ public $out_doc_filename; - /** - * @var string {@from body} - */ - public $out_doc_template; - /** * @var string {@from body} {@choice TCPDF,HTML2PDF} */ From 360ac801d894b726a67ac68dd1c721b4a6a8d41a Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Wed, 30 Apr 2014 13:00:01 -0400 Subject: [PATCH 4/5] Se renombra las variables $aData para Output Documents y Case Scheduler --- .../BusinessModel/CaseScheduler.php | 426 +++++++++--------- .../BusinessModel/OutputDocument.php | 80 ++-- 2 files changed, 253 insertions(+), 253 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php index ad96dba4d..6c76422be 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php @@ -236,163 +236,163 @@ class CaseScheduler /** * Create a new case scheduler of a project * @param string $sProcessUID - * @param array $aData + * @param array $caseSchedulerData * @param string $userUID * @return array * * @access public */ - public function addCaseScheduler($sProcessUID, $aData, $userUID) + public function addCaseScheduler($sProcessUID, $caseSchedulerData, $userUID) { try { require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php"); - $aData['sch_repeat_stop_if_running'] = '0'; - $aData['case_sh_plugin_uid'] = null; - $aData = array_change_key_case($aData, CASE_UPPER); - $sOption = $aData['SCH_OPTION']; - if (empty($aData)) { + $caseSchedulerData['sch_repeat_stop_if_running'] = '0'; + $caseSchedulerData['case_sh_plugin_uid'] = null; + $caseSchedulerData = array_change_key_case($caseSchedulerData, CASE_UPPER); + $sOption = $caseSchedulerData['SCH_OPTION']; + if (empty($caseSchedulerData)) { die( 'the information sended is empty!' ); } - $arrayTaskUid = $this->getTaskUid($aData['TAS_UID']); + $arrayTaskUid = $this->getTaskUid($caseSchedulerData['TAS_UID']); if (empty($arrayTaskUid)) { - throw (new \Exception( 'Task not found for id: '. $aData['TAS_UID'])); + throw (new \Exception( 'Task not found for id: '. $caseSchedulerData['TAS_UID'])); } - if ($aData['SCH_NAME']=='') { + if ($caseSchedulerData['SCH_NAME']=='') { throw (new \Exception( 'sch_name can not be empty')); } - if ($this->existsName($sProcessUID, $aData['SCH_NAME'])) { + if ($this->existsName($sProcessUID, $caseSchedulerData['SCH_NAME'])) { throw (new \Exception( 'Duplicate Case Scheduler name')); } - $mUser = $this->getUser($aData['SCH_DEL_USER_NAME'], $aData['TAS_UID']); + $mUser = $this->getUser($caseSchedulerData['SCH_DEL_USER_NAME'], $caseSchedulerData['TAS_UID']); $oUser = \UsersPeer::retrieveByPK( $mUser ); if (is_null($oUser)) { throw (new \Exception($mUser)); } $oUserPass = $oUser->getUsrPassword(); - $aData['SCH_DEL_USER_PASS'] = $oUserPass; + $caseSchedulerData['SCH_DEL_USER_PASS'] = $oUserPass; if ($sOption != '5') { $pattern="/^([0-1][0-9]|[2][0-3])[\:]([0-5][0-9])$/"; - if (!preg_match($pattern, $aData['SCH_START_TIME'])) { + if (!preg_match($pattern, $caseSchedulerData['SCH_START_TIME'])) { throw (new \Exception( 'Invalid value specified for sch_start_time. Expecting time in HH:MM format (The time can not be increased to 23:59)')); } } $patternDate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/"; if ($sOption == '1' || $sOption == '2' || $sOption == '3') { - if (!preg_match($patternDate, $aData['SCH_START_DATE'])) { + if (!preg_match($patternDate, $caseSchedulerData['SCH_START_DATE'])) { throw (new \Exception( 'Invalid value specified for sch_start_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); } - if (!preg_match($patternDate, $aData['SCH_END_DATE'])) { + if (!preg_match($patternDate, $caseSchedulerData['SCH_END_DATE'])) { throw (new \Exception( 'Invalid value specified for sch_end_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); } - if ($aData['SCH_START_DATE'] == "") { + if ($caseSchedulerData['SCH_START_DATE'] == "") { throw (new \Exception( 'sch_start_date can not be null')); } } if ($sOption == '2') { - $aData['SCH_EVERY_DAYS'] = 1; + $caseSchedulerData['SCH_EVERY_DAYS'] = 1; } else { - $aData['SCH_EVERY_DAYS'] = 0; + $caseSchedulerData['SCH_EVERY_DAYS'] = 0; } $oCaseScheduler = new \CaseScheduler(); - $aData['SCH_UID'] = \G::generateUniqueID(); - $aData['PRO_UID'] = $sProcessUID; - $aData['SCH_STATE'] = 'ACTIVE'; - $aData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE'; - $aData['USR_UID'] = $userUID; - $aData['SCH_DEL_USER_UID'] = $aData['USR_UID']; - $sTimeTmp = $aData['SCH_START_TIME']; - $nActualTime = $aData['SCH_START_TIME']; // time(); + $caseSchedulerData['SCH_UID'] = \G::generateUniqueID(); + $caseSchedulerData['PRO_UID'] = $sProcessUID; + $caseSchedulerData['SCH_STATE'] = 'ACTIVE'; + $caseSchedulerData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE'; + $caseSchedulerData['USR_UID'] = $userUID; + $caseSchedulerData['SCH_DEL_USER_UID'] = $caseSchedulerData['USR_UID']; + $sTimeTmp = $caseSchedulerData['SCH_START_TIME']; + $nActualTime = $caseSchedulerData['SCH_START_TIME']; // time(); $sValue = ''; $sDaysPerformTask = ''; $sWeeks = ''; $sMonths = ''; $sStartDay = ''; - $aData['SCH_DAYS_PERFORM_TASK'] = ''; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = ''; switch ($sOption) { case '1': // If the option is zero, set by default 1 - $aData['SCH_DAYS_PERFORM_TASK'] = '1'; - $sValue = $aData['SCH_DAYS_PERFORM_TASK']; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = '1'; + $sValue = $caseSchedulerData['SCH_DAYS_PERFORM_TASK']; switch ($sValue) { case '1': - $aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'] . '|1'; - $aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; - $aData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0'; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] . '|1'; + $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; + $caseSchedulerData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0'; break; case '2': - $aData['SCH_OPTION'] = '2'; - $aData['SCH_EVERY_DAYS'] = '1'; //check - $aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check + $caseSchedulerData['SCH_OPTION'] = '2'; + $caseSchedulerData['SCH_EVERY_DAYS'] = '1'; //check + $caseSchedulerData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check break; case '3': // Every [n] Days - $sDaysPerformTask = $aData['SCH_DAYS_PERFORM_TASK']; - $aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK']; + $sDaysPerformTask = $caseSchedulerData['SCH_DAYS_PERFORM_TASK']; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK']; break; } break; case '2': // If the option is zero, set by default 1 - if ($aData['SCH_WEEK_DAYS'] == "") { + if ($caseSchedulerData['SCH_WEEK_DAYS'] == "") { throw (new \Exception( 'sch_week_days can not be null')); } else { - $weeks = $aData['SCH_WEEK_DAYS']; + $weeks = $caseSchedulerData['SCH_WEEK_DAYS']; $weeks = explode("|", $weeks); foreach ($weeks as $row) { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7") { - $aData['SCH_WEEK_DAYS'] = $aData['SCH_WEEK_DAYS']; + $caseSchedulerData['SCH_WEEK_DAYS'] = $caseSchedulerData['SCH_WEEK_DAYS']; } else { throw (new \Exception( 'Invalid value specified for sch_week_days')); } } } - $aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; - if (empty( $aData['SCH_EVERY_DAYS'] )) { + $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; + if (empty( $caseSchedulerData['SCH_EVERY_DAYS'] )) { $nEveryDays = 1; } else { - $nEveryDays = $aData['SCH_EVERY_DAYS']; + $nEveryDays = $caseSchedulerData['SCH_EVERY_DAYS']; } - $aData['SCH_EVERY_DAYS'] = $nEveryDays; - if (! empty( $aData['SCH_WEEK_DAYS'] )) { - $aWeekDays = $aData['SCH_WEEK_DAYS']; + $caseSchedulerData['SCH_EVERY_DAYS'] = $nEveryDays; + if (! empty( $caseSchedulerData['SCH_WEEK_DAYS'] )) { + $aWeekDays = $caseSchedulerData['SCH_WEEK_DAYS']; } - $sStartTime = $aData['SCH_START_TIME']; - $sWeeks = $aData['SCH_WEEK_DAYS'] . '|'; + $sStartTime = $caseSchedulerData['SCH_START_TIME']; + $sWeeks = $caseSchedulerData['SCH_WEEK_DAYS'] . '|'; break; case '3': - $nStartDay = $aData['SCH_START_DAY']; + $nStartDay = $caseSchedulerData['SCH_START_DAY']; if ($nStartDay == "") { throw (new \Exception( 'sch_start_day can not be null')); } if ($nStartDay == 1) { - if ($aData['SCH_START_DAY_OPT_1'] == "") { + if ($caseSchedulerData['SCH_START_DAY_OPT_1'] == "") { throw (new \Exception( 'sch_start_day_opt_1 can not be null')); } - $temp = $aData['SCH_START_DAY_OPT_1']; + $temp = $caseSchedulerData['SCH_START_DAY_OPT_1']; $temp = (int)$temp; if ($temp >= 1 && $temp <= 31) { - $aData['SCH_START_DAY_OPT_1'] = $aData['SCH_START_DAY_OPT_1']; + $caseSchedulerData['SCH_START_DAY_OPT_1'] = $caseSchedulerData['SCH_START_DAY_OPT_1']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_1. Must be between 1 and 31')); } - $aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_1']; + $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_1']; } else { - if ($aData['SCH_START_DAY_OPT_2'] == "") { + if ($caseSchedulerData['SCH_START_DAY_OPT_2'] == "") { throw (new \Exception( 'sch_start_day_opt_2 can not be null')); } - $aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_2']; - $optionTwo = $aData['SCH_START_DAY_OPT_2']{0}; + $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_2']; + $optionTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{0}; if ($optionTwo == "1" || $optionTwo == "2" || $optionTwo == "3" || $optionTwo == "4" || $optionTwo == "5") { - $aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; + $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); } - $pipelineTwo = $aData['SCH_START_DAY_OPT_2']{1}; + $pipelineTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{1}; if ($pipelineTwo == "|") { - $aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; + $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); } - $dayTwo = $aData['SCH_START_DAY_OPT_2']{2}; + $dayTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{2}; if ($dayTwo == "1" || $dayTwo == "2" || $dayTwo == "3" || $dayTwo == "4" || $dayTwo == "5" || $dayTwo == "6" || $dayTwo == "7") { - $aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; + $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); } @@ -400,22 +400,22 @@ class CaseScheduler if ($nStartDay == "") { throw (new \Exception( 'sch_start_day can not be null')); } - if ($aData['SCH_MONTHS'] == "") { + if ($caseSchedulerData['SCH_MONTHS'] == "") { throw (new \Exception( 'sch_months can not be null')); } - if (! empty( $aData['SCH_MONTHS'] )) { - $aMonths = $aData['SCH_MONTHS']; + if (! empty( $caseSchedulerData['SCH_MONTHS'] )) { + $aMonths = $caseSchedulerData['SCH_MONTHS']; $aMonths = explode("|", $aMonths); foreach ($aMonths as $row) { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7"|| $row == "8" || $row == "9" || $row == "10"|| $row == "11" || $row == "12") { - $aData['SCH_MONTHS'] = $aData['SCH_MONTHS']; + $caseSchedulerData['SCH_MONTHS'] = $caseSchedulerData['SCH_MONTHS']; } else { throw (new \Exception( 'Invalid value specified for sch_months')); } } } - $sMonths = $aData['SCH_MONTHS']; - $sStartDay = $aData['SCH_START_DAY']; + $sMonths = $caseSchedulerData['SCH_MONTHS']; + $sStartDay = $caseSchedulerData['SCH_START_DAY']; $sValue = $nStartDay; break; } @@ -424,9 +424,9 @@ class CaseScheduler if ($sStartDay == '') { $sStartDay = date('Y-m-d'); } else { - $size = strlen($aData['SCH_START_DAY']); + $size = strlen($caseSchedulerData['SCH_START_DAY']); if ($size > 4) { - $aaStartDay = explode( "|", $aData['SCH_START_DAY'] ); + $aaStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] ); $aaStartDay[0] = $aaStartDay[0]; $aaStartDay[1] = $aaStartDay[1]; $aaStartDay[2]= ($aaStartDay[2] == 7 ? 1 : $aaStartDay[2]); @@ -435,75 +435,75 @@ class CaseScheduler } $dCurrentDay = date("d"); $dCurrentMonth = date("m"); - $aStartDay = explode( "|", $aData['SCH_START_DAY'] ); + $aStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] ); if ($sOption == '3' && $aStartDay[0] == '1') { $monthsArray = explode( "|", $sMonths ); foreach ($monthsArray as $row) { if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { - $startTime = $aData['SCH_START_TIME'] . ":00"; - $aData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; + $startTime = $caseSchedulerData['SCH_START_TIME'] . ":00"; + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; break; } else { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); } } } else { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); } } else { if ($sOption == '4') { $sDateTmp = date('Y-m-d'); - $aData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); - $aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; - $aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; + $caseSchedulerData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); + $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME']; + $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_START_TIME']; } - $aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $caseSchedulerData['SCH_START_TIME']; if ($sOption == '5') { - if ($aData['SCH_START_DATE'] != '') { - $sDateTmp = $aData['SCH_START_DATE']; + if ($caseSchedulerData['SCH_START_DATE'] != '') { + $sDateTmp = $caseSchedulerData['SCH_START_DATE']; } else { $sDateTmp = date('Y-m-d'); - $aData['SCH_START_DATE'] = $sDateTmp; + $caseSchedulerData['SCH_START_DATE'] = $sDateTmp; } - $aData['SCH_END_DATE'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); - $aData['SCH_START_TIME'] = time(); - $aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; - if ($aData['SCH_REPEAT_EVERY'] == "") { + $caseSchedulerData['SCH_END_DATE'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); + $caseSchedulerData['SCH_START_TIME'] = time(); + $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME']; + if ($caseSchedulerData['SCH_REPEAT_EVERY'] == "") { throw (new \Exception( 'sch_repeat_every can not be null')); } $patternHour="/^([0-1][0-9]|[2][0-3])[\.]([0-5][0-9])$/"; - if (!preg_match($patternHour, $aData['SCH_REPEAT_EVERY'])) { + if (!preg_match($patternHour, $caseSchedulerData['SCH_REPEAT_EVERY'])) { throw (new \Exception( 'Invalid value specified for sch_repeat_every. Expecting time in HH.MM format')); } - $nextRun = $aData['SCH_REPEAT_EVERY'] * 60 * 60; - $aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; - $date = $aData['SCH_START_TIME']; + $nextRun = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60 * 60; + $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY']; + $date = $caseSchedulerData['SCH_START_TIME']; $date += $nextRun; $date = date("Y-m-d H:i", $date); - $aData['SCH_TIME_NEXT_RUN'] = $date; + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $date; } } - if (trim( $aData['SCH_END_DATE'] ) != '') { - $aData['SCH_END_DATE'] = $aData['SCH_END_DATE']; + if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') { + $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE']; } - if (! empty( $aData['SCH_REPEAT_TASK_CHK'] )) { - $nOptEvery = $aData['SCH_REPEAT_EVERY_OPT']; + if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) { + $nOptEvery = $caseSchedulerData['SCH_REPEAT_EVERY_OPT']; if ($nOptEvery == 2) { - $aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'] * 60; + $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60; } else { - $aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; + $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY']; } } - if ((isset( $aData['CASE_SH_PLUGIN_UID'] )) && ($aData['CASE_SH_PLUGIN_UID'] != "")) { - $aData['CASE_SH_PLUGIN_UID'] = $aData['CASE_SH_PLUGIN_UID']; + if ((isset( $caseSchedulerData['CASE_SH_PLUGIN_UID'] )) && ($caseSchedulerData['CASE_SH_PLUGIN_UID'] != "")) { + $caseSchedulerData['CASE_SH_PLUGIN_UID'] = $caseSchedulerData['CASE_SH_PLUGIN_UID']; } // check this data - $aData['SCH_REPEAT_UNTIL'] = ''; - $aData['SCH_REPEAT_STOP_IF_RUNNING'] = '0'; - $aData['CASE_SH_PLUGIN_UID'] = null; + $caseSchedulerData['SCH_REPEAT_UNTIL'] = ''; + $caseSchedulerData['SCH_REPEAT_STOP_IF_RUNNING'] = '0'; + $caseSchedulerData['CASE_SH_PLUGIN_UID'] = null; // - $oCaseScheduler->create( $aData ); - $oCriteria = $this->getCaseScheduler($sProcessUID, $aData['SCH_UID']); + $oCaseScheduler->create( $caseSchedulerData ); + $oCriteria = $this->getCaseScheduler($sProcessUID, $caseSchedulerData['SCH_UID']); return $oCriteria; } catch (Exception $oException) { die( $oException->getMessage() ); @@ -513,181 +513,181 @@ class CaseScheduler /** * Update case scheduler for a project * @param string $sProcessUID - * @param array $aData + * @param array $caseSchedulerData * @param string $userUID * @param string $sSchUID * * @access public */ - public function updateCaseScheduler($sProcessUID, $aData, $userUID, $sSchUID = '') + public function updateCaseScheduler($sProcessUID, $caseSchedulerData, $userUID, $sSchUID = '') { try { require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php"); - $aData = array_change_key_case($aData, CASE_UPPER); - if (empty( $aData )) { + $caseSchedulerData = array_change_key_case($caseSchedulerData, CASE_UPPER); + if (empty( $caseSchedulerData )) { die( 'The information sended is empty!' ); } $oCaseScheduler = new \CaseScheduler(); $aFields = $oCaseScheduler->Load($sSchUID); - if ($aData['SCH_OPTION'] == null) { + if ($caseSchedulerData['SCH_OPTION'] == null) { $sOption = $aFields['SCH_OPTION']; - $aData['SCH_OPTION'] = $sOption; + $caseSchedulerData['SCH_OPTION'] = $sOption; } else { - $sOption = $aData['SCH_OPTION']; + $sOption = $caseSchedulerData['SCH_OPTION']; } - $aData['sch_repeat_stop_if_running'] = '0'; - $aData['case_sh_plugin_uid'] = null; - $aData = array_change_key_case($aData, CASE_UPPER); - if (empty($aData)) { + $caseSchedulerData['sch_repeat_stop_if_running'] = '0'; + $caseSchedulerData['case_sh_plugin_uid'] = null; + $caseSchedulerData = array_change_key_case($caseSchedulerData, CASE_UPPER); + if (empty($caseSchedulerData)) { die( 'the information sended is empty!' ); } - $arrayTaskUid = $this->getTaskUid($aData['TAS_UID']); + $arrayTaskUid = $this->getTaskUid($caseSchedulerData['TAS_UID']); if (empty($arrayTaskUid)) { - throw (new \Exception( 'Task not found for id: '. $aData['TAS_UID'])); + throw (new \Exception( 'Task not found for id: '. $caseSchedulerData['TAS_UID'])); } - if ($aData['SCH_NAME']=='') { + if ($caseSchedulerData['SCH_NAME']=='') { throw (new \Exception( 'sch_name can not be empty')); } - if ($this->existsNameUpdate($sSchUID, $aData['SCH_NAME'])) { + if ($this->existsNameUpdate($sSchUID, $caseSchedulerData['SCH_NAME'])) { throw (new \Exception( 'Duplicate Case Scheduler name')); } - $mUser = $this->getUser($aData['SCH_DEL_USER_NAME'], $aData['TAS_UID']); + $mUser = $this->getUser($caseSchedulerData['SCH_DEL_USER_NAME'], $caseSchedulerData['TAS_UID']); $oUser = \UsersPeer::retrieveByPK( $mUser ); if (is_null($oUser)) { throw (new \Exception($mUser)); } $oUserPass = $oUser->getUsrPassword(); - $aData['SCH_DEL_USER_PASS'] = $oUserPass; + $caseSchedulerData['SCH_DEL_USER_PASS'] = $oUserPass; if ($sOption != '5') { $pattern="/^([0-1][0-9]|[2][0-3])[\:]([0-5][0-9])$/"; - if (!preg_match($pattern, $aData['SCH_START_TIME'])) { + if (!preg_match($pattern, $caseSchedulerData['SCH_START_TIME'])) { throw (new \Exception( 'Invalid value specified for sch_start_time. Expecting time in HH:MM format (The time can not be increased to 23:59)')); } } $patternDate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/"; if ($sOption == '1' || $sOption == '2' || $sOption == '3') { - if (!preg_match($patternDate, $aData['SCH_START_DATE'])) { + if (!preg_match($patternDate, $caseSchedulerData['SCH_START_DATE'])) { throw (new \Exception( 'Invalid value specified for sch_start_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); } - if (!preg_match($patternDate, $aData['SCH_END_DATE'])) { + if (!preg_match($patternDate, $caseSchedulerData['SCH_END_DATE'])) { throw (new \Exception( 'Invalid value specified for sch_end_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); } - if ($aData['SCH_START_DATE'] == "") { + if ($caseSchedulerData['SCH_START_DATE'] == "") { throw (new \Exception( 'sch_start_date can not be null')); } } if ($sOption == '2') { - $aData['SCH_EVERY_DAYS'] = 1; + $caseSchedulerData['SCH_EVERY_DAYS'] = 1; } else { - $aData['SCH_EVERY_DAYS'] = 0; + $caseSchedulerData['SCH_EVERY_DAYS'] = 0; } $oCaseScheduler = new \CaseScheduler(); - $aData['SCH_UID'] = $sSchUID; - $aData['PRO_UID'] = $sProcessUID; - if ($aData['SCH_STATE'] == "" || $aData['SCH_STATE'] == null) { + $caseSchedulerData['SCH_UID'] = $sSchUID; + $caseSchedulerData['PRO_UID'] = $sProcessUID; + if ($caseSchedulerData['SCH_STATE'] == "" || $caseSchedulerData['SCH_STATE'] == null) { throw (new \Exception( 'sch_state can not be null')); } else { - if ($aData['SCH_STATE'] == 'ACTIVE') { - $aData['SCH_LAST_STATE'] = 'CREATED'; + if ($caseSchedulerData['SCH_STATE'] == 'ACTIVE') { + $caseSchedulerData['SCH_LAST_STATE'] = 'CREATED'; } else { - $aData['SCH_LAST_STATE'] = 'ACTIVE'; + $caseSchedulerData['SCH_LAST_STATE'] = 'ACTIVE'; } } - $aData['USR_UID'] = $userUID; - $aData['SCH_DEL_USER_UID'] = $aData['USR_UID']; - $sTimeTmp = $aData['SCH_START_TIME']; - $nActualTime = $aData['SCH_START_TIME']; // time(); + $caseSchedulerData['USR_UID'] = $userUID; + $caseSchedulerData['SCH_DEL_USER_UID'] = $caseSchedulerData['USR_UID']; + $sTimeTmp = $caseSchedulerData['SCH_START_TIME']; + $nActualTime = $caseSchedulerData['SCH_START_TIME']; // time(); $sValue = ''; $sDaysPerformTask = ''; $sWeeks = ''; $sMonths = ''; $sStartDay = ''; - $aData['SCH_DAYS_PERFORM_TASK'] = ''; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = ''; switch ($sOption) { case '1': // If the option is zero, set by default 1 - $aData['SCH_DAYS_PERFORM_TASK'] = '1'; - $sValue = $aData['SCH_DAYS_PERFORM_TASK']; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = '1'; + $sValue = $caseSchedulerData['SCH_DAYS_PERFORM_TASK']; switch ($sValue) { case '1': - $aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'] . '|1'; - $aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; - $aData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0'; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] . '|1'; + $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; + $caseSchedulerData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0'; break; case '2': - $aData['SCH_OPTION'] = '2'; - $aData['SCH_EVERY_DAYS'] = '1'; //check - $aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check + $caseSchedulerData['SCH_OPTION'] = '2'; + $caseSchedulerData['SCH_EVERY_DAYS'] = '1'; //check + $caseSchedulerData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check break; case '3': // Every [n] Days - $sDaysPerformTask = $aData['SCH_DAYS_PERFORM_TASK']; - $aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK']; + $sDaysPerformTask = $caseSchedulerData['SCH_DAYS_PERFORM_TASK']; + $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK']; break; } break; case '2': // If the option is zero, set by default 1 - if ($aData['SCH_WEEK_DAYS'] == "") { + if ($caseSchedulerData['SCH_WEEK_DAYS'] == "") { throw (new \Exception( 'sch_week_days can not be null')); } else { - $weeks = $aData['SCH_WEEK_DAYS']; + $weeks = $caseSchedulerData['SCH_WEEK_DAYS']; $weeks = explode("|", $weeks); foreach ($weeks as $row) { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7") { - $aData['SCH_WEEK_DAYS'] = $aData['SCH_WEEK_DAYS']; + $caseSchedulerData['SCH_WEEK_DAYS'] = $caseSchedulerData['SCH_WEEK_DAYS']; } else { throw (new \Exception( 'Invalid value specified for sch_week_days')); } } } - $aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; - if (empty( $aData['SCH_EVERY_DAYS'] )) { + $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; + if (empty( $caseSchedulerData['SCH_EVERY_DAYS'] )) { $nEveryDays = 1; } else { - $nEveryDays = $aData['SCH_EVERY_DAYS']; + $nEveryDays = $caseSchedulerData['SCH_EVERY_DAYS']; } - $aData['SCH_EVERY_DAYS'] = $nEveryDays; - if (! empty( $aData['SCH_WEEK_DAYS'] )) { - $aWeekDays = $aData['SCH_WEEK_DAYS']; + $caseSchedulerData['SCH_EVERY_DAYS'] = $nEveryDays; + if (! empty( $caseSchedulerData['SCH_WEEK_DAYS'] )) { + $aWeekDays = $caseSchedulerData['SCH_WEEK_DAYS']; } - $sStartTime = $aData['SCH_START_TIME']; - $sWeeks = $aData['SCH_WEEK_DAYS'] . '|'; + $sStartTime = $caseSchedulerData['SCH_START_TIME']; + $sWeeks = $caseSchedulerData['SCH_WEEK_DAYS'] . '|'; break; case '3': - $nStartDay = $aData['SCH_START_DAY']; + $nStartDay = $caseSchedulerData['SCH_START_DAY']; if ($nStartDay == "") { throw (new \Exception( 'sch_start_day can not be null')); } if ($nStartDay == 1) { - if ($aData['SCH_START_DAY_OPT_1'] == "") { + if ($caseSchedulerData['SCH_START_DAY_OPT_1'] == "") { throw (new \Exception( 'sch_start_day_opt_1 can not be null')); } - $temp = $aData['SCH_START_DAY_OPT_1']; + $temp = $caseSchedulerData['SCH_START_DAY_OPT_1']; $temp = (int)$temp; if ($temp >= 1 && $temp <= 31) { - $aData['SCH_START_DAY_OPT_1'] = $aData['SCH_START_DAY_OPT_1']; + $caseSchedulerData['SCH_START_DAY_OPT_1'] = $caseSchedulerData['SCH_START_DAY_OPT_1']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_1. Must be between 1 and 31')); } - $aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_1']; + $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_1']; } else { - if ($aData['SCH_START_DAY_OPT_2'] == "") { + if ($caseSchedulerData['SCH_START_DAY_OPT_2'] == "") { throw (new \Exception( 'sch_start_day_opt_2 can not be null')); } - $aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_2']; - $optionTwo = $aData['SCH_START_DAY_OPT_2']{0}; + $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_2']; + $optionTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{0}; if ($optionTwo == "1" || $optionTwo == "2" || $optionTwo == "3" || $optionTwo == "4" || $optionTwo == "5") { - $aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; + $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); } - $pipelineTwo = $aData['SCH_START_DAY_OPT_2']{1}; + $pipelineTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{1}; if ($pipelineTwo == "|") { - $aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; + $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); } - $dayTwo = $aData['SCH_START_DAY_OPT_2']{2}; + $dayTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{2}; if ($dayTwo == "1" || $dayTwo == "2" || $dayTwo == "3" || $dayTwo == "4" || $dayTwo == "5" || $dayTwo == "6" || $dayTwo == "7") { - $aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; + $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2']; } else { throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); } @@ -695,22 +695,22 @@ class CaseScheduler if ($nStartDay == "") { throw (new \Exception( 'sch_start_day can not be null')); } - if ($aData['SCH_MONTHS'] == "") { + if ($caseSchedulerData['SCH_MONTHS'] == "") { throw (new \Exception( 'sch_months can not be null')); } - if (! empty( $aData['SCH_MONTHS'] )) { - $aMonths = $aData['SCH_MONTHS']; + if (! empty( $caseSchedulerData['SCH_MONTHS'] )) { + $aMonths = $caseSchedulerData['SCH_MONTHS']; $aMonths = explode("|", $aMonths); foreach ($aMonths as $row) { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7"|| $row == "8" || $row == "9" || $row == "10"|| $row == "11" || $row == "12") { - $aData['SCH_MONTHS'] = $aData['SCH_MONTHS']; + $caseSchedulerData['SCH_MONTHS'] = $caseSchedulerData['SCH_MONTHS']; } else { throw (new \Exception( 'Invalid value specified for sch_months')); } } } - $sMonths = $aData['SCH_MONTHS']; - $sStartDay = $aData['SCH_START_DAY']; + $sMonths = $caseSchedulerData['SCH_MONTHS']; + $sStartDay = $caseSchedulerData['SCH_START_DAY']; $sValue = $nStartDay; break; } @@ -719,9 +719,9 @@ class CaseScheduler if ($sStartDay == '') { $sStartDay = date('Y-m-d'); } else { - $size = strlen($aData['SCH_START_DAY']); + $size = strlen($caseSchedulerData['SCH_START_DAY']); if ($size > 4) { - $aaStartDay = explode( "|", $aData['SCH_START_DAY'] ); + $aaStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] ); $aaStartDay[0] = $aaStartDay[0]; $aaStartDay[1] = $aaStartDay[1]; $aaStartDay[2]= ($aaStartDay[2] == 7 ? 1 : $aaStartDay[2]); @@ -730,75 +730,75 @@ class CaseScheduler } $dCurrentDay = date("d"); $dCurrentMonth = date("m"); - $aStartDay = explode( "|", $aData['SCH_START_DAY'] ); + $aStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] ); $sDateTmp = ''; if ($sOption == '3' && $aStartDay[0] == '1') { $monthsArray = explode( "|", $sMonths ); foreach ($monthsArray as $row) { if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { - $startTime = $aData['SCH_START_TIME'] . ":00"; - $aData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; + $startTime = $caseSchedulerData['SCH_START_TIME'] . ":00"; + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; break; } else { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); } } } else { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); } } else { if ($sOption == '4') { $sDateTmp = date('Y-m-d'); - $aData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); - $aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; - $aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; + $caseSchedulerData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); + $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME']; + $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_START_TIME']; } - $aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $caseSchedulerData['SCH_START_TIME']; if ($sOption == '5') { - if ($aData['SCH_START_DATE'] != '') { - $sDateTmp = $aData['SCH_START_DATE']; + if ($caseSchedulerData['SCH_START_DATE'] != '') { + $sDateTmp = $caseSchedulerData['SCH_START_DATE']; } else { $sDateTmp = date('Y-m-d'); - $aData['SCH_START_DATE'] = $sDateTmp; + $caseSchedulerData['SCH_START_DATE'] = $sDateTmp; } - $aData['SCH_END_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); - $aData['SCH_START_TIME'] = time(); - $aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; - if ($aData['SCH_REPEAT_EVERY'] == "") { + $caseSchedulerData['SCH_END_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); + $caseSchedulerData['SCH_START_TIME'] = time(); + $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME']; + if ($caseSchedulerData['SCH_REPEAT_EVERY'] == "") { throw (new \Exception( 'sch_repeat_every can not be null')); } $patternHour="/^([0-1][0-9]|[2][0-3])[\.]([0-5][0-9])$/"; - if (!preg_match($patternHour, $aData['SCH_REPEAT_EVERY'])) { + if (!preg_match($patternHour, $caseSchedulerData['SCH_REPEAT_EVERY'])) { throw (new \Exception( 'Invalid value specified for sch_repeat_every. Expecting time in HH.MM format')); } - $nextRun = $aData['SCH_REPEAT_EVERY'] * 60 * 60; - $aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; - $date = $aData['SCH_START_TIME']; + $nextRun = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60 * 60; + $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY']; + $date = $caseSchedulerData['SCH_START_TIME']; $date += $nextRun; $date = date("Y-m-d H:i", $date); - $aData['SCH_TIME_NEXT_RUN'] = $date; + $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $date; } } - if (trim( $aData['SCH_END_DATE'] ) != '') { - $aData['SCH_END_DATE'] = $aData['SCH_END_DATE']; + if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') { + $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE']; } - if (! empty( $aData['SCH_REPEAT_TASK_CHK'] )) { - $nOptEvery = $aData['SCH_REPEAT_EVERY_OPT']; + if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) { + $nOptEvery = $caseSchedulerData['SCH_REPEAT_EVERY_OPT']; if ($nOptEvery == 2) { - $aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'] * 60; + $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60; } else { - $aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; + $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY']; } } - if ((isset( $aData['CASE_SH_PLUGIN_UID'] )) && ($aData['CASE_SH_PLUGIN_UID'] != "")) { - $aData['CASE_SH_PLUGIN_UID'] = $aData['CASE_SH_PLUGIN_UID']; + if ((isset( $caseSchedulerData['CASE_SH_PLUGIN_UID'] )) && ($caseSchedulerData['CASE_SH_PLUGIN_UID'] != "")) { + $caseSchedulerData['CASE_SH_PLUGIN_UID'] = $caseSchedulerData['CASE_SH_PLUGIN_UID']; } // check this data - $aData['SCH_REPEAT_UNTIL'] = ''; - $aData['SCH_REPEAT_STOP_IF_RUNNING'] = '0'; - $aData['CASE_SH_PLUGIN_UID'] = null; + $caseSchedulerData['SCH_REPEAT_UNTIL'] = ''; + $caseSchedulerData['SCH_REPEAT_STOP_IF_RUNNING'] = '0'; + $caseSchedulerData['CASE_SH_PLUGIN_UID'] = null; // - $oCaseScheduler->Update($aData); + $oCaseScheduler->Update($caseSchedulerData); $oCriteria = $this->getCaseScheduler($sProcessUID, $sSchUID); return $oCriteria; } catch (\Exception $e) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php index 8e7b007b7..2f14f4b7d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php @@ -220,67 +220,67 @@ class OutputDocument /** * Create a new output document for a project * @param string $sProcessUID - * @param array $aData + * @param array $outputDocumentData * @return array * * @access public */ - public function addOutputDocument($sProcessUID, $aData) + public function addOutputDocument($sProcessUID, $outputDocumentData) { - $pemission = $aData['out_doc_pdf_security_permissions']; + $pemission = $outputDocumentData['out_doc_pdf_security_permissions']; $pemission = explode("|", $pemission); foreach ($pemission as $row) { if ($row == "print" || $row == "modify" || $row == "copy" || $row == "forms" || $row == "") { - $aData['out_doc_pdf_security_permissions'] = $aData['out_doc_pdf_security_permissions']; + $outputDocumentData['out_doc_pdf_security_permissions'] = $outputDocumentData['out_doc_pdf_security_permissions']; } else { throw (new \Exception( 'Invalid value specified for out_doc_pdf_security_permissions')); } } try { require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "OutputDocument.php"); - $aData = array_change_key_case($aData, CASE_UPPER); - $aData['PRO_UID'] = $sProcessUID; + $outputDocumentData = array_change_key_case($outputDocumentData, CASE_UPPER); + $outputDocumentData['PRO_UID'] = $sProcessUID; //Verify data $process = new \Process(); if (!$process->exists($sProcessUID)) { throw (new \Exception(str_replace(array("{0}", "{1}"), array($sProcessUID, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}"))); } - if ($aData["OUT_DOC_TITLE"]=="") { + if ($outputDocumentData["OUT_DOC_TITLE"]=="") { throw (new \Exception( 'Invalid value specified for out_doc_title, can not be null')); } - if (isset($aData["OUT_DOC_TITLE"]) && $this->existsTitle($sProcessUID, $aData["OUT_DOC_TITLE"])) { + if (isset($outputDocumentData["OUT_DOC_TITLE"]) && $this->existsTitle($sProcessUID, $outputDocumentData["OUT_DOC_TITLE"])) { throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE"))); } $oOutputDocument = new \OutputDocument(); - if (isset( $aData['OUT_DOC_TITLE'] ) && $aData['OUT_DOC_TITLE'] != '') { - if (isset( $aData['OUT_DOC_PDF_SECURITY_ENABLED'] ) && $aData['OUT_DOC_PDF_SECURITY_ENABLED'] == "0") { - $aData['OUT_DOC_PDF_SECURITY_OPEN_PASSWORD'] = ""; - $aData['OUT_DOC_PDF_SECURITY_OWNER_PASSWORD'] = ""; - $aData['OUT_DOC_PDF_SECURITY_PERMISSIONS'] = ""; + if (isset( $outputDocumentData['OUT_DOC_TITLE'] ) && $outputDocumentData['OUT_DOC_TITLE'] != '') { + if (isset( $outputDocumentData['OUT_DOC_PDF_SECURITY_ENABLED'] ) && $outputDocumentData['OUT_DOC_PDF_SECURITY_ENABLED'] == "0") { + $outputDocumentData['OUT_DOC_PDF_SECURITY_OPEN_PASSWORD'] = ""; + $outputDocumentData['OUT_DOC_PDF_SECURITY_OWNER_PASSWORD'] = ""; + $outputDocumentData['OUT_DOC_PDF_SECURITY_PERMISSIONS'] = ""; } } - if (isset($aData['OUT_DOC_CURRENT_REVISION'])) { - $oOutputDocument->setOutDocCurrentRevision($aData['OUT_DOC_CURRENT_REVISION']); + if (isset($outputDocumentData['OUT_DOC_CURRENT_REVISION'])) { + $oOutputDocument->setOutDocCurrentRevision($outputDocumentData['OUT_DOC_CURRENT_REVISION']); } else { $oOutputDocument->setOutDocCurrentRevision(0); } - if (isset($aData['OUT_DOC_FIELD_MAPPING'])) { - $oOutputDocument->setOutDocFieldMapping($aData['OUT_DOC_FIELD_MAPPING']); + if (isset($outputDocumentData['OUT_DOC_FIELD_MAPPING'])) { + $oOutputDocument->setOutDocFieldMapping($outputDocumentData['OUT_DOC_FIELD_MAPPING']); } else { $oOutputDocument->setOutDocFieldMapping(null); } - $outDocUid = $oOutputDocument->create($aData); - $aData = array_change_key_case($aData, CASE_LOWER); - if (isset( $aData['out_doc_pdf_security_open_password'] ) && $aData['out_doc_pdf_security_open_password'] != "") { - $aData['out_doc_pdf_security_open_password'] = \G::encrypt( $aData['out_doc_pdf_security_open_password'], $outDocUid ); - $aData['out_doc_pdf_security_owner_password'] = \G::encrypt( $aData['out_doc_pdf_security_owner_password'], $outDocUid ); + $outDocUid = $oOutputDocument->create($outputDocumentData); + $outputDocumentData = array_change_key_case($outputDocumentData, CASE_LOWER); + if (isset( $outputDocumentData['out_doc_pdf_security_open_password'] ) && $outputDocumentData['out_doc_pdf_security_open_password'] != "") { + $outputDocumentData['out_doc_pdf_security_open_password'] = \G::encrypt( $outputDocumentData['out_doc_pdf_security_open_password'], $outDocUid ); + $outputDocumentData['out_doc_pdf_security_owner_password'] = \G::encrypt( $outputDocumentData['out_doc_pdf_security_owner_password'], $outDocUid ); } - $this->updateOutputDocument($sProcessUID, $aData, 1, $outDocUid); + $this->updateOutputDocument($sProcessUID, $outputDocumentData, 1, $outDocUid); //Return - unset($aData["PRO_UID"]); - $aData = array_change_key_case($aData, CASE_LOWER); - $aData["out_doc_uid"] = $outDocUid; - return $aData; + unset($outputDocumentData["PRO_UID"]); + $outputDocumentData = array_change_key_case($outputDocumentData, CASE_LOWER); + $outputDocumentData["out_doc_uid"] = $outDocUid; + return $outputDocumentData; } catch (\Exception $e) { throw $e; } @@ -289,45 +289,45 @@ class OutputDocument /** * Update a output document for a project * @param string $sProcessUID - * @param array $aData + * @param array $outputDocumentData * @param string $sOutputDocumentUID * @param int $sFlag * * @access public */ - public function updateOutputDocument($sProcessUID, $aData, $sFlag, $sOutputDocumentUID = '') + public function updateOutputDocument($sProcessUID, $outputDocumentData, $sFlag, $sOutputDocumentUID = '') { $oConnection = \Propel::getConnection(\OutputDocumentPeer::DATABASE_NAME); - $pemission = $aData['out_doc_pdf_security_permissions']; + $pemission = $outputDocumentData['out_doc_pdf_security_permissions']; $pemission = explode("|", $pemission); foreach ($pemission as $row) { if ($row == "print" || $row == "modify" || $row == "copy" || $row == "forms" || $row == "") { - $aData['out_doc_pdf_security_permissions'] = $aData['out_doc_pdf_security_permissions']; + $outputDocumentData['out_doc_pdf_security_permissions'] = $outputDocumentData['out_doc_pdf_security_permissions']; } else { throw (new \Exception( 'Invalid value specified for out_doc_pdf_security_permissions')); } } try { - $aData = array_change_key_case($aData, CASE_UPPER); + $outputDocumentData = array_change_key_case($outputDocumentData, CASE_UPPER); $oOutputDocument = \OutputDocumentPeer::retrieveByPK($sOutputDocumentUID); if (!is_null($oOutputDocument)) { - $oOutputDocument->fromArray($aData, \BasePeer::TYPE_FIELDNAME); + $oOutputDocument->fromArray($outputDocumentData, \BasePeer::TYPE_FIELDNAME); if ($oOutputDocument->validate()) { $oConnection->begin(); - if (isset($aData['OUT_DOC_TITLE'])) { - $uid = $this->titleExists($sProcessUID, $aData["OUT_DOC_TITLE"]); + if (isset($outputDocumentData['OUT_DOC_TITLE'])) { + $uid = $this->titleExists($sProcessUID, $outputDocumentData["OUT_DOC_TITLE"]); if ($uid != '') { if ($uid != $sOutputDocumentUID && $sFlag == 0) { throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE"))); } } - $oOutputDocument->setOutDocTitle($aData['OUT_DOC_TITLE']); + $oOutputDocument->setOutDocTitle($outputDocumentData['OUT_DOC_TITLE']); } - if (isset($aData['OUT_DOC_DESCRIPTION'])) { - $oOutputDocument->setOutDocDescription($aData['OUT_DOC_DESCRIPTION']); + if (isset($outputDocumentData['OUT_DOC_DESCRIPTION'])) { + $oOutputDocument->setOutDocDescription($outputDocumentData['OUT_DOC_DESCRIPTION']); } - if (isset($aData['OUT_DOC_FILENAME'])) { - $oOutputDocument->setOutDocFilename($aData['OUT_DOC_FILENAME']); + if (isset($outputDocumentData['OUT_DOC_FILENAME'])) { + $oOutputDocument->setOutDocFilename($outputDocumentData['OUT_DOC_FILENAME']); } $oOutputDocument->save(); $oConnection->commit(); From 16fb5c65a1480e3bf8be44e59d79109be436eb52 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Wed, 30 Apr 2014 16:28:25 -0400 Subject: [PATCH 5/5] Bug 0014738: Fix. Users with PM_SUPERVISOR permission are not display in the list of selection of supervisors --- .../BusinessModel/ProcessSupervisor.php | 12 +++- .../src/ProcessMaker/BusinessModel/User.php | 70 +++++++++++-------- 2 files changed, 51 insertions(+), 31 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php index 518a848c6..afb34c33c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php @@ -2,6 +2,7 @@ namespace ProcessMaker\BusinessModel; use \G; +use Luracast\Restler\User; class ProcessSupervisor { @@ -201,13 +202,21 @@ class ProcessSupervisor $sDelimiter = \DBAdapter::getStringDelimiter(); $oCriteria = new \Criteria('workflow'); $oCriteria->addSelectColumn(\UsersPeer::USR_UID); + $oCriteria->addSelectColumn(\UsersPeer::USR_ROLE); $oCriteria->add(\UsersPeer::USR_UID, $aUIDS, \Criteria::NOT_IN); $oDataset = \UsersPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aUIDS = array(); while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['USR_UID']; + require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Roles.php"); + $userRole = new \ProcessMaker\BusinessModel\User(); + $permission = $userRole->loadUserRolePermission('PROCESSMAKER', $aRow['USR_UID']); + foreach ($permission as $key => $value) { + if ($value["PER_CODE"] == 'PM_SUPERVISOR') { + $aUIDS [] = $aRow ['USR_UID']; + } + } $oDataset->next(); } $oCriteria = new \Criteria('workflow'); @@ -218,7 +227,6 @@ class ProcessSupervisor $oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL); $oCriteria->add(\UsersPeer::USR_UID, $aUIDS, \Criteria::IN); $oCriteria->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME); - $oCriteria->add(\UsersPeer::USR_ROLE, 'PROCESSMAKER_ADMIN', \Criteria::EQUAL); $oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE'); $oDataset = \UsersPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/User.php b/workflow/engine/src/ProcessMaker/BusinessModel/User.php index 9eabe5763..6075aa7eb 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/User.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/User.php @@ -210,34 +210,36 @@ class User require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Users.php"); $arrayData = array_change_key_case($arrayData, CASE_UPPER); $form = $arrayData; - if ($form['USR_REPLACED_BY'] != '') { - $oReplacedBy = \UsersPeer::retrieveByPK($form['USR_REPLACED_BY']); - if (is_null($oReplacedBy)) { - throw new \Exception('usr_replaced_by:'.$form['USR_REPLACED_BY'].' '.\G::LoadTranslation('ID_AUTHENTICATION_SOURCE_INVALID')); + if (array_key_exists('USR_REPLACED_BY', $form)) { + if ($form['USR_REPLACED_BY'] != '') { + $oReplacedBy = \UsersPeer::retrieveByPK($form['USR_REPLACED_BY']); + if (is_null($oReplacedBy)) { + throw new \Exception('usr_replaced_by:'.$form['USR_REPLACED_BY'].' '.\G::LoadTranslation('ID_AUTHENTICATION_SOURCE_INVALID')); + } } } - if ($form['USR_COUNTRY'] != '') { - $oCountry = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']); - if (is_null($oCountry)) { - throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']); + if (array_key_exists('USR_COUNTRY', $form)) { + if ($form['USR_COUNTRY'] != '') { + $oCountry = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']); + if (is_null($oCountry)) { + throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']); + } } } - if ($form['USR_CITY'] != '') { - $oCity = \IsoSubdivisionPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_CITY']); - if (is_null($oCity)) { - throw new \Exception('Invalid value for usr_city: '.$form['USR_CITY']); + if (array_key_exists('USR_CITY', $form)) { + if ($form['USR_CITY'] != '') { + $oCity = \IsoSubdivisionPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_CITY']); + if (is_null($oCity)) { + throw new \Exception('Invalid value for usr_city: '.$form['USR_CITY']); + } } } - if ($form['USR_LOCATION'] != '') { - $oLocation = \IsoLocationPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_LOCATION']); - if (is_null($oLocation)) { - throw new \Exception('Invalid value for usr_location: '.$form['USR_LOCATION']); - } - } - if ($form['USR_COUNTRY'] != '') { - $oReplacedBy = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']); - if (is_null($oReplacedBy)) { - throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']); + if (array_key_exists('USR_LOCATION', $form)) { + if ($form['USR_LOCATION'] != '') { + $oLocation = \IsoLocationPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_LOCATION']); + if (is_null($oLocation)) { + throw new \Exception('Invalid value for usr_location: '.$form['USR_LOCATION']); + } } } if (isset($arrayData['USR_UID'])) { @@ -245,14 +247,20 @@ class User } else { $form['USR_UID'] = ''; } - $sConfirm = $this->testPassword($form['USR_NEW_PASS']); - if ($sConfirm['STATUS'] != 1) { - throw new \Exception('usr_new_pass. '.$sConfirm['DESCRIPTION']); + if (array_key_exists('USR_NEW_PASS', $form)) { + $sConfirm = $this->testPassword($form['USR_NEW_PASS']); + if ($sConfirm['STATUS'] != 1) { + throw new \Exception('usr_new_pass. '.$sConfirm['DESCRIPTION']); + } } - if ($form['USR_NEW_PASS'] != $form['USR_CNF_PASS']) { - throw new \Exception('usr_new_pass or usr_cnf_pass. '.\G::LoadTranslation('ID_NEW_PASS_SAME_OLD_PASS')); + if (array_key_exists('USR_NEW_PASS', $form)) { + if ($form['USR_NEW_PASS'] != $form['USR_CNF_PASS']) { + throw new \Exception('usr_new_pass or usr_cnf_pass. '.\G::LoadTranslation('ID_NEW_PASS_SAME_OLD_PASS')); + } + } + if (array_key_exists('USR_NEW_PASS', $form)) { + $form['USR_PASSWORD'] = md5($form['USR_NEW_PASS']); } - $form['USR_PASSWORD'] = md5($form['USR_NEW_PASS']); if (!isset($form['USR_CITY'])) { $form['USR_CITY'] = ''; } @@ -264,7 +272,11 @@ class User } $criteria = new \Criteria(); $criteria->addSelectColumn(\UsersPeer::USR_USERNAME); - $criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayData['USR_USERNAME'])); + if (array_key_exists('USR_USERNAME', $form)) { + $criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayData['USR_USERNAME'])); + } else { + throw new \Exception('usr_name. '.\G::LoadTranslation('ID_MSG_ERROR_USR_USERNAME')); + } if (\UsersPeer::doCount($criteria) > 0) { throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayData['USR_USERNAME']))); }