diff --git a/gulliver/system/class.inputfilter.php b/gulliver/system/class.inputfilter.php index e4c34b9a2..90c9763b1 100644 --- a/gulliver/system/class.inputfilter.php +++ b/gulliver/system/class.inputfilter.php @@ -586,7 +586,9 @@ class InputFilter break; case 'path': if(!file_exists($value)) { - $value = ''; + if(!is_dir($value)) { + $value = ''; + } } break; case 'nosql': @@ -624,7 +626,9 @@ class InputFilter break; case 'path': if(!file_exists($value)) { - throw new Exception('not a valid path'); + if(!is_dir($value)) { + throw new Exception('not a valid path'); + } } break; case 'nosql': diff --git a/gulliver/thirdparty/phing/Phing.php b/gulliver/thirdparty/phing/Phing.php index 88fe35eef..00e9dfb12 100644 --- a/gulliver/thirdparty/phing/Phing.php +++ b/gulliver/thirdparty/phing/Phing.php @@ -856,7 +856,8 @@ class Phing { if (self::getMsgOutputLevel() === PROJECT_MSG_DEBUG) { print("Phing::import() prepending new include_path components: " . implode(PATH_SEPARATOR, $new_parts) . "\n"); } - if (is_dir(implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts)))) { + $firstPath = explode(":", implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts))); + if (is_dir($firstPath[0])) { ini_set('include_path', implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts))); } } diff --git a/gulliver/thirdparty/propel/Propel.php b/gulliver/thirdparty/propel/Propel.php index a28a85c00..ef2ece638 100755 --- a/gulliver/thirdparty/propel/Propel.php +++ b/gulliver/thirdparty/propel/Propel.php @@ -601,7 +601,7 @@ class Propel { $lastQuery = ""; foreach (self::$connectionMap as $cnn) { - if (!($cnn instanceof DBArrayConnection)) { + if (get_class($cnn) != "DBArrayConnection") { if (gettype($cnn->getResource()) == "resource" && $cnn->isConnected() && $cnn->lastQuery != $lastQuery) { $cnn->close(); } diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 9a2d1a8de..12e6c4d30 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -1654,18 +1654,23 @@ class AppCacheView extends BaseAppCacheView public function getTotalCasesByAllUsers() { $oCriteria = new Criteria("workflow"); - $oCriteria->addSelectColumn(AppCacheViewPeer::USR_UID); - $oCriteria->addAsColumn("CNT", "COUNT(DISTINCT(APP_UID))"); + $oCriteria->addAsColumn("CNT", "COUNT(DISTINCT(APP_CACHE_VIEW.APP_UID))"); + + $oCriteria->addJoin(AppCacheViewPeer::DEL_INDEX , AppDelayPeer::APP_DEL_INDEX, Criteria::LEFT_JOIN); + + $oCriteria->add( + $oCriteria->getNewCriterion(AppDelayPeer::APP_TYPE, NULL, Criteria::ISNULL)->addOr( + $oCriteria->getNewCriterion(AppDelayPeer::APP_TYPE, 'REASSIGN', Criteria::NOT_EQUAL)) + ); + $oCriteria->addGroupByColumn(AppCacheViewPeer::USR_UID); $dat = AppCacheViewPeer::doSelectRS($oCriteria); $dat->setFetchmode(ResultSet::FETCHMODE_ASSOC); $aRows = array(); - while ($dat->next()) { $row = $dat->getRow(); - $aRows[$row["USR_UID"]] = $row["CNT"]; } diff --git a/workflow/engine/classes/model/CaseScheduler.php b/workflow/engine/classes/model/CaseScheduler.php index ef148c7b3..e3fa5805a 100755 --- a/workflow/engine/classes/model/CaseScheduler.php +++ b/workflow/engine/classes/model/CaseScheduler.php @@ -666,11 +666,11 @@ class CaseScheduler extends BaseCaseScheduler $this->Update( $Fields ); } - public function updateNextRun ($sOption, $sValue = '', $sActualTime = '', $sDaysPerformTask = '', $sWeeks = '', $sStartDay = '', $sMonths = '', $currentDate = '') + public function updateNextRun($sOption, $sValue = "", $sActualTime = "", $sDaysPerformTask = "", $sWeeks = "", $sStartDay = "", $sMonths = "", $currentDate = "", $flagNextRun = true) { $nActualDate = $currentDate . " " . $sActualTime; $dEstimatedDate = ''; - $sWeeks = trim($sWeeks, "|"); + $sWeeks = trim($sWeeks, " |"); switch ($sOption) { case '1': @@ -694,48 +694,47 @@ class CaseScheduler extends BaseCaseScheduler } break; case '2': - if (strlen( $sWeeks ) > 0) { - //die($sActualTime); - $nDayOfTheWeek = (int)(date("w", strtotime($sActualTime))); - //$nDayOfTheWeek = 1; - $aWeeks = explode( '|', $sWeeks ); - $nFirstDay = (int)($aWeeks[0]) - 1; + if ($sWeeks != "") { $aDaysWeek = array ('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); - $nDayOfTheWeek = ($nDayOfTheWeek == 0) ? 7 : $nDayOfTheWeek; - $day = 0; - $nSW = 0; - $flagIsTheSameDay = false; - foreach ($aWeeks as $value) { - if ($nDayOfTheWeek <= (int)($value)) { - $day = (int)($value) - 1; - $nSW = 1; - $flagIsTheSameDay = $nDayOfTheWeek == (int)($value); - break; + $nDayOfTheWeek = (int)(date("w", strtotime($sActualTime))); + $nDayOfTheWeek = ($nDayOfTheWeek == 0)? 7 : $nDayOfTheWeek; + + $arrayWeekdays = explode("|", $sWeeks); + $firstDay = (int)($arrayWeekdays[0]); + + $flagFound = $nDayOfTheWeek < $firstDay || in_array($nDayOfTheWeek, $arrayWeekdays); + + if ($flagFound) { + $typeStatement = "this"; + $indexDay = (in_array($nDayOfTheWeek, $arrayWeekdays))? $nDayOfTheWeek : $firstDay; + + if ($flagNextRun) { + $index = array_search($nDayOfTheWeek, $arrayWeekdays); + + if ($index !== false && isset($arrayWeekdays[$index + 1])) { + $indexDay = $arrayWeekdays[$index + 1]; + } else { + $typeStatement = "next"; + $indexDay = $firstDay; + } } - } - if ($nSW == 1) { - $dEstimatedDate = date("Y-m-d", strtotime("$nActualDate " . (($flagIsTheSameDay)? "this" : "next") . " " . $aDaysWeek[$day])) . " " . date("H:i:s", strtotime($sActualTime)); + $indexDay--; + + $dEstimatedDate = date("Y-m-d", strtotime($nActualDate . " " . $typeStatement . " " . $aDaysWeek[$indexDay])) . " " . date("H:i:s", strtotime($sActualTime)); } else { $nEveryDays = $sDaysPerformTask; - // $nEveryDays = '1'; - if ($nFirstDay >= $nDayOfTheWeek || $nEveryDays == 1) { - $sTypeOperation = "next"; - } else { - $sTypeOperation = "last"; - } + + $typeStatement = ($firstDay >= $nDayOfTheWeek || $nEveryDays == 1)? "next" : "last"; + $indexDay = $firstDay - 1; if ($nEveryDays == 1) { - //echo "**** $nActualDate *" . $sTypeOperation . "* *" . $aDaysWeek[$nFirstDay] . '*****' . date('H:i:s', strtotime($sActualTime)). "**"; - $dEstimatedDate = date( 'Y-m-d', strtotime( "$nActualDate " . $sTypeOperation . " " . $aDaysWeek[$nFirstDay] ) ) . ' ' . date( 'H:i:s', strtotime( $sActualTime ) ); - //echo "(date)*".$dEstimatedDate."*"; - //die("01"); + $dEstimatedDate = date("Y-m-d", strtotime($nActualDate . " " . $typeStatement . " " . $aDaysWeek[$indexDay])) . " " . date("H:i:s", strtotime($sActualTime)); } else { $nEveryDays = 1; - //$nActualDate = date('Y-m-d').' '.$sActualTime; $nDataTmp = date( 'Y-m-d', strtotime( "$nActualDate + " . $nEveryDays . " Week" ) ); - $dEstimatedDate = date( 'Y-m-d', strtotime( "$nDataTmp " . $sTypeOperation . " " . $aDaysWeek[$nFirstDay] ) ) . ' ' . date( 'H:i:s', strtotime( $sActualTime ) ); + $dEstimatedDate = date("Y-m-d", strtotime($nDataTmp . " " . $typeStatement . " " . $aDaysWeek[$indexDay])) . " " . date("H:i:s", strtotime($sActualTime)); } } } diff --git a/workflow/engine/controllers/webEntryProxy.php b/workflow/engine/controllers/webEntryProxy.php index 6601dcda1..ff246dc37 100755 --- a/workflow/engine/controllers/webEntryProxy.php +++ b/workflow/engine/controllers/webEntryProxy.php @@ -203,7 +203,7 @@ class webEntryProxy extends HttpProxyController file_put_contents( $fileName, $template->getOutputContent() ); //creating the third file, only if this wsClient.php file doesn't exists. $fileName = $pathProcess . 'wsClient.php'; - $pluginTpl = PATH_CORE . 'test' . PATH_SEP . 'unit' . PATH_SEP . 'ws' . PATH_SEP . 'wsClient.php'; + $pluginTpl = PATH_CORE . "templates" . PATH_SEP . "processes" . PATH_SEP . "wsClient.php"; if (file_exists( $fileName )) { if (filesize( $fileName ) != filesize( $pluginTpl )) { diff --git a/workflow/engine/methods/cases/CaseSchedulerCreateUpdate.php b/workflow/engine/methods/cases/CaseSchedulerCreateUpdate.php new file mode 100644 index 000000000..2a9c9da33 --- /dev/null +++ b/workflow/engine/methods/cases/CaseSchedulerCreateUpdate.php @@ -0,0 +1,20 @@ +createUpdate($caseSchedulerUid, $prossesUid, $_SESSION["USER_LOGGED"], $_POST["form"], (isset($_POST["pluginFields"]))? $_POST["pluginFields"] : array()); + + G::header("Location: cases_Scheduler_List?PRO_UID=" . $prossesUid); +} catch (Exception $e) { + echo $e->getMessage(); + + exit(0); +} + diff --git a/workflow/engine/methods/cases/cases_Scheduler_Edit.php b/workflow/engine/methods/cases/cases_Scheduler_Edit.php index d54863d45..5acc5a3e5 100755 --- a/workflow/engine/methods/cases/cases_Scheduler_Edit.php +++ b/workflow/engine/methods/cases/cases_Scheduler_Edit.php @@ -131,7 +131,7 @@ try { } - $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'cases/cases_Scheduler_Edit.xml', '', $aFields, 'cases_Scheduler_Update' ); + $G_PUBLISH->AddContent("xmlform", "xmlform", "cases" . PATH_SEP . "cases_Scheduler_Edit.xml", "", $aFields, "CaseSchedulerCreateUpdate"); G::RenderPage( 'publishBlank', 'blank' ); diff --git a/workflow/engine/methods/cases/cases_Scheduler_New.php b/workflow/engine/methods/cases/cases_Scheduler_New.php index 02f407815..4b5720d2e 100755 --- a/workflow/engine/methods/cases/cases_Scheduler_New.php +++ b/workflow/engine/methods/cases/cases_Scheduler_New.php @@ -91,7 +91,7 @@ try { $aFields['SCH_LIST'] .= htmlspecialchars($item['SCH_NAME'], ENT_QUOTES) . '^'; } - $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'cases/cases_Scheduler_New.xml', '', $aFields, 'cases_Scheduler_Save' ); + $G_PUBLISH->AddContent("xmlform", "xmlform", "cases" . PATH_SEP . "cases_Scheduler_New.xml", "", $aFields, "CaseSchedulerCreateUpdate"); G::RenderPage( 'publishBlank', 'blank' ); } catch (Exception $oException) { diff --git a/workflow/engine/methods/cases/cases_Scheduler_Save.php b/workflow/engine/methods/cases/cases_Scheduler_Save.php deleted file mode 100755 index 2e0b2afef..000000000 --- a/workflow/engine/methods/cases/cases_Scheduler_Save.php +++ /dev/null @@ -1,265 +0,0 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ -try { - /* - global $RBAC; - switch ($RBAC->userCanAccess('PM_FACTORY')) - { - case -2: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - case -1: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - } - */ - - require_once 'classes/model/CaseScheduler.php'; - $oCaseScheduler = new CaseScheduler(); - - if (empty( $_POST )) { - die( 'The information sended is empty!' ); - } - - $aData['SCH_UID'] = G::generateUniqueID(); - $aData['SCH_NAME'] = $_POST['form']['SCH_NAME']; - $aData['SCH_DEL_USER_NAME'] = $_POST['form']['SCH_USER_NAME']; - $aData['SCH_DEL_USER_PASS'] = Bootstrap::hashPassword($_POST['form']['SCH_USER_PASSWORD']); - $aData['SCH_DEL_USER_UID'] = $_POST['form']['SCH_USER_UID']; - $aData['PRO_UID'] = $_POST['form']['PRO_UID']; - $aData['TAS_UID'] = $_POST['form']['TAS_UID']; - - $aData['SCH_STATE'] = 'ACTIVE'; - $aData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE'; - $aData['USR_UID'] = $_SESSION['USER_LOGGED']; - - $sOption = $_POST['form']['SCH_OPTION']; - $aData['SCH_OPTION'] = $sOption; - - if ($_POST['form']['SCH_START_DATE'] != '') { - $sDateTmp = $_POST['form']['SCH_START_DATE']; - } else { - $sDateTmp = date( 'Y-m-d' ); - } - $sTimeTmp = $_POST['form']['SCH_START_TIME']; - $aData['SCH_START_TIME'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) ); - $aData['SCH_START_DATE'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) ); - - $nActualTime = $_POST['form']['SCH_START_TIME']; // time(); - // $nActualDate = date("Y-m-d H:i:s", $nActualTime); - - - $sValue = ''; - $sDaysPerformTask = ''; - $sWeeks = ''; - $sMonths = ''; - $sMonths = ''; - $sStartDay = ''; - $nSW = 0; - $aData['SCH_START_DAY'] = ''; - $aData['SCH_REPEAT_EVERY'] = ''; - $aData['SCH_REPEAT_UNTIL'] = ''; - $aData['SCH_DAYS_PERFORM_TASK'] = ''; - switch ($sOption) { - case '1': // Option 1 - $sValue = $_POST['form']['SCH_DAYS_PERFORM_TASK']; - switch ($sValue) { - case '1': - $aData['SCH_DAYS_PERFORM_TASK'] = $_POST['form']['SCH_DAYS_PERFORM_TASK'] . '|1'; - break; - case '2': - $aData['SCH_OPTION'] = '2'; - $aData['SCH_EVERY_DAYS'] = '1'; - $aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; - break; - case '3': // Every [n] Days - $sDaysPerformTask = $_POST['form']['SCH_DAYS_PERFORM_TASK_OPT_3']; - $aData['SCH_DAYS_PERFORM_TASK'] = $_POST['form']['SCH_DAYS_PERFORM_TASK'] . '|' . $_POST['form']['SCH_DAYS_PERFORM_TASK_OPT_3']; - break; - } - break; - case '2': // If the option is zero, set by default 1 - if (empty( $_POST['form']['SCH_EVERY_DAYS'] )) { - $nEveryDays = 1; - } else { - $nEveryDays = $_POST['form']['SCH_EVERY_DAYS']; - } - $aData['SCH_EVERY_DAYS'] = $nEveryDays; - $sWeeks = ''; - if (! empty( $_POST['form']['SCH_WEEK_DAYS'] )) { - $aWeekDays = $_POST['form']['SCH_WEEK_DAYS']; - foreach ($aWeekDays as $value) { - $sWeeks = $sWeeks . $value . '|'; - } - } - if (! empty( $_POST['form']['SCH_WEEK_DAYS_2'] )) { - $aWeekDays2 = $_POST['form']['SCH_WEEK_DAYS_2']; - foreach ($aWeekDays2 as $value) { - $sWeeks = $sWeeks . $value . '|'; - } - } - $sStartTime = $_POST['form']['SCH_START_TIME']; - $aData['SCH_WEEK_DAYS'] = $sWeeks; - break; - case '3': - $nStartDay = $_POST['form']['SCH_START_DAY']; - if ($nStartDay == 1) { - $aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['form']['SCH_START_DAY_OPT_1']; - } else { - $aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['form']['SCH_START_DAY_OPT_2_WEEKS'] . '|' . $_POST['form']['SCH_START_DAY_OPT_2_DAYS_WEEK']; - } - - $sMonths = ''; - if (! empty( $_POST['form']['SCH_MONTHS'] )) { - $aMonths = $_POST['form']['SCH_MONTHS']; - foreach ($aMonths as $value) { - $sMonths = $sMonths . $value . '|'; - } - } - if (! empty( $_POST['form']['SCH_MONTHS_2'] )) { - $aMonths2 = $_POST['form']['SCH_MONTHS_2']; - foreach ($aMonths2 as $value) { - $sMonths = $sMonths . $value . '|'; - } - } - if (! empty( $_POST['form']['SCH_MONTHS_3'] )) { - $aMonths3 = $_POST['form']['SCH_MONTHS_3']; - foreach ($aMonths3 as $value) { - $sMonths = $sMonths . $value . '|'; - } - } - $aData['SCH_MONTHS'] = $sMonths; - $sStartDay = $aData['SCH_START_DAY']; - $sValue = $nStartDay; - break; - } - - if (($sOption != '1') && ($sOption != '4') && ($sOption != '5')) { - if ($sStartDay == '') { - $sStartDay = date( 'Y-m-d' ); - } - - $dCurrentMonth = (int)(date("m")); - $dCurrentDay = (int)(date("d")); - $aStartDay = explode( "|", $aData['SCH_START_DAY'] ); - if ($sOption == '3' && $aStartDay[0] == '1') { - $monthsArray = explode( "|", $sMonths ); - foreach ($monthsArray as $row) { - if ((int)($row) == $dCurrentMonth && $dCurrentDay <= (int)($aStartDay[1])) { - $startTime = $_POST['form']['SCH_START_TIME'] . ":00"; - $aData['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 ); - } - } - } else { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); - } - } else { - if ($sOption == '4') { - $aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; - } - $aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; - if ($sOption == 5) { - $aData['SCH_START_TIME'] = time(); - $aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; - $nextRun = $_POST['form']['SCH_REPEAT_EVERY'] * 60 * 60; - $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY']; - $date = $aData['SCH_START_TIME']; - $date += $nextRun; - $date = date( "Y-m-d H:i", $date ); - $aData['SCH_TIME_NEXT_RUN'] = $date; - } - } - if (trim( $_POST['form']['SCH_END_DATE'] ) != '') { - $aData['SCH_END_DATE'] = $_POST['form']['SCH_END_DATE']; - } - - if (! empty( $_POST['form']['SCH_REPEAT_TASK_CHK'] )) { - $nOptEvery = $_POST['form']['SCH_REPEAT_EVERY_OPT']; - if ($nOptEvery == 2) { - $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY'] * 60; - } else { - $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY']; - } - - } - - if ((isset( $_POST['form']['CASE_SH_PLUGIN_UID'] )) && ($_POST['form']['CASE_SH_PLUGIN_UID'] != "")) { - $aData['CASE_SH_PLUGIN_UID'] = $_POST['form']['CASE_SH_PLUGIN_UID']; - } - //$aData['SCH_END_DATE'] = "2020-12-30"; - $oCaseScheduler->create( $aData ); - $sch_uid = $oCaseScheduler->getSchUid(); - - if ((isset( $_POST['form']['CASE_SH_PLUGIN_UID'] )) && ($_POST['form']['CASE_SH_PLUGIN_UID'] != "")) { - $params = explode( "--", $_REQUEST['form']['CASE_SH_PLUGIN_UID'] ); - $oPluginRegistry = & PMPluginRegistry::getSingleton(); - $activePluginsForCaseScheduler = $oPluginRegistry->getCaseSchedulerPlugins(); - - foreach ($activePluginsForCaseScheduler as $key => $caseSchedulerPluginDetail) { - if (($caseSchedulerPluginDetail->sNamespace == $params[0]) && ($caseSchedulerPluginDetail->sActionId == $params[1])) { - $caseSchedulerSelected = $caseSchedulerPluginDetail; - } - } - if ((isset( $caseSchedulerSelected )) && (is_object( $caseSchedulerSelected ))) { - //Save the form - $oData = $_POST['pluginFields']; - $oData['SCH_UID'] = $aData['SCH_UID']; - $oPluginRegistry->executeMethod( $caseSchedulerPluginDetail->sNamespace, $caseSchedulerPluginDetail->sActionSave, $oData ); - } - } - - // //Added by Qennix - // //Update Start Time Event in BPMN - // - // echo $_POST['form']['TAS_UID']."<<----"; - // if (isset($_POST['form']['TAS_UID'])){ - // require_once 'classes/model/Event.php'; - // require_once 'classes/model/Task.php'; - // echo $_POST['form']['TAS_UID']."<<----"; - // - // $oTask = new Task(); - // $oTask->load($_POST['form']['TAS_UID']); - // $evn_uid = $oTask->getStartingEvent(); - // $event = new Event(); - // $editEvent = array(); - // $editEvent['EVN_UID'] = $evn_uid; - // $editEvent['EVN_ACTION'] = $sch_uid; - // $event->update($editEvent); - // //End Adding - // } - - - G::header( 'location: cases_Scheduler_List?PRO_UID=' . $_POST['form']['PRO_UID'] ); - -} catch (Exception $oException) { - die( $oException->getMessage() ); -} - diff --git a/workflow/engine/methods/cases/cases_Scheduler_Update.php b/workflow/engine/methods/cases/cases_Scheduler_Update.php deleted file mode 100755 index c21a31a5b..000000000 --- a/workflow/engine/methods/cases/cases_Scheduler_Update.php +++ /dev/null @@ -1,290 +0,0 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ -try { - /* - global $RBAC; - switch ($RBAC->userCanAccess('PM_FACTORY')) - { - case -2: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - case -1: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - } - */ - - require_once 'classes/model/CaseScheduler.php'; - - if (empty( $_POST )) { - die( 'The information sended is empty!' ); - } - - foreach ($_POST["form"] as $key => $value) { - $_POST["form"][$key] = trim($value); - } - - $aData = array(); - $aData['SCH_UID'] = $_POST['form']['SCH_UID']; - $aData['SCH_NAME'] = $_POST['form']['SCH_NAME']; - $aData['PRO_UID'] = $_POST['form']['PRO_UID']; - $aData['TAS_UID'] = $_POST['form']['TAS_UID']; - - $oCaseScheduler = new CaseScheduler(); - $oCaseScheduler->Load( $aData['SCH_UID'] ); - - $aData['SCH_DEL_USER_NAME'] = $_POST['form']['SCH_USER_NAME']; - if ($_POST['form']['SCH_USER_PASSWORD'] != 'DefaultPM') { - $aData['SCH_DEL_USER_PASS'] = Bootstrap::hashPassword($_POST['form']['SCH_USER_PASSWORD']); - } - $aData['SCH_DEL_USER_UID'] = $_POST['form']['SCH_USER_UID']; - - // $aData['SCH_TIME_NEXT_RUN'] = time(); - //$aData['SCH_LAST_RUN_TIME'] = time(); - // $aData['SCH_STATE'] = 'ACTIVE'; - // $aData['SCH_LAST_STATE'] = 'ACTIVE'; - $aData['USR_UID'] = $_SESSION['USER_LOGGED']; - - $sOption = $_POST['form']['SCH_OPTION']; - $aData['SCH_OPTION'] = $sOption; - - $sDateTmp = $_POST['form']['SCH_START_DATE']; - $sTimeTmp = $_POST['form']['SCH_START_TIME']; - $aData['SCH_START_TIME'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) ); - $aData['SCH_START_DATE'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) ); - $previousStartTime = date( 'Y-m-d', strtotime( $_POST['form']['PREV_SCH_START_DATE'] ) ) . ' ' . date( 'H:i:s', strtotime( $_POST['form']['PREV_SCH_START_TIME'] ) ); - $previousStartDate = date( 'Y-m-d', strtotime( $_POST['form']['PREV_SCH_START_DATE'] ) ) . ' ' . date( 'H:i:s', strtotime( $_POST['form']['PREV_SCH_START_TIME'] ) ); - - $sValue = ''; - $sDaysPerformTask = ''; - $sWeeks = ''; - $sMonths = ''; - $sMonths = ''; - $sStartDay = ''; - $nSW = 0; - - switch ($sOption) { - case '1': - // Option 1 - $sValue = $_POST['form']['SCH_DAYS_PERFORM_TASK']; - switch ($sValue) { - case '1': - $aData['SCH_DAYS_PERFORM_TASK'] = $_POST['form']['SCH_DAYS_PERFORM_TASK'] . '|1'; - break; - case '2': - $aData['SCH_OPTION'] = '2'; - $aData['SCH_EVERY_DAYS'] = '1'; - $aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; - break; - case '3': // Every [n] Days - $sDaysPerformTask = $_POST['form']['SCH_DAYS_PERFORM_TASK_OPT_3']; - $aData['SCH_DAYS_PERFORM_TASK'] = $_POST['form']['SCH_DAYS_PERFORM_TASK'] . '|' . $_POST['form']['SCH_DAYS_PERFORM_TASK_OPT_3']; - break; - } - break; - case '2': - // If the option is zero, set by default 1 - if (empty( $_POST['form']['SCH_EVERY_DAYS'] )) { - $nEveryDays = 1; - } else { - $nEveryDays = $_POST['form']['SCH_EVERY_DAYS']; - } - $aData['SCH_EVERY_DAYS'] = $nEveryDays; - $sWeeks = ''; - if (! empty( $_POST['form']['SCH_WEEK_DAYS'] )) { - $aWeekDays = $_POST['form']['SCH_WEEK_DAYS']; - foreach ($aWeekDays as $value) { - $sWeeks = $sWeeks . $value . '|'; - } - } - if (! empty( $_POST['form']['SCH_WEEK_DAYS_2'] )) { - $aWeekDays2 = $_POST['form']['SCH_WEEK_DAYS_2']; - foreach ($aWeekDays2 as $value) { - $sWeeks = $sWeeks . $value . '|'; - } - } - $sStartTime = $_POST['form']['SCH_START_TIME']; - $aData['SCH_WEEK_DAYS'] = $sWeeks; - break; - case '3': - $nStartDay = $_POST['form']['SCH_START_DAY']; - if ($nStartDay == 1) { - $aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['form']['SCH_START_DAY_OPT_1']; - } else { - $aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['form']['SCH_START_DAY_OPT_2_WEEKS'] . '|' . $_POST['form']['SCH_START_DAY_OPT_2_DAYS_WEEK']; - } - - $sMonths = ''; - if (! empty( $_POST['form']['SCH_MONTHS'] )) { - $aMonths = $_POST['form']['SCH_MONTHS']; - foreach ($aMonths as $value) { - $sMonths = $sMonths . $value . '|'; - } - } - if (! empty( $_POST['form']['SCH_MONTHS_2'] )) { - $aMonths2 = $_POST['form']['SCH_MONTHS_2']; - foreach ($aMonths2 as $value) { - $sMonths = $sMonths . $value . '|'; - } - } - if (! empty( $_POST['form']['SCH_MONTHS_3'] )) { - $aMonths3 = $_POST['form']['SCH_MONTHS_3']; - foreach ($aMonths3 as $value) { - $sMonths = $sMonths . $value . '|'; - } - } - $aData['SCH_MONTHS'] = $sMonths; - $sStartDay = $aData['SCH_START_DAY']; - $sValue = $nStartDay; - break; - - } - if (trim( $_POST['form']['SCH_END_DATE'] ) != '') { - $aData['SCH_END_DATE'] = $_POST['form']['SCH_END_DATE']; - } - // if the start date has changed then recalculate the next run time - if ($_POST['form']['SCH_START_DATE'] == $_POST['form']['PREV_SCH_START_DATE']) { - $recalculateDate = false; - } else { - $recalculateDate = true; - } - if (date( 'H:i:s', strtotime( $_POST['form']['SCH_START_TIME'] ) ) == date( 'H:i:s', strtotime( $_POST['form']['PREV_SCH_START_TIME'] ) )) { - $recalculateTime = false; - } else { - $recalculateTime = true; - } - // if the start date has changed then recalculate the next run time - - - // var_dump($recalculateTime); - // die(); - $nActualTime = $_POST['form']['SCH_START_TIME']; - if (($sOption != '1') && ($sOption != '4') && ($sOption != '5')) { - if ($sStartDay == '') { - $sStartDay = date( 'Y-m-d' ); - } - // echo $sOption."*". $sValue."*". $nActualTime."*". $sDaysPerformTask."*". $sWeeks."*". $sStartDay ."*". $sMonths."
"; - $dCurrentDay = date( "d" ); - $dCurrentMonth = date( "m" ); - $aStartDay = explode( "|", $aData['SCH_START_DAY'] ); - if ($sOption == '3' && $aStartDay[0] == '1') { - $monthsArray = explode( "|", $sMonths ); - foreach ($monthsArray as $row) { - if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { - $startTime = $_POST['form']['SCH_START_TIME'] . ":00"; - if ($recalculateDate) { - $aData['SCH_TIME_NEXT_RUN'] = date( 'Y' ) . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; - } elseif ($recalculateTime) { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00"; - } - break; - } else { - if ($recalculateDate) { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); - } elseif ($recalculateTime) { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00"; - } - } - } - } else { - if ($recalculateDate) { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); - } elseif ($recalculateTime) { - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00"; - } - } - // print_r ($aData['SCH_TIME_NEXT_RUN']); - // die; - } else { - if ($sOption == '4') { - $aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; - } - if ($recalculateDate) { - $aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; - } elseif ($recalculateTime) { - - // $Fields = $oCaseScheduler->Load($aData['SCH_UID']); - // $Fields['SCH_LAST_STATE'] = $aRow['SCH_STATE']; - // $Fields['SCH_STATE'] = 'PROCESSED'; - // $this->Update($Fields); - $aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00"; - } - // var_dump($recalculateTime); - // var_dump($aData['SCH_TIME_NEXT_RUN']); - // die; - if ($sOption == '5') { - $date = $oCaseScheduler->getSchLastRunTime(); - if ($date == null) { - $date = $oCaseScheduler->getSchStartTime(); - } - $date = strtotime( $date ); - $nextRun = $_POST['form']['SCH_REPEAT_EVERY'] * 60 * 60; - $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY']; - $date += $nextRun; - $date = date( "Y-m-d H:i", $date ); - $aData['SCH_TIME_NEXT_RUN'] = $date; - } - } - - if (! empty( $_POST['form']['SCH_REPEAT_TASK_CHK'] )) { - $nOptEvery = $_POST['form']['SCH_REPEAT_EVERY_OPT']; - if ($nOptEvery == 2) { - $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY'] * 60; - } else { - $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY']; - } - - } - // var_dump ($aData['SCH_TIME_NEXT_RUN']); - // die; - $oCaseScheduler->Update( $aData ); - if ((isset( $_POST['form']['CASE_SH_PLUGIN_UID'] )) && ($_POST['form']['CASE_SH_PLUGIN_UID'] != "")) { - $params = explode( "--", $_REQUEST['form']['CASE_SH_PLUGIN_UID'] ); - $oPluginRegistry = & PMPluginRegistry::getSingleton(); - $activePluginsForCaseScheduler = $oPluginRegistry->getCaseSchedulerPlugins(); - - foreach ($activePluginsForCaseScheduler as $key => $caseSchedulerPluginDetail) { - if (($caseSchedulerPluginDetail->sNamespace == $params[0]) && ($caseSchedulerPluginDetail->sActionId == $params[1])) { - $caseSchedulerSelected = $caseSchedulerPluginDetail; - - } - } - if ((isset( $caseSchedulerSelected )) && (is_object( $caseSchedulerSelected ))) { - //Save the form - $oData = $_POST['pluginFields']; - $oData['SCH_UID'] = $aData['SCH_UID']; - $oPluginRegistry->executeMethod( $caseSchedulerPluginDetail->sNamespace, $caseSchedulerPluginDetail->sActionSave, $oData ); - } - } - - G::header( 'location: cases_Scheduler_List?PRO_UID=' . $_POST['form']['PRO_UID'] ); - -} catch (Exception $oException) { - die( $oException->getMessage() ); -} - diff --git a/workflow/engine/methods/processes/processes_webEntryGenerate.php b/workflow/engine/methods/processes/processes_webEntryGenerate.php index d7d410777..f6194487d 100755 --- a/workflow/engine/methods/processes/processes_webEntryGenerate.php +++ b/workflow/engine/methods/processes/processes_webEntryGenerate.php @@ -32,13 +32,9 @@ try { throw (new Exception( G::LoadTranslation('ID_TASK') . "'" . $TaskFields['TAS_TITLE'] . "'" . G::LoadTranslation('ID_NOT_HAVE_USERS'))); } - if (G::is_https()) - $http = 'https://'; - else - $http = 'http://'; - + $http = (G::is_https())? "https://" : "http://"; $sContent = ''; - + $infoProcess = new Process(); $resultProcess = $infoProcess->load($sPRO_UID); @@ -76,7 +72,7 @@ try { $template->assign( 'wsUser', $sWS_USER ); $template->assign( 'wsPass', Bootstrap::hashPassword($sWS_PASS, '', true) ); $template->assign( 'wsRoundRobin', $sWS_ROUNDROBIN ); - + G::auditLog('WebEntry','Generate web entry with web services ('.$dynTitle.'.php) in process "'.$resultProcess['PRO_TITLE'].'"'); if ($sWE_USR == "2") { @@ -94,7 +90,7 @@ try { file_put_contents( $fileName, $template->getOutputContent() ); //creating the third file, only if this wsClient.php file doesn't exist. $fileName = $pathProcess . 'wsClient.php'; - $pluginTpl = file_exists(PATH_CORE . 'test' . PATH_SEP . 'unit' . PATH_SEP . 'ws' . PATH_SEP . 'wsClient.php') ? PATH_CORE . 'test' . PATH_SEP . 'unit' . PATH_SEP . 'ws' . PATH_SEP . 'wsClient.php' : PATH_CORE . 'templates' . PATH_SEP . 'processes' . PATH_SEP . 'wsClient.php'; + $pluginTpl = PATH_CORE . "templates" . PATH_SEP . "processes" . PATH_SEP . "wsClient.php"; if (file_exists( $fileName )) { if (filesize( $fileName ) != filesize( $pluginTpl )) { @copy( $fileName, $pathProcess . 'wsClient.php.bck' ); @@ -123,7 +119,7 @@ try { $link = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sPRO_UID . '/' . $dynTitle . '.php'; print $link; //print "\n $link "; - + } else { $G_FORM = new Form( $sPRO_UID . '/' . $sDYNAFORM, PATH_DYNAFORM, SYS_LANG, false ); $G_FORM->action = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/cases_StartExternal.php'; diff --git a/workflow/engine/skinEngine/neoclassic/css/style.css b/workflow/engine/skinEngine/neoclassic/css/style.css index 54e56e44f..532b5b70e 100644 --- a/workflow/engine/skinEngine/neoclassic/css/style.css +++ b/workflow/engine/skinEngine/neoclassic/css/style.css @@ -787,6 +787,11 @@ form.formDefault .content, background-color: #FFF; border: #dddddd 1px solid; } +@media screen\0 { + form.formDefault .content, .pagedTableDefault { + width:450px; + } +} .pagedTableDefault { padding: 10px; margin: 10px 0; diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php index 45cf59f6b..4377d8198 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php @@ -825,5 +825,360 @@ class CaseScheduler throw $e; } } + + /** + * Create/Update CaseScheduler + * + * @param string $caseSchedulerUid Unique id of CaseScheduler + * @param string $projectUid Unique id of Project + * @param string $userUidCreatorUpdater Unique id of creator/updater User + * @param array $arrayData Data + * @param array $arrayDataPlugin Data plugin + * + * return void + */ + public function createUpdate($caseSchedulerUid, $projectUid, $userUidCreatorUpdater, array $arrayData, array $arrayDataPlugin = array()) + { + try { + //Set variables + $flagInsert = ($caseSchedulerUid == "")? true : false; + $option = ($flagInsert)? "INS" : "UPD"; + + //Set data + if ($flagInsert) { + $caseSchedulerUid = \ProcessMaker\Util\Common::generateUID(); + } + + foreach ($arrayData as $key => $value) { + if (is_array($value)) { + foreach ($value as $key2 => $value2) { + $arrayData[$key][$key2] = trim($value2); + } + } else { + $arrayData[$key] = trim($value); + } + } + + $arrayCaseSchedulerData = array(); + $arrayCaseSchedulerData["SCH_UID"] = $caseSchedulerUid; + $arrayCaseSchedulerData["SCH_NAME"] = $arrayData["SCH_NAME"]; + $arrayCaseSchedulerData["PRO_UID"] = $projectUid; + $arrayCaseSchedulerData["TAS_UID"] = $arrayData["TAS_UID"]; + + $arrayCaseSchedulerData["SCH_DEL_USER_UID"] = $arrayData["SCH_USER_UID"]; + $arrayCaseSchedulerData["SCH_DEL_USER_NAME"] = $arrayData["SCH_USER_NAME"]; + + switch ($option) { + case "INS": + $arrayCaseSchedulerData["SCH_DEL_USER_PASS"] = \Bootstrap::hashPassword($arrayData["SCH_USER_PASSWORD"]); + + $arrayCaseSchedulerData["SCH_STATE"] = "ACTIVE"; + $arrayCaseSchedulerData["SCH_LAST_STATE"] = "CREATED"; + + $sDateTmp = ($arrayData["SCH_START_DATE"] != "")? $arrayData["SCH_START_DATE"] : date("Y-m-d"); + break; + case "UPD": + if ($arrayData["SCH_USER_PASSWORD"] != "DefaultPM") { + $arrayCaseSchedulerData["SCH_DEL_USER_PASS"] = \Bootstrap::hashPassword($arrayData["SCH_USER_PASSWORD"]); + } + + $sDateTmp = $arrayData["SCH_START_DATE"]; + break; + } + + $caseSchedulerOption = (int)($arrayData["SCH_OPTION"]); + + $arrayCaseSchedulerData["USR_UID"] = $userUidCreatorUpdater; + $arrayCaseSchedulerData["SCH_OPTION"] = $caseSchedulerOption; + $arrayCaseSchedulerData["SCH_START_TIME"] = date("Y-m-d", strtotime($sDateTmp)) . " " . date("H:i:s", strtotime($arrayData["SCH_START_TIME"])); + $arrayCaseSchedulerData["SCH_START_DATE"] = date("Y-m-d", strtotime($sDateTmp)) . " " . date("H:i:s", strtotime($arrayData["SCH_START_TIME"])); + + $sValue = ""; + $sDaysPerformTask = ""; + $sWeeks = ""; + $sMonths = ""; + $sStartDay = ""; + + switch ($option) { + case "INS": + $arrayCaseSchedulerData["SCH_START_DAY"] = ""; + $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = ""; + $arrayCaseSchedulerData["SCH_REPEAT_UNTIL"] = ""; + $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = ""; + break; + case "UPD": + break; + } + + switch ($caseSchedulerOption) { + case 1: + //Option 1 + $sValue = $arrayData["SCH_DAYS_PERFORM_TASK"]; + + switch ($sValue) { + case "1": + $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = $arrayData["SCH_DAYS_PERFORM_TASK"] . "|1"; + break; + case "2": + $arrayCaseSchedulerData["SCH_OPTION"] = "2"; + $arrayCaseSchedulerData["SCH_EVERY_DAYS"] = "1"; + $arrayCaseSchedulerData["SCH_WEEK_DAYS"] = "1|2|3|4|5|"; + break; + case "3": + //Every [n] Days + $sDaysPerformTask = $arrayData["SCH_DAYS_PERFORM_TASK_OPT_3"]; + $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = $arrayData["SCH_DAYS_PERFORM_TASK"] . "|" . $arrayData["SCH_DAYS_PERFORM_TASK_OPT_3"]; + break; + } + break; + case 2: + //If the option is zero, set by default 1 + $arrayCaseSchedulerData["SCH_EVERY_DAYS"] = (empty($arrayData["SCH_EVERY_DAYS"]))? 1 : $arrayData["SCH_EVERY_DAYS"]; + + $sWeeks = ""; + + if (!empty($arrayData["SCH_WEEK_DAYS"])) { + $aWeekDays = $arrayData["SCH_WEEK_DAYS"]; + + foreach ($aWeekDays as $value) { + $sWeeks = $sWeeks . $value . "|"; + } + } + + if (!empty($arrayData["SCH_WEEK_DAYS_2"])) { + $aWeekDays2 = $arrayData["SCH_WEEK_DAYS_2"]; + + foreach ($aWeekDays2 as $value) { + $sWeeks = $sWeeks . $value . "|"; + } + } + + $sStartTime = $arrayData["SCH_START_TIME"]; + $arrayCaseSchedulerData["SCH_WEEK_DAYS"] = $sWeeks; + break; + case 3: + $nStartDay = $arrayData["SCH_START_DAY"]; + + if ($nStartDay == 1) { + $arrayCaseSchedulerData["SCH_START_DAY"] = $nStartDay . "|" . $arrayData["SCH_START_DAY_OPT_1"]; + } else { + $arrayCaseSchedulerData["SCH_START_DAY"] = $nStartDay . "|" . $arrayData["SCH_START_DAY_OPT_2_WEEKS"] . "|" . $arrayData["SCH_START_DAY_OPT_2_DAYS_WEEK"]; + } + + $sMonths = ""; + + if (!empty($arrayData["SCH_MONTHS"])) { + $aMonths = $arrayData["SCH_MONTHS"]; + + foreach ($aMonths as $value) { + $sMonths = $sMonths . $value . "|"; + } + } + + if (!empty($arrayData["SCH_MONTHS_2"])) { + $aMonths2 = $arrayData["SCH_MONTHS_2"]; + + foreach ($aMonths2 as $value) { + $sMonths = $sMonths . $value . "|"; + } + } + + if (!empty($arrayData["SCH_MONTHS_3"])) { + $aMonths3 = $arrayData["SCH_MONTHS_3"]; + + foreach ($aMonths3 as $value) { + $sMonths = $sMonths . $value . "|"; + } + } + + $arrayCaseSchedulerData["SCH_MONTHS"] = $sMonths; + $sStartDay = $arrayCaseSchedulerData["SCH_START_DAY"]; + $sValue = $nStartDay; + break; + } + + $caseScheduler = new \CaseScheduler(); + + switch ($option) { + case "INS": + break; + case "UPD": + $arrayDataAux = $caseScheduler->load($caseSchedulerUid); + + if ($arrayData["SCH_END_DATE"] != "") { + $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"]; + } + + //If the start date has changed then recalculate the next run time + $recalculateDate = ($arrayData["SCH_START_DATE"] == $arrayData["PREV_SCH_START_DATE"])? false : true; + $recalculateTime = (date("H:i:s", strtotime($arrayData["SCH_START_TIME"])) == date("H:i:s", strtotime($arrayData["PREV_SCH_START_TIME"])))? false : true; + break; + } + + $nActualTime = $arrayData["SCH_START_TIME"]; + + if ($caseSchedulerOption != 1 && $caseSchedulerOption != 4 && $caseSchedulerOption != 5) { + if ($sStartDay == "") { + $sStartDay = date("Y-m-d"); + } + + $dCurrentDay = (int)(date("d")); + $dCurrentMonth = (int)(date("m")); + + $aStartDay = explode("|", $arrayCaseSchedulerData["SCH_START_DAY"]); + + if ($caseSchedulerOption == 3 && $aStartDay[0] == "1") { + $monthsArray = explode("|", $sMonths); + + foreach ($monthsArray as $row) { + switch ($option) { + case "INS": + if ((int)($row) == $dCurrentMonth && $dCurrentDay <= (int)($aStartDay[1])) { + $startTime = $arrayData["SCH_START_TIME"] . ":00"; + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y") . "-" . $row . "-" . $aStartDay[1] . " " . $startTime; + break; + } else { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); + } + break; + case "UPD": + if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { + $startTime = $arrayData["SCH_START_TIME"] . ":00"; + + if ($recalculateDate) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y") . "-" . $row . "-" . $aStartDay[1] . " " . $startTime; + } else { + if ($recalculateTime) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; + } + } + break; + } else { + if ($recalculateDate) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); + } else { + if ($recalculateTime) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; + } + } + } + break; + } + } + } else { + switch ($option) { + case "INS": + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); + break; + case "UPD": + if ($recalculateDate) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); + } else { + if ($recalculateTime) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; + } + } + break; + } + } + } else { + if ($caseSchedulerOption == 4) { + $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"]; + } + + switch ($option) { + case "INS": + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $arrayCaseSchedulerData["SCH_START_TIME"]; + break; + case "UPD": + if ($recalculateDate) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $arrayCaseSchedulerData["SCH_START_TIME"]; + } else { + if ($recalculateTime) { + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; + } + } + break; + } + + if ($caseSchedulerOption == 5) { + switch ($option) { + case "INS": + $arrayCaseSchedulerData["SCH_START_TIME"] = time(); + $arrayCaseSchedulerData["SCH_START_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"]; + + $date = $arrayCaseSchedulerData["SCH_START_TIME"]; + break; + case "UPD": + $date = $caseScheduler->getSchLastRunTime(); + + if (is_null($date)) { + $date = $caseScheduler->getSchStartTime(); + } + + $date = strtotime($date); + break; + } + + $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = $arrayData["SCH_REPEAT_EVERY"]; + $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y-m-d H:i", $date + (((int)($arrayData["SCH_REPEAT_EVERY"])) * 60 * 60)); + } + } + + switch ($option) { + case "INS": + if ($arrayData["SCH_END_DATE"] != "") { + $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"]; + } + break; + case "UPD": + break; + } + + if (!empty($arrayData["SCH_REPEAT_TASK_CHK"])) { + if ($arrayData["SCH_REPEAT_EVERY_OPT"] . "" == "2") { + $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = ((int)($arrayData["SCH_REPEAT_EVERY"])) * 60; + } else { + $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = (int)($arrayData["SCH_REPEAT_EVERY"]); + } + } + + //Create/Update + switch ($option) { + case "INS": + if (isset($arrayData["CASE_SH_PLUGIN_UID"]) && $arrayData["CASE_SH_PLUGIN_UID"] != "") { + $arrayCaseSchedulerData["CASE_SH_PLUGIN_UID"] = $arrayData["CASE_SH_PLUGIN_UID"]; + } + + $caseScheduler->create($arrayCaseSchedulerData); + break; + case "UPD": + $caseScheduler->update($arrayCaseSchedulerData); + break; + } + + //Plugin + if (isset($arrayData["CASE_SH_PLUGIN_UID"]) && $arrayData["CASE_SH_PLUGIN_UID"] != "") { + $oPluginRegistry = &\PMPluginRegistry::getSingleton(); + $activePluginsForCaseScheduler = $oPluginRegistry->getCaseSchedulerPlugins(); + + $params = explode("--", $arrayData["CASE_SH_PLUGIN_UID"]); + + foreach ($activePluginsForCaseScheduler as $key => $caseSchedulerPluginDetail) { + if ($caseSchedulerPluginDetail->sNamespace == $params[0] && $caseSchedulerPluginDetail->sActionId == $params[1]) { + $caseSchedulerSelected = $caseSchedulerPluginDetail; + } + } + + if (isset($caseSchedulerSelected) && is_object($caseSchedulerSelected)) { + //Save the form + $arrayDataPlugin["SCH_UID"] = $arrayCaseSchedulerData["SCH_UID"]; + $oPluginRegistry->executeMethod($caseSchedulerPluginDetail->sNamespace, $caseSchedulerPluginDetail->sActionSave, $arrayDataPlugin); + } + } + } catch (\Exception $e) { + throw $e; + } + } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php index 8bb5a2dbd..d83cdbec0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php @@ -395,17 +395,16 @@ class WebEntry $fileContent .= "\$_SESSION[\"PROCESS\"] = \"" . $processUid . "\";\n"; $fileContent .= "\$_SESSION[\"CURRENT_DYN_UID\"] = \"" . $dynaFormUid . "\";\n"; $fileContent .= "\$G_PUBLISH = new Publisher();\n"; - - $fileContent .= "G::LoadClass('pmDynaform');\n"; - $fileContent .= "\$a = new pmDynaform(array('CURRENT_DYNAFORM'=>'" . $arrayWebEntryData["DYN_UID"] . "'));\n"; - $fileContent .= "if(\$a->isResponsive()){"; - $fileContent .= "\$a->printWebEntry('".$fileName."Post.php');"; - $fileContent .= "}else {"; - $fileContent .= "\$G_PUBLISH->AddContent(\"dynaform\", \"xmlform\", \"" . $processUid . "/" . $dynaFormUid . "\", \"\", array(), \"" . $fileName . "Post.php\");\n"; - $fileContent .= "G::RenderPage(\"publish\", \"blank\");"; - $fileContent .= "}"; - + $fileContent .= "G::LoadClass(\"pmDynaform\");\n"; + $fileContent .= "\$a = new pmDynaform(array(\"CURRENT_DYNAFORM\" => \"" . $arrayWebEntryData["DYN_UID"] . "\"));\n"; + $fileContent .= "if (\$a->isResponsive()) {"; + $fileContent .= " \$a->printWebEntry(\"" . $fileName . "Post.php\");"; + $fileContent .= "} else {"; + $fileContent .= " \$G_PUBLISH->AddContent(\"dynaform\", \"xmlform\", \"" . $processUid . PATH_SEP . $dynaFormUid . "\", \"\", array(), \"" . $fileName . "Post.php\");\n"; + $fileContent .= " G::RenderPage(\"publish\", \"blank\");"; + $fileContent .= "}"; + file_put_contents($pathDataPublicProcess . PATH_SEP . $fileName . ".php", $fileContent); //Creating the second file, the post file who receive the post form. @@ -442,7 +441,7 @@ class WebEntry //Creating the third file, only if this wsClient.php file doesn't exist. $fileName = $pathDataPublicProcess . PATH_SEP . "wsClient.php"; - $pluginTpl = PATH_TEST . "unit" . PATH_SEP . "ws" . PATH_SEP . "wsClient.php"; + $pluginTpl = PATH_CORE . "templates" . PATH_SEP . "processes" . PATH_SEP . "wsClient.php"; if (file_exists($fileName)) { if (filesize($fileName) != filesize($pluginTpl)) { diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml index 6bd2f70f1..2638979fa 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml @@ -9,11 +9,9 @@ - - - - - + + + @@ -552,7 +550,7 @@ function validateSchedulerFields(oForm) { msgBox("@G::LoadTranslation(ID_REQUIRED_NAME_CASE_SCHEDULER)", 'alert'); return false; } - + var listNames = document.getElementById('form[SCH_LIST]').value; listNames = listNames.split("^"); for (var i= 1; i