function get_last_scheduled_run_time($job, $last_execute) { $extjob = array(); $last_execute = $last_execute + 60 - $last_execute % 60; vivvo_cron_manager::parse_element($job[PC_MINUTE], $extjob[PC_MINUTE], 60); vivvo_cron_manager::parse_element($job[PC_HOUR], $extjob[PC_HOUR], 24); vivvo_cron_manager::parse_element($job[PC_DOM], $extjob[PC_DOM], 31); vivvo_cron_manager::parse_element($job[PC_MONTH], $extjob[PC_MONTH], 12); vivvo_cron_manager::parse_element($job[PC_DOW], $extjob[PC_DOW], 7); $dateArr = getdate($last_execute); $minutesAhead = 0; $i = 0; while ($minutesAhead < 525600 and (!$extjob[PC_MINUTE][$dateArr["minutes"]] or !$extjob[PC_HOUR][$dateArr["hours"]] or (!$extjob[PC_DOM][$dateArr["mday"]] or !$extjob[PC_DOW][$dateArr["wday"]]) or !$extjob[PC_MONTH][$dateArr["mon"]])) { if (!$extjob[PC_MONTH][$dateArr["mon"]]) { vivvo_cron_manager::inc_date($dateArr, 1, "mon"); $minutesAhead += 1440; } elseif (!$extjob[PC_DOM][$dateArr["mday"]] or !$extjob[PC_DOW][$dateArr["wday"]]) { vivvo_cron_manager::inc_date($dateArr, 1, "mday"); $minutesAhead += 1440; } elseif (!$extjob[PC_HOUR][$dateArr["hours"]]) { vivvo_cron_manager::inc_date($dateArr, 1, "hour"); $minutesAhead += 60; } elseif (!$extjob[PC_MINUTE][$dateArr["minutes"]]) { vivvo_cron_manager::inc_date($dateArr, 1, "minute"); $minutesAhead++; } $i++; if ($i > 1000) { return false; } } return mktime($dateArr["hours"], $dateArr["minutes"], 0, $dateArr["mon"], $dateArr["mday"], $dateArr["year"]); }