function update_schedule() { $sch_id = isset($_POST['schedule_id']) ? $_POST['schedule_id'] : 0; $sch_id = sanitize_text_field(urldecode($sch_id)); $options = isset($_POST['options']) ? unserialize(base64_decode($_POST['options'])) : false; if (!is_array($options) || empty($options) || empty($sch_id)) { return array('error' => 'Error: Schedule data'); } $current_value = get_option('hmbkp_schedule_' . $sch_id); if (is_array($current_value) && isset($current_value['excludes'])) { // do not update 'excludes' value $options['excludes'] = $current_value['excludes']; } $out = array(); if (is_array($options)) { update_option('hmbkp_schedule_' . $sch_id, $options); $out['result'] = 'SUCCESS'; } else { $out['result'] = 'NOTCHANGE'; } $schedule = new HM\BackUpWordPress\Scheduled_Backup($sch_id); if (!empty($options['reoccurrence']) && !empty($options['schedule_start_time'])) { // Calculate the start time depending on the recurrence $start_time = $options['schedule_start_time']; if ($start_time) { $schedule->set_schedule_start_time($start_time); } } if (!empty($options['reoccurrence'])) { $schedule->set_reoccurrence($options['reoccurrence']); } $out['next_occurrence'] = $schedule->get_next_occurrence(false); return $out; }
/** * Setup the default backup schedules */ function hmbkp_setup_default_schedules() { $schedules = HM\BackUpWordPress\Schedules::get_instance(); if ($schedules->get_schedules()) { return; } /** * Schedule a database backup daily and store backups * for the last 2 weeks */ $database_daily = new HM\BackUpWordPress\Scheduled_Backup((string) time()); $database_daily->set_type('database'); $database_daily->set_schedule_start_time(hmbkp_determine_start_time('daily', array('hours' => '23', 'minutes' => '0'))); $database_daily->set_reoccurrence('daily'); $database_daily->set_max_backups(7); $database_daily->save(); /** * Schedule a complete backup to run weekly and store backups for * the last 3 months */ $complete_weekly = new HM\BackUpWordPress\Scheduled_Backup((string) (time() + 1)); $complete_weekly->set_type('complete'); $complete_weekly->set_schedule_start_time(hmbkp_determine_start_time('weekly', array('day_of_week' => 'sunday', 'hours' => '3', 'minutes' => '0'))); $complete_weekly->set_reoccurrence('weekly'); $complete_weekly->set_max_backups(3); $complete_weekly->save(); $schedules->refresh_schedules(); add_action('admin_notices', function () { echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __('BackUpWordPress has set up your default schedules.', 'backupwordpress') . '</strong> ' . __('By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules.', 'backupwordpress') . '</p></div>'; }); }