Пример #1
0
 }
 if (property_exists($class, 'search')) {
     foreach (${$class}->search as $searchParaKey => $searchParaValue) {
         $s->setProperty($searchParaKey, $searchParaValue);
     }
 }
 $total_count_all = empty($total_count_all) ? $total_count : $total_count_all;
 $s->setProperty('result', $search_result);
 $s->setProperty('_searching_class', $class);
 $s->setProperty('_per_page', $per_page);
 $s->setProperty('primary_column_s', $primary_column);
 $s->setProperty('column_array_s', $column_array);
 $search_result_statement = $search->search_result_op();
 //check for schduling and schdule the report accordingly
 if (!empty($_GET['frequency_uom'][0]) && !empty($_GET['frequency_value'][0])) {
     $ps = new sys_program_schedule();
     $ps->program_class_name = $class;
     $program_name = !empty($function_name) ? $function_name : 'search_records';
     $ps->program_name = $program_name;
     $ps->frequency_uom = $_GET['frequency_uom'][0];
     $ps->frequency_value = $_GET['frequency_value'][0];
     $ps->start_date_time = $_GET['start_date_time'][0];
     $ps->op_email_address = $_GET['email_addresses'][0];
     $ps->op_email_format = $_GET['email_format'][0];
     $ps->status = 'ACTIVE';
     $ps->request_type = 'REPORT';
     $ps->parameter = serialize($postArray);
     $ps->report_query = base64_encode($all_download_sql);
     try {
         $ps->save();
         echo "<div class='message'>The program is Successfully schduled.sys_program_schedule_id id  " . $ps->sys_program_schedule_id . '</div>';
Пример #2
0
function start_next_program()
{
    global $dbc;
    $prg_schedule = new sys_program_schedule();
    $all_prg_schedule = $prg_schedule->findAll();
    /*
     * Foreach schedule check the schedule frequency
     * Check if any program is submitted with in the schduled ferquency, If yes, continue. Else create a new program
     */
    $curr_time = new DateTime();
    foreach ($all_prg_schedule as $prg_schedule) {
        $intvl = 'P365D';
        switch ($prg_schedule->frequency_uom) {
            case 'MINUTELY':
                $intvl_i = $prg_schedule->frequency_value;
                $intvl = 'PT' . $intvl_i . 'M';
                break;
            case 'HOURLY':
                $intvl_i = $prg_schedule->frequency_value;
                $intvl = 'PT' . $intvl_i . 'H';
                break;
            case 'DAILY':
                $intvl_i = $prg_schedule->frequency_value;
                $intvl = 'P' . $intvl_i . 'D';
                break;
            case 'WEEKLY':
                $intvl_i = $prg_schedule->frequency_value * 7;
                $intvl = 'P' . $intvl_i . 'D';
                break;
            case 'MONTHLY':
                $intvl_i = $prg_schedule->frequency_value;
                $intvl = 'P' . $intvl_i . 'M';
                break;
        }
        $date_time_int = new DateInterval($intvl);
        $curr_time->sub($date_time_int);
        $sys_prg = new sys_program();
        $sys_prg->class = $prg_schedule->program_class_name;
        $sys_prg->program_name = $prg_schedule->program_name;
        $sys_prg->program_source = 'SCHEDULER';
        $sys_prg->request_type = $prg_schedule->request_type;
        $sys_prg->report_query = $prg_schedule->report_query;
        $sys_prg->op_email_address = $prg_schedule->op_email_address;
        $sys_prg->op_email_format = $prg_schedule->op_email_format;
        $sys_prg->creation_date = $curr_time->format('Y-m-d');
        $existing_schl = $sys_prg->findBy_schdule_details();
        if ($existing_schl) {
            continue;
        } else {
            //submit a request
            $all_parameters = unserialize($prg_schedule->parameter);
            if ($prg_schedule->increase_date_parameter_cb) {
                $format_param = 'Y-m-d';
                foreach ($all_parameters as $param_k => &$param_v) {
                    $d = DateTime::createFromFormat($format_param, $param_v[0]);
                    if ($d && $d->format($format_param) == $param_v[0]) {
                        $scheduled_date_time = new DateTime($prg_schedule->creation_date);
                        $param_date_time = new DateTime($param_v[0]);
                        $param_date_time->diff($scheduled_date_time, true);
                        $diff = $param_date_time->diff($scheduled_date_time);
                        $param_d = new DateTime();
                        if ($diff->invert) {
                            //negative - use add
                            $param_d->add(new DateInterval('P' . $diff->days . 'D'));
                        } else {
                            //positive - use sub
                            $param_d->sub(new DateInterval('P' . $diff->days . 'D'));
                        }
                        $param_v[0] = $param_d->format($format_param);
                    }
                }
            }
            $sys_prg->parameters = serialize($all_parameters);
            $sys_prg->description = 'Auto schdule program @' . $curr_time->format('Y-m-d');
            $sys_prg->status = 'Initiated';
            $sys_prg->save();
        }
    }
    $dbc->confirm();
    sleep(15);
    execution_time();
}