Merged in victorsl/processmaker/PM-2917 (pull request #2320)
PM-2917 "Case Scheduler issues" SOLVED
This commit is contained in:
@@ -897,7 +897,6 @@ class CaseScheduler
|
||||
$sDaysPerformTask = "";
|
||||
$sWeeks = "";
|
||||
$sMonths = "";
|
||||
$sStartDay = "";
|
||||
|
||||
switch ($option) {
|
||||
case "INS":
|
||||
@@ -992,7 +991,6 @@ class CaseScheduler
|
||||
}
|
||||
|
||||
$arrayCaseSchedulerData["SCH_MONTHS"] = $sMonths;
|
||||
$sStartDay = $arrayCaseSchedulerData["SCH_START_DAY"];
|
||||
$sValue = $nStartDay;
|
||||
break;
|
||||
}
|
||||
@@ -1013,123 +1011,33 @@ class CaseScheduler
|
||||
$arrayCaseSchedulerData["SCH_END_DATE"] = ($arrayData["SCH_END_DATE"] != "")? $arrayData["SCH_END_DATE"] : null;
|
||||
|
||||
//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;
|
||||
$recalculateDate = ($arrayData["SCH_START_DATE"] != $arrayData["PREV_SCH_START_DATE"])? true : false;
|
||||
$recalculateTime = (date("H:i:s", strtotime($arrayData["SCH_START_TIME"])) != date("H:i:s", strtotime($arrayData["PREV_SCH_START_TIME"])))? true : false;
|
||||
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 = ($caseSchedulerOption == 3)? explode("|", $arrayCaseSchedulerData["SCH_START_DAY"]) : array();
|
||||
|
||||
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 ($caseSchedulerOption) {
|
||||
case 4:
|
||||
//$arrayCaseSchedulerData["SCH_END_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"];
|
||||
break;
|
||||
case 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:s", $date + (((int)($arrayData["SCH_REPEAT_EVERY"])) * 60 * 60));
|
||||
}
|
||||
$arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = $arrayData["SCH_REPEAT_EVERY"];
|
||||
break;
|
||||
}
|
||||
|
||||
switch ($option) {
|
||||
case "INS":
|
||||
$arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y-m-d") . " " . (($caseSchedulerOption != 5)? $arrayData["SCH_START_TIME"] . ":00" : date("H:i:s"));
|
||||
|
||||
if ($arrayData["SCH_END_DATE"] != "") {
|
||||
$arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"];
|
||||
}
|
||||
@@ -1138,13 +1046,13 @@ class CaseScheduler
|
||||
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"]);
|
||||
}
|
||||
}
|
||||
//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
|
||||
$caseSchedulerAux = new \CaseScheduler();
|
||||
@@ -1193,11 +1101,11 @@ class CaseScheduler
|
||||
break;
|
||||
case 4:
|
||||
//One time only
|
||||
$flagUpdateTimeNextRun = $arrayCaseSchedulerData["SCH_START_TIME"] != $arrayCaseSchedulerDataOld["SCH_START_TIME"];
|
||||
$flagUpdateTimeNextRun = $recalculateTime || $arrayCaseSchedulerData["SCH_START_TIME"] != $arrayCaseSchedulerDataOld["SCH_START_TIME"];
|
||||
break;
|
||||
case 5:
|
||||
//Every
|
||||
$flagUpdateTimeNextRun = $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] != $arrayCaseSchedulerDataOld["SCH_REPEAT_EVERY"];
|
||||
$flagUpdateTimeNextRun = $option == "INS" || $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] != $arrayCaseSchedulerDataOld["SCH_REPEAT_EVERY"];
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user