Adjust scheduled ticket behaviour in cron to account for cron being run at 1 AM rather than 11 PM. This is also better for daylight saving

This commit is contained in:
Marcus Hill
2022-04-15 12:03:52 +01:00
parent f707098d37
commit 779153e099

View File

@@ -201,13 +201,12 @@ while($row = mysqli_fetch_array($sql_companies)){
// Scheduled tickets // Scheduled tickets
// Get date now, and calculate tomorrow's date (presuming this is being run at 11 PM) // Get date for search
$now = new DateTime(); $today = new DateTime();
$tomorrow = date_add($now, date_interval_create_from_date_string('1 day')); $today_text = $today->format('Y-m-d');
$tomorrow_text = $tomorrow->format('Y-m-d');
// Get scheduled tickets for tomorrow // Get scheduled tickets for today
$sql_scheduled_tickets = mysqli_query($mysqli, "SELECT * FROM scheduled_tickets WHERE scheduled_ticket_next_run = '$tomorrow_text'"); $sql_scheduled_tickets = mysqli_query($mysqli, "SELECT * FROM scheduled_tickets WHERE scheduled_ticket_next_run = '$today_text'");
if(mysqli_num_rows($sql_scheduled_tickets) > 0){ if(mysqli_num_rows($sql_scheduled_tickets) > 0){
while($row = mysqli_fetch_array($sql_scheduled_tickets)){ while($row = mysqli_fetch_array($sql_scheduled_tickets)){
@@ -237,23 +236,23 @@ while($row = mysqli_fetch_array($sql_companies)){
if($frequency == "weekly"){ if($frequency == "weekly"){
// Note: We seemingly have to initialize a new datetime for each loop to avoid stacking the dates // Note: We seemingly have to initialize a new datetime for each loop to avoid stacking the dates
$now = new DateTime(); $now = new DateTime();
$next_run = date_add($now, date_interval_create_from_date_string('1 week 1 day')); $next_run = date_add($now, date_interval_create_from_date_string('1 week'));
} }
elseif($frequency == "monthly"){ elseif($frequency == "monthly"){
$now = new DateTime(); $now = new DateTime();
$next_run = date_add($now, date_interval_create_from_date_string('1 month 1 day')); $next_run = date_add($now, date_interval_create_from_date_string('1 month'));
} }
elseif($frequency == "quarterly"){ elseif($frequency == "quarterly"){
$now = new DateTime(); $now = new DateTime();
$next_run = date_add($now, date_interval_create_from_date_string('3 months 1 day')); $next_run = date_add($now, date_interval_create_from_date_string('3 months'));
} }
elseif($frequency == "biannually"){ elseif($frequency == "biannually"){
$now = new DateTime(); $now = new DateTime();
$next_run = date_add($now, date_interval_create_from_date_string('6 months 1 day')); $next_run = date_add($now, date_interval_create_from_date_string('6 months'));
} }
elseif($frequency == "annually"){ elseif($frequency == "annually"){
$now = new DateTime(); $now = new DateTime();
$next_run = date_add($now, date_interval_create_from_date_string('12 months 1 day')); $next_run = date_add($now, date_interval_create_from_date_string('12 months'));
} }
// Update the run date // Update the run date