diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 0e8b450fa..4446f633a 100755 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -482,6 +482,8 @@ function saveLog($sSource, $sType, $sDescription) G::verifyPath(PATH_DATA . 'log' . PATH_SEP, true); + //setExecutionMessage( PATH_DATA."log".PATH_SEP); + if ($sType == 'action') { $oFile = @fopen(PATH_DATA . 'log' . PATH_SEP . 'cron.log', 'a+'); } else { diff --git a/workflow/engine/classes/model/CaseScheduler.php b/workflow/engine/classes/model/CaseScheduler.php index 63739842d..4ac96a90c 100755 --- a/workflow/engine/classes/model/CaseScheduler.php +++ b/workflow/engine/classes/model/CaseScheduler.php @@ -346,6 +346,8 @@ class CaseScheduler extends BaseCaseScheduler { case '4' : $aRow ['SCH_STATE'] = 'PROCESSED'; break; + case '5' : + break; } @@ -505,7 +507,7 @@ class CaseScheduler extends BaseCaseScheduler { $newCaseLog->saveLogParameters ( $paramsLog ); $newCaseLog->save (); - if ($sOption != '4') { + if ($sOption != '4' && $sOption != '5') { $nSchLastRunTime = $sActualTime; $dEstimatedDate = $this->updateNextRun ( $sOption, $sValue, $sActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths ); @@ -521,12 +523,14 @@ class CaseScheduler extends BaseCaseScheduler { $nSchTimeNextRun = $dEstimatedDate; $this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime ); - } else { + } elseif($sOption != '5'){ $Fields = $this->Load ( $sSchedulerUid ); $Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE']; $Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN']; $Fields ['SCH_STATE'] = 'PROCESSED'; $this->Update ( $Fields ); + } else { + } } else if ($sActualDataHour == $dActualSysHour && $sActualDataMinutes <= $dActualSysMinutes) { @@ -629,7 +633,7 @@ class CaseScheduler extends BaseCaseScheduler { $newCaseLog->saveLogParameters ( $paramsLog ); $newCaseLog->save (); - if ($sOption != '4') { + if ($sOption != '4' && $sOption != '5') { $nSchLastRunTime = $sActualTime; $dEstimatedDate = $this->updateNextRun ( $sOption, $sValue, $sActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths ); @@ -646,12 +650,24 @@ class CaseScheduler extends BaseCaseScheduler { $nSchTimeNextRun = $dEstimatedDate; $this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime ); - } else { + } elseif ($sOption != '5'){ $Fields = $this->Load ( $sSchedulerUid ); $Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE']; $Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN']; $Fields ['SCH_STATE'] = 'PROCESSED'; $this->Update ( $Fields ); + } else { + $nSchLastRunTime = $sActualTime; + $Fields = $this->Load ( $sSchedulerUid ); + $Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN']; + + $nSchTimeNextRun = strtotime($Fields ['SCH_TIME_NEXT_RUN']); + $nextRun = $Fields ['SCH_REPEAT_EVERY']*60*60; + $nSchTimeNextRun += $nextRun; + $nSchTimeNextRun = date("Y-m-d H:i", $nSchTimeNextRun ); + + + $this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime ); } } diff --git a/workflow/engine/methods/cases/cases_Scheduler_Save.php b/workflow/engine/methods/cases/cases_Scheduler_Save.php index 4be825646..7435a1b1b 100755 --- a/workflow/engine/methods/cases/cases_Scheduler_Save.php +++ b/workflow/engine/methods/cases/cases_Scheduler_Save.php @@ -63,17 +63,19 @@ try { $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); + + 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 = ''; @@ -161,7 +163,8 @@ try { } - if(($sOption!='1') && ($sOption!='4')) { + echo "
sOption: ".$sOption; + if(($sOption!='1') && ($sOption!='4') && ($sOption!='5') ) { if ($sStartDay==''){ $sStartDay = date('Y-m-d'); } @@ -190,8 +193,17 @@ try { $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']; } diff --git a/workflow/engine/methods/cases/cases_Scheduler_Update.php b/workflow/engine/methods/cases/cases_Scheduler_Update.php index 46ffbf845..ef3f7cbb7 100755 --- a/workflow/engine/methods/cases/cases_Scheduler_Update.php +++ b/workflow/engine/methods/cases/cases_Scheduler_Update.php @@ -46,7 +46,6 @@ try { if (empty($_POST)) { die('The information sended is empty!'); } - $aData['SCH_UID'] = $_POST['form']['SCH_UID']; $aData['SCH_NAME'] = $_POST['form']['SCH_NAME']; $aData['PRO_UID'] = $_POST['form']['PRO_UID']; @@ -162,7 +161,7 @@ try { $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']){ + if ($_POST['form']['SCH_START_DATE']==$_POST['form']['PREV_SCH_START_DATE']) { $recalculateDate = false; } else { $recalculateDate = true; @@ -177,7 +176,7 @@ try { // var_dump($recalculateTime); // die(); $nActualTime = $_POST['form']['SCH_START_TIME']; - if(($sOption!='1') && ($sOption!='4')) { + if(($sOption!='1') && ($sOption!='4') && ($sOption!='5')) { if ($sStartDay==''){ $sStartDay = date('Y-m-d'); } @@ -230,6 +229,18 @@ try { // 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'])){ diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html index 19db2e8b2..c75080f25 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html +++ b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html @@ -96,8 +96,30 @@ - * {$SCH_START_TIME} - {$form.SCH_START_TIME} + + {$form.SELECT_EVERY} + + + + + + + + + + +
* {$SCH_START_TIME}{$form.SCH_START_TIME} format 24 hrs. (HH:MM)
+ + + + + + + + + +
* {$SCH_REPEAT_EVERY}{$form.SCH_REPEAT_EVERY} hour(s).
+ @@ -197,11 +219,11 @@ {$form.SCH_REPEAT_TASK_CHK} - {$SCH_REPEAT_EVERY} + - +
{$form.SCH_REPEAT_EVERY} {$form.SCH_REPEAT_EVERY_OPT} {$SCH_REPEAT_EVERY_OPT}
diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml index f8542fe7e..e09931fc9 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml @@ -210,8 +210,14 @@ WHERE A.PRO_UID='@#PRO_UID' AND A.TAS_START = 'TRUE' ]]> Repeat Task - -Every + + + + +Record the time. + + +Execute every @@ -273,6 +279,8 @@ switch (getField('SCH_OPTION').value){ break; case '4': getField('SCH_OPTION_VIEW').value = 'One Time Only'; + case '5': + getField('SCH_OPTION_VIEW').value = 'Every'; break; } @@ -289,7 +297,7 @@ function hideProperties(){ document.getElementById('form[PERFORM_TASK]').style.display='none'; document.getElementById('form[SELECT_TIME_DAY]').style.display='none'; document.getElementById('form[SELECT_PLUGIN]').style.display='none'; - document.getElementById('form[SELECT_PLUGIN]').style.display='none'; + document.getElementById('form[SELECT_EVERY]').style.display='none'; // end of enabling } @@ -301,7 +309,7 @@ function showProperties(){ document.getElementById('form[EDIT_USER]').style.display=''; document.getElementById('form[PERFORM_TASK]').style.display=''; document.getElementById('form[SELECT_TIME_DAY]').style.display=''; - + document.getElementById('form[SELECT_EVERY]').style.display=''; } @@ -327,7 +335,7 @@ if (getField('SCH_REPEAT_EVERY').value!=''){ function disableAdvanced(){ //disable(getField('SCH_END_DATE')); - disable(getField('SCH_REPEAT_EVERY')); + disable(getField('SCH_REPEAT_EVERY_OPT')); // disable(getField('SCH_REPEAT_UNTIL')); // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); @@ -347,7 +355,11 @@ function hideAll() { contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + contractSubtitle('SELECT_EVERY'); + //contractSubtitle('ADVANCED_4'); + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display='none'; } function showPluginSelection(opt,pro_uid) { @@ -408,7 +420,11 @@ function showSelection(opt) { expandSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + + document.getElementById('form[SELECT_EVERY]').style.display='none'; document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; // SCH_START_DATE break; case '2' : contractSubtitle('SELECT_DATE'); @@ -416,13 +432,16 @@ function showSelection(opt) { expandSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); hideRow('SCH_EVERY_DAYS'); + + document.getElementById('form[SELECT_EVERY]').style.display='none'; document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; case '3' : contractSubtitle('SELECT_DATE'); contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); expandSubtitle('SELECT_3'); - document.getElementById('endDateTable').style.display=''; if (getField('SCH_START_DAY][1').checked){ getField('SCH_START_DAY_OPT_1').disabled=false; getField('SCH_START_DAY_OPT_1').style.display=""; @@ -438,12 +457,32 @@ function showSelection(opt) { getField('SCH_START_DAY_OPT_2_DAYS_WEEK').disabled=false; getField('SCH_START_DAY_OPT_2_DAYS_WEEK').style.display=""; } + + document.getElementById('form[SELECT_EVERY]').style.display='none'; + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; - case '4' : expandSubtitle('SELECT_DATE'); + case '4' : expandSubtitle('SELECT_DATE'); contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + + document.getElementById('form[SELECT_EVERY]').style.display='none'; + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; + break; + case '5' : expandSubtitle('SELECT_EVERY'); + contractSubtitle('SELECT_1'); + contractSubtitle('SELECT_2'); + contractSubtitle('SELECT_3'); + enable(getField('SCH_REPEAT_EVERY')); + + document.getElementById('form[SELECT_TIME_DAY]').style.display='none'; document.getElementById('endDateTable').style.display='none'; + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display=''; break; } @@ -531,8 +570,8 @@ leimnud.event.add(getField('SCH_REPEAT_TASK_CHK'), 'click', function() { // enable(getField('SCH_REPEAT_UNTIL')); // enable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } else { - disable(getField('SCH_REPEAT_EVERY')); - disable(getField('SCH_REPEAT_EVERY_OPT')); + + // disable(getField('SCH_REPEAT_UNTIL')); // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } @@ -561,6 +600,24 @@ leimnud.event.add(getField('SCH_START_TIME'), 'change', function() { } }); +leimnud.event.add(getField('SCH_REPEAT_EVERY'), 'change', function() { + hours = getField('SCH_REPEAT_EVERY').value; + answer = hours; + var parties = answer.split('.'); + + if(parties[0]>23){ + msgBox(G_STRINGS.ID_SCHEDULER_CANT_PUT_TIME, 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('UPDATE').focus(); + + } + if(parties[1]>99){ + msgBox('The minutes can not be greater than 99', 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('UPDATE').focus(); + } +}); + leimnud.event.add(getField('SCH_REPEAT_UNTIL'), 'change', function() { @@ -741,6 +798,12 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); msgBox('The time format is invalid','alert'); return false; } + if (document.getElementById('form[SCH_OPTION]').value == 5) { + if (document.getElementById('form[SCH_REPEAT_EVERY]').value==''){ + requiredFields = requiredFields + 'Every,'; + validFields = false; + } + } switch(document.getElementById('form[SCH_OPTION]').value){ // daily case '1': @@ -818,6 +881,10 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); validFields = true; break; + //run once + case '5': + validFields = true; + break; default: validFields = false; break; diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.html b/workflow/engine/xmlform/cases/cases_Scheduler_New.html index bd8e9686c..1954b2fbf 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.html +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.html @@ -86,9 +86,26 @@   - * {$SCH_START_TIME} - {$form.SCH_START_TIME} format 24 hrs. (HH:MM) + + + + + + +
* {$SCH_START_TIME}{$form.SCH_START_TIME} format 24 hrs. (HH:MM)
+ + + + + + + + +
* {$SCH_REPEAT_EVERY}{$form.SCH_REPEAT_EVERY} Hour(s).
+ + + {$form.SELECT_DATE} @@ -190,11 +207,11 @@ {$form.SCH_REPEAT_TASK_CHK} - {$SCH_REPEAT_EVERY} + - +
{$form.SCH_REPEAT_EVERY} {$form.SCH_REPEAT_EVERY_OPT} {$SCH_REPEAT_EVERY_OPT}
diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml index f1da35627..c0b307d43 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml @@ -56,6 +56,7 @@ + @@ -63,7 +64,7 @@ Select the date and time for case(s) to be initiated. - + Execution time @@ -103,6 +104,7 @@ Every + Select the day(s) of the week below @@ -198,9 +200,16 @@ Repeat Task - -Every + + + + +Execute every + + + + @@ -286,7 +295,8 @@ contractSubtitle('SELECT_PLUGIN'); document.getElementById('form[SELECT_1]').style.display='none'; document.getElementById('form[SELECT_2]').style.display='none'; document.getElementById('form[SELECT_3]').style.display='none'; - + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display='none'; } @@ -352,7 +362,10 @@ function showSelection(opt) { contractSubtitle('SELECT_3'); //document.getElementById('form[ADVANCED_4]').style.display=''; //expandSubtitle('ADVANCED_4'); + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; case '2' : // Weekly contractSubtitle('SELECT_DATE'); @@ -361,8 +374,11 @@ function showSelection(opt) { contractSubtitle('SELECT_3'); //document.getElementById('form[ADVANCED_4]').style.display=''; hideRow('SCH_EVERY_DAYS'); - document.getElementById('endDateTable').style.display=''; //expandSubtitle('ADVANCED_4'); + + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; case '3' : // Monthly contractSubtitle('SELECT_DATE'); @@ -376,20 +392,36 @@ function showSelection(opt) { getField('SCH_START_DAY_OPT_2_WEEKS').style.display="none"; getField('SCH_START_DAY_OPT_2_DAYS_WEEK').disabled=true; getField('SCH_START_DAY_OPT_2_DAYS_WEEK').style.display="none"; + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; //expandSubtitle('ADVANCED_4'); break; - case '4' : // One time only + case '4' : // One time only expandSubtitle('SELECT_DATE'); contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + document.getElementById('endDateTable').style.display='none'; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; //document.getElementById('form[ADVANCED_4]').style.display=''; //expandSubtitle('ADVANCED_4'); break; - } + case '5' : // Every + contractSubtitle('SELECT_DATE'); + contractSubtitle('SELECT_1'); + contractSubtitle('SELECT_2'); + contractSubtitle('SELECT_3'); + + document.getElementById('endDateTable').style.display='none'; + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display=''; + break; + } } @@ -497,6 +529,24 @@ leimnud.event.add(getField('SCH_START_TIME'), 'change', function() { } }); +leimnud.event.add(getField('SCH_REPEAT_EVERY'), 'change', function() { + hours = getField('SCH_REPEAT_EVERY').value; + answer = hours; + var parties = answer.split('.'); + + if(parties[0]>23){ + msgBox(G_STRINGS.ID_SCHEDULER_CANT_PUT_TIME, 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('SAVE').focus(); + + } + if(parties[1]>99){ + msgBox('The minutes can not be greater than 99', 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('SAVE').focus(); + } +}); + /* leimnud.event.add(getField('SCH_OPTION][1'), 'change', function() { @@ -606,13 +656,20 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); // for time format hh:mm var regExpString = "([0-1]\\d|2[0-3]):([0-5]\\d)"; var timeRegexp = new RegExp(regExpString); - if (!timeRegexp.test(document.getElementById('form[SCH_START_TIME]').value)){ - msgBox('The time format is invalid','alert'); - return false; - } - if (document.getElementById('form[SCH_START_TIME]').value==''){ - requiredFields = requiredFields + 'Execution Time,'; - validFields = false; + if (document.getElementById('form[SCH_OPTION]').value != 5) { + if (!timeRegexp.test(document.getElementById('form[SCH_START_TIME]').value)){ + msgBox('The time format is invalid','alert'); + return false; + } + if (document.getElementById('form[SCH_START_TIME]').value==''){ + requiredFields = requiredFields + 'Execution Time,'; + validFields = false; + } + } else { + if (document.getElementById('form[SCH_REPEAT_EVERY]').value==''){ + requiredFields = requiredFields + 'Every,'; + validFields = false; + } } switch(document.getElementById('form[SCH_OPTION]').value){ // daily @@ -689,6 +746,12 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); validFields = true; + break; + //run every + case '5': + + validFields = true; + break; default: validFields = false; @@ -745,8 +808,8 @@ leimnud.event.add(getField('SCH_REPEAT_TASK_CHK'), 'click', function() { // enable(getField('SCH_REPEAT_UNTIL')); // enable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } else { - disable(getField('SCH_REPEAT_EVERY')); - disable(getField('SCH_REPEAT_EVERY_OPT')); + + // disable(getField('SCH_REPEAT_UNTIL')); // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); }