Example #1
0
<?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();
}
Example #2
0
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);
}