示例#1
0
 if (defined('PB_DEMO_MODE')) {
     pb_backupbuddy::alert('Access denied in demo mode.', true);
 } else {
     $delete_items = pb_backupbuddy::_POST('items');
     $deleted_crons = array();
     // For listing in alert.
     foreach ($delete_items as $delete_item) {
         $cron_parts = explode('|', $delete_item);
         $timestamp = $cron_parts[0];
         $cron_hook = $cron_parts[1];
         $cron_key = $cron_parts[2];
         if (isset($cron[$timestamp][$cron_hook][$cron_key])) {
             // Run cron.
             $cron_array = $cron[$timestamp][$cron_hook][$cron_key];
             // Get cron array based on passed values.
             $result = backupbuddy_core::unschedule_event($timestamp, $cron_hook, $cron_array['args']);
             // Delete the scheduled cron.
             if ($result === FALSE) {
                 pb_backupbuddy::alert('Error #5657667675. Unable to delete CRON job. Please see your BackupBuddy error log for details.');
             }
             $deleted_crons[] = $cron_hook . ' / ' . $cron_key;
             // Add deleted cron to list of deletions for display.
         } else {
             // Cron not found, error.
             pb_backupbuddy::alert('Invalid CRON job. Not found.', true);
         }
     }
     pb_backupbuddy::alert(__('Deleted sheduled CRON event(s):', 'it-l10n-backupbuddy') . '<br>' . implode('<br>', $deleted_crons));
     $cron = get_option('cron');
     // Reset to most up to date status for cron listing below. Takes into account deletions.
 }
     foreach ((array) $event as $item_name => $item) {
         if ('pb_backupbuddy-cron_scheduled_backup' == $hook_name) {
             // scheduled backup
             if (!empty($item['args'])) {
                 if (!isset(pb_backupbuddy::$options['schedules'][$item['args'][0]])) {
                     // BB schedule does not exist so delete this cron item.
                     if (FALSE === backupbuddy_core::unschedule_event($time, $hook_name, $item['args'])) {
                         // Delete the scheduled cron.
                         pb_backupbuddy::status('error', 'Error #5657667675b. Unable to delete CRON job. Please see your BackupBuddy error log for details.');
                     } else {
                         pb_backupbuddy::status('details', 'Removed stale cron scheduled backup.');
                     }
                 }
             } else {
                 // No args, something wrong so delete it.
                 if (FALSE === backupbuddy_core::unschedule_event($time, $hook_name, $item['args'])) {
                     // Delete the scheduled cron.
                     pb_backupbuddy::status('error', 'Error #5657667675c. Unable to delete CRON job. Please see your BackupBuddy error log for details.');
                 } else {
                     pb_backupbuddy::status('details', 'Removed stale cron scheduled backup which had no arguments.');
                 }
             }
         }
     }
     // End foreach.
     unset($item);
     unset($item_name);
 }
 // End foreach.
 unset($event);
 unset($hook_name);
