604800, 'display' => __('Once Weekly', $odb_class->odb_txt_domain) ); // FOR DEBUGGING $schedules['fiveminutes'] = array( 'interval' => 300, 'display' => __('Every Five Minutes', $odb_class->odb_txt_domain) ); return $schedules; } // odb_extra_cron_schedules() /******************************************************************************* * UPDATE SCHEDULER (IF NEEDED) *******************************************************************************/ function odb_update_scheduler() { global $odb_class; if($odb_class->odb_rvg_options['schedule_type'] == '') { // SHOULDN'T BE SCHEDULED wp_clear_scheduled_hook('odb_scheduler'); $odb_class->odb_rvg_options['schedule_hour'] = ''; $odb_class->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $odb_class->odb_rvg_options); } else { // JOB SHOULD BE SCHEDULED: SCHEDULE IT if($odb_class->odb_rvg_options['schedule_type'] != 'daily' && $odb_class->odb_rvg_options['schedule_type'] != 'weekly') { $odb_class->odb_rvg_options['schedule_hour'] = ''; $odb_class->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $odb_class->odb_rvg_options); } if (!wp_next_scheduled('odb_scheduler')) wp_schedule_event($this->odb_calculate_time(), $odb_class->odb_rvg_options['schedule_type'], 'odb_scheduler'); } // if($odb_class->odb_rvg_options['schedule_type'] == '') } // odb_update_scheduler() /******************************************************************************* * SCHEDULE CHANGED ON SETTINGS PAGE: RESCHEDULE *******************************************************************************/ function odb_reschedule() { global $odb_class; wp_clear_scheduled_hook('odb_scheduler'); wp_schedule_event($this->odb_calculate_time(), $odb_class->odb_rvg_options['schedule_type'], 'odb_scheduler'); } // odb_reschedule() /******************************************************************************* * CALCULATE SCHEDULE TIME *******************************************************************************/ function odb_calculate_time() { global $odb_class; if ($odb_class->odb_rvg_options['schedule_type'] == 'daily' || $odb_class->odb_rvg_options['schedule_type'] == 'weekly') { // 'daily' OR 'weekly' $current_datetime = Date('YmdHis'); $current_date = substr($current_datetime, 0, 8); $current_hour = substr($current_datetime, 8, 2); if($odb_class->odb_rvg_options['schedule_hour'] <= $current_hour) // NEXT RUN WILL BE TOMORROW $date = date('YmdHis', strtotime($current_date.$odb_class->odb_rvg_options['schedule_hour'].'0000'.' + 1 day')); else // NEXT RUN WILL BE TODAY $date = $current_date.$odb_class->odb_rvg_options['schedule_hour'].'0000'; $time = strtotime($date); } else // 'hourly' OR 'twicedaily' $time = time(); return $time; } // odb_calculate_time() } // ODB_Scheduler ?>