<?php /* This PHP will run regularly at regular intervals */ require_once "db-settings.php"; //Require DB connection require "scheduler_functions.php"; //Require scheduler functions // Constants $status_new = "NEW"; $status_failed = "FLD"; //Current Date & time $curr_dt_time = "" . date("Y-m-d H:i:s", strtotime("now")); //Get current Date & Time //die( $curr_dt_time ); //Select Scheduler entries that are pending $db = pdoConnect(); $query = "Select sch.id, sch.job_id, job.message, job.recipients from scheduler as sch INNER JOIN jobs as job ON sch.job_id = job.id WHERE sch.execution_status IN ('" . $status_new . "','" . $status_failed . "') AND sch.execution_date <= '" . $curr_dt_time . "' "; $stmt = $db->prepare($query); $stmt->execute(); $row = $stmt->fetch(); while ($row) { //echo "<br>".json_encode($row); send_to_recipients(json_decode($row['recipients']), $row['message'], $row['id']); $row = $stmt->fetch(); }
function create_job($obj) { global $data; $data = $obj; $job_name = $data->job_name; $frequency = $data->frequency; $message = $data->message; $recipients = $data->recipients; $params = json_decode("{}"); $params->days = $data->param_days; $params->dates = $data->param_dates; $params->months = $data->param_months; //$params = $data->parameters; //die( json_encode($params) ); if ($frequency != 'I') { $start = get_php_timestamp($data->start_date); } //$end = get_php_timestamp($data->end_date); $recur = $data->recur; $schedules = array(); if ($frequency == 'I') { $start = strtotime("now"); array_push($schedules, strtotime("now")); } elseif ($frequency == 'O') { array_push($schedules, $start); } elseif ($frequency == 'D') { //array_push($schedules,$start); //$date = $start; for ($i = 0; $i < $recur; $i++) { $date = add_js_timestamp($data->start_date, $frequency, $i); array_push($schedules, $date); } } elseif ($frequency == 'W') { for ($i = 0; $i < count($params->days); $i++) { $start_week_date = get_start_day($params->days[$i], $start); for ($j = 0; $j < $recur; $j++) { $date = add_js_timestamp(date_string($start_week_date), $frequency, $j); //Add weekly count array_push($schedules, $date); } } } elseif ($frequency == 'M') { for ($i = 0; $i < count($params->months); $i++) { for ($j = 0; $j < count($params->dates); $j++) { if ($params->dates[$j] > 31) { $str = ""; //Its a special date, use it intelligently !! //String format ==> 'Last Sunday of December 2015' switch ($params->dates[$j]) { case 41: //First Day $str = "First "; break; case 42: //Second Day $str = "Second "; break; case 43: //Third Day $str = "Third "; break; case 44: //Fourth Day $str = "Fourth "; break; case 45: //Last Day $str = "Last "; break; } $day = $str; for ($k = 0; $k < count($params->days); $k++) { $str = ""; $str = $day . $days[$params->days[$k]]; $str = $str . " of "; $str = $str . "" . $months[$params->months[$i]]; $str = $str . "" . get_year($data->start_date); array_push($schedules, strtotime($str)); } } else { $date = get_month_date($params->dates[$j], $params->months[$i]); array_push($schedules, $date); } } } } //Save entries to the Database $db = pdoConnect(); $query = "INSERT INTO jobs\n\t\t\t(`name`, `frequency`, `recur`, `message`, `recipients`, `start_date`, `parameters`, `user_id`) \n\t\t\tVALUES \n\t\t\t(:name, :frequency, :recur, :message, :recipients, :start_date, :parameters, :user_id );"; $sqlVars = array(); $obj_recipients = json_decode("{}"); //Create Object $obj_recipients->values = $recipients; $sqlVars[':name'] = $job_name; $sqlVars[':frequency'] = $frequency; $sqlVars[':recur'] = $recur; $sqlVars[':message'] = $message; $sqlVars[':recipients'] = json_encode($obj_recipients); $sqlVars[':start_date'] = date_string($start); $sqlVars[':parameters'] = json_encode($params); $sqlVars[':user_id'] = ""; //$this->userID; //die( json_encode($sqlVars) ) ; $stmt = $db->prepare($query); $stmt->execute($sqlVars); $job_id = $db->lastInsertId(); $query = "INSERT INTO scheduler\n\t\t\t(`job_id`, `execution_date`) \n\t\t\tVALUES \n\t\t\t(:job_id, :execution_date);"; $sqlVars = array(); $sqlVars[':job_id'] = $job_id; $schedule_id = -1; $schedule_strings = array(); foreach ($schedules as $schedule) { $sqlVars[':execution_date'] = date_string($schedule); $stmt = $db->prepare($query); $stmt->execute($sqlVars); $schedule_id = $db->lastInsertId(); array_push($schedule_strings, array("id" => $schedule_id, "date" => date_string($schedule))); //echo date_string($schedule)."\n"; } //***** Return output ******// $history = array(); if ($frequency == 'I') { $history = send_to_recipients($obj_recipients, $message, $schedule_id); } return array("job_id" => $job_id, "schedules" => $schedule_strings, "history" => $history); }