示例#3
0
 public static function validateSchedules()
 {
     foreach (pb_backupbuddy::$options['schedules'] as $schedule_id => $schedule) {
         // Retrieve current interval WordPress cron thinks the schedule is at.
         $cron_inverval = wp_get_schedule('pb_backupbuddy-cron_scheduled_backup', array((int) $schedule_id));
         $intervals = wp_get_schedules();
         if (FALSE === $cron_inverval) {
             // Schedule MISSING. Re-schedule.
             $result = backupbuddy_core::schedule_event($schedule['first_run'], $schedule['interval'], 'pb_backupbuddy-cron_scheduled_backup', array((int) $schedule_id));
             // Add new schedule.
             if ($result === FALSE) {
                 $message = 'Error #83443784: A missing schedule was identified but unable to be re-created. Your schedule may not work properly & need manual attention.';
                 pb_backupbuddy::alert($message, true);
             } else {
                 pb_backupbuddy::alert('Warning #2389373: A missing schedule was identified and re-created. This should have corrected any problem with this schedule.', true);
             }
             continue;
         }
         if ($cron_inverval != $schedule['interval']) {
             // Schedule exists BUT interval is WRONG. Fix it.
             $cron_run = wp_next_scheduled('pb_backupbuddy-cron_scheduled_backup', array((int) $schedule_id));
             $result = backupbuddy_core::unschedule_event($cron_run, 'pb_backupbuddy-cron_scheduled_backup', array((int) $schedule_id));
             // Delete existing schedule.
             if ($result === FALSE) {
                 $message = 'Error removing invalid event from WordPress. Your schedule may not work properly. Please try again. Error #38279343. Check your BackupBuddy error log for details.';
                 pb_backupbuddy::alert($message, true);
                 continue;
             }
             // Determine when the next run time SHOULD be.
             if (0 == $schedule['last_run']) {
                 $next_run = $schedule['first_run'];
             } else {
                 $next_run = (int) $schedule['last_run'] + (int) $intervals[$schedule['interval']]['interval'];
             }
             $result = backupbuddy_core::schedule_event($next_run, $schedule['interval'], 'pb_backupbuddy-cron_scheduled_backup', array((int) $schedule_id));
             // Add new schedule.
             if ($result === FALSE) {
                 $message = 'Error #237836464: An invalid schedule with the incorrect interval was identified & deleted but unable to be re-created. Your schedule may not work properly & need manual attention.';
                 pb_backupbuddy::alert($message, true);
                 continue;
             } else {
                 pb_backupbuddy::alert('Warning #2423484: An invalid schedule with the incorrect interval was identified and updated. This should have corrected any problem with this schedule.', true);
             }
         }
     }
     // end foreach.
     //wp_get_schedule($hook, $args = array())
 }
示例#4
0
                pb_backupbuddy::save();
                $schedule_form->clear_values();
                pb_backupbuddy::alert('Added new schedule `' . htmlentities($submitted_schedule['data']['title']) . '`.');
            }
        }
    } else {
        // EDIT SCHEDULE. Form handles saving; just need to update timestamp.
        $first_run = pb_backupbuddy::$format->unlocalize_time(strtotime($submitted_schedule['data']['first_run']));
        if ($first_run == 0 || $first_run == 18000) {
            pb_backupbuddy::alert(sprintf(__('Invalid time format. Please use the specified format / example %s', 'it-l10n-backupbuddy'), $date_format_example));
            $error = true;
        }
        pb_backupbuddy::$options['schedules'][pb_backupbuddy::_GET('edit')]['first_run'] = $first_run;
        //echo 'first: ' . $first_run;
        $next_scheduled_time = wp_next_scheduled('pb_backupbuddy-cron_scheduled_backup', array((int) $_GET['edit']));
        $result = backupbuddy_core::unschedule_event($next_scheduled_time, 'pb_backupbuddy-cron_scheduled_backup', array((int) $_GET['edit']));
        // Remove old schedule. pb_backupbuddy::$options['schedules'][$_GET['edit']]['first_run']
        if ($result === FALSE) {
            pb_backupbuddy::alert('Error #589689. Unable to unschedule scheduled cron job with WordPress. Please see your BackupBuddy error log for details.');
        }
        $result = backupbuddy_core::schedule_event($first_run, $submitted_schedule['data']['interval'], 'pb_backupbuddy-cron_scheduled_backup', array((int) $_GET['edit']));
        // Add new schedule.
        if ($result === FALSE) {
            pb_backupbuddy::alert('Error scheduling event with WordPress. Your schedule may not work properly. Please try again. Error #3488439. Check your BackupBuddy error log for details.', true);
        }
        pb_backupbuddy::save();
        pb_backupbuddy::alert('Edited schedule `' . htmlentities($submitted_schedule['data']['title']) . '`.');
    }
} elseif (count($submitted_schedule['errors']) > 0) {
    foreach ($submitted_schedule['errors'] as $error) {
        pb_backupbuddy::alert($error);
<?php

if (true !== $confirm) {
    return false;
}
$next_scheduled_time = wp_next_scheduled('pb_backupbuddy-cron_scheduled_backup', array((int) $scheduleID));
if (FALSE === backupbuddy_core::unschedule_event($next_scheduled_time, 'pb_backupbuddy-cron_scheduled_backup', array((int) $scheduleID))) {
    return false;
}
$deletedSchedule = pb_backupbuddy::$options['schedules'][$scheduleID];
unset(pb_backupbuddy::$options['schedules'][$scheduleID]);
pb_backupbuddy::save();
backupbuddy_core::addNotification('schedule_deleted', 'Backup schedule deleted', 'An existing backup schedule "' . $deletedSchedule['title'] . '" has been deleted.', $deletedSchedule);
return true;
示例#6
0
 public static function remove_wp_schedules_with_no_bb_schedule()
 {
     $cron = get_option('cron');
     foreach ((array) $cron as $time => $cron_item) {
         // Times
         if (is_numeric($time)) {
             // Loop through each schedule for this time
             foreach ((array) $cron_item as $hook_name => $event) {
                 // Methods
                 foreach ((array) $event as $item_name => $item) {
                     // Full args for method
                     if ('backupbuddy_cron' == $hook_name && 'run_scheduled_backup' == $item['args'][0]) {
                         // scheduled backup
                         if (!empty($item['args'])) {
                             if (!isset(pb_backupbuddy::$options['schedules'][$item['args'][1][0]])) {
                                 // BB schedule does not exist so delete this cron item.
                                 if (FALSE === backupbuddy_core::unschedule_event($time, $hook_name, $item['args'])) {
                                     // Delete the scheduled cron.
                                     pb_backupbuddy::status('error', 'Error #5657667675b. Unable to delete CRON job. Please see your BackupBuddy error log for details.');
                                 } else {
                                     pb_backupbuddy::status('warning', 'Removed stale cron scheduled backup.');
                                 }
                             }
                         } else {
                             // No args, something wrong so delete it.
                             if (FALSE === backupbuddy_core::unschedule_event($time, $hook_name, $item['args'])) {
                                 // Delete the scheduled cron.
                                 pb_backupbuddy::status('error', 'Error #5657667675c. Unable to delete CRON job. Please see your BackupBuddy error log for details.');
                             } else {
                                 pb_backupbuddy::status('warning', 'Removed stale cron scheduled backup which had no arguments.');
                             }
                         }
                     } elseif ('pb_backupbuddy-cron_scheduled_backup' == $hook_name) {
                         // Upgrade hook name to 'backupbuddy_cron'.
                         if (FALSE === wp_unschedule_event($time, $hook_name, $item['args'])) {
                             // Delete the scheduled cron.
                             pb_backupbuddy::status('error', 'Error #327237. Unable to delete CRON job for migration to new tag. Please see your BackupBuddy error log for details.');
                         } else {
                             pb_backupbuddy::status('details', 'Removed cron with old tag format.');
                         }
                         if (isset(pb_backupbuddy::$options['schedules'][$item['args'][0]])) {
                             // BB schedule exists so recreate.
                             $result = backupbuddy_core::schedule_event($time, pb_backupbuddy::$options['schedules'][$item['args'][0]]['interval'], 'run_scheduled_backup', $item['args']);
                             if ($result === false) {
                                 pb_backupbuddy::status('error', 'Error #8923832: Unable to reschedule with new cron tag.');
                             } else {
                                 pb_backupbuddy::status('details', 'Replaced cron with old tag format with new format.');
                             }
                         } else {
                             pb_backupbuddy::status('warning', 'Stale schedule found with WordPress without corresponding BackupBuddy schedule. Not keeping when migrating to new cron tag.');
                         }
                     } elseif ('pb_backupbuddy_cron' == $hook_name) {
                         // Remove.
                         wp_unschedule_event($time, $hook_name, $item['args']);
                     } elseif ('pb_backupbuddy_corn' == $hook_name) {
                         // Remove.
                         wp_unschedule_event($time, $hook_name, $item['args']);
                     } elseif ('pb_backupbuddy_housekeeping' == $hook_name) {
                         // Remove.
                         wp_unschedule_event($time, $hook_name, $item['args']);
                     }
                 }
                 // End foreach.
                 unset($item);
                 unset($item_name);
             }
             // End foreach.
             unset($event);
             unset($hook_name);
         }
         // End if is_numeric.
     }
     // End foreach.
     unset($cron_item);
     unset($time);
 }