示例#1
0
 /**
  * Perform a Backup.
  *
  * ## OPTIONS
  *
  * [--files_only]
  * : Backup files only, default to off
  *
  * [--database_only]
  * : Backup database only, defaults to off
  *
  * [--path]
  * : dir that the backup should be save in, defaults to your existing backups directory
  *
  * [--root]
  * : dir that should be backed up, defaults to site root.
  *
  * [--zip_command_path]
  * : path to your zip binary, standard locations are automatically used
  *
  * [--mysqldump_command_path]
  * : path to your mysqldump binary, standard locations are automatically used
  *
  * ## Usage
  *
  *     wp backupwordpress backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]
  *
  */
 public function backup($args, $assoc_args)
 {
     add_action('hmbkp_mysqldump_started', function () {
         WP_CLI::line(__('Backup: Dumping database...', 'backupwordpress'));
     });
     add_action('hmbkp_archive_started', function () {
         WP_CLI::line(__('Backup: Zipping everything up...', 'backupwordpress'));
     });
     $hm_backup = new HM_Backup();
     if (!empty($assoc_args['path'])) {
         HMBKP_Path::get_instance()->set_path($assoc_args['path']);
     }
     $hm_backup->set_path(HMBKP_Path::get_instance()->get_path());
     HMBKP_Path::get_instance()->cleanup();
     if (!empty($assoc_args['root'])) {
         $hm_backup->set_root($assoc_args['root']);
     }
     if (!is_dir($hm_backup->get_path()) && (!is_writable(dirname($hm_backup->get_path())) || !wp_mkdir_p($hm_backup->get_path())) || !is_writable($hm_backup->get_path())) {
         WP_CLI::error(__('Invalid backup path', 'backupwordpress'));
         return false;
     }
     if (!is_dir($hm_backup->get_root()) || !is_readable($hm_backup->get_root())) {
         WP_CLI::error(__('Invalid root path', 'backupwordpress'));
         return false;
     }
     if (!empty($assoc_args['files_only'])) {
         $hm_backup->set_type('file');
     }
     if (!empty($assoc_args['database_only'])) {
         $hm_backup->set_type('database');
     }
     if (isset($assoc_args['mysqldump_command_path'])) {
         $hm_backup->set_mysqldump_command_path($assoc_args['mysqldump_command_path']);
     }
     if (isset($assoc_args['zip_command_path'])) {
         $hm_backup->set_zip_command_path($assoc_args['zip_command_path']);
     }
     if (!empty($assoc_args['excludes'])) {
         $hm_backup->set_excludes($assoc_args['excludes']);
     }
     $hm_backup->backup();
     if (file_exists($hm_backup->get_archive_filepath())) {
         WP_CLI::success(__('Backup Complete: ', 'backupwordpress') . $hm_backup->get_archive_filepath());
     } else {
         WP_CLI::error(__('Backup Failed', 'backupwordpress'));
     }
 }
/**
 * Returns the backup path
 *
 * @see HMBKP_Path
 * @todo remove the need for this
 */
function hmbkp_path()
{
    return HMBKP_Path::get_instance()->get_path();
}
示例#3
0
/**
 * Dismiss an error and then redirect back to the backups page
 */
function hmbkp_dismiss_error()
{
    check_admin_referer('hmbkp_dismiss_error', 'hmbkp_dismiss_error_nonce');
    HMBKP_Path::get_instance()->cleanup();
    HMBKP_Notices::get_instance()->clear_all_notices();
    wp_safe_redirect(wp_get_referer(), 303);
    die;
}
 /**
  * @return string
  */
 protected function test()
 {
     return HMBKP_Path::get_instance()->get_path();
 }
示例#5
0
/**
 * Handles anything that needs to be
 * done when the plugin is updated
 */
function hmbkp_update()
{
    // Update from backUpWordPress 0.4.5
    if (get_option('bkpwp_max_backups')) {
        // Carry over the custom path
        if ($legacy_path = get_option('bkpwppath')) {
            update_option('hmbkp_path', $legacy_path);
        }
        // Options to remove
        $legacy_options = array('bkpwp_archive_types', 'bkpwp_automail_from', 'bkpwp_domain', 'bkpwp_domain_path', 'bkpwp_easy_mode', 'bkpwp_excludelists', 'bkpwp_install_user', 'bkpwp_listmax_backups', 'bkpwp_max_backups', 'bkpwp_presets', 'bkpwp_reccurrences', 'bkpwp_schedules', 'bkpwp_calculation', 'bkpwppath', 'bkpwp_status_config', 'bkpwp_status');
        foreach ($legacy_options as $option) {
            delete_option($option);
        }
        global $wp_roles;
        $wp_roles->remove_cap('administrator', 'manage_backups');
        $wp_roles->remove_cap('administrator', 'download_backups');
        wp_clear_scheduled_hook('bkpwp_schedule_bkpwp_hook');
    }
    // Version 1 to 2
    if (get_option('hmbkp_plugin_version') && version_compare('2.0', get_option('hmbkp_plugin_version'), '>')) {
        /**
         * Setup a backwards compatible schedule
         */
        $legacy_schedule = new HMBKP_Scheduled_Backup('backup');
        // Backup type
        if (defined('HMBKP_FILES_ONLY') && HMBKP_FILES_ONLY || get_option('hmbkp_files_only')) {
            $legacy_schedule->set_type('file');
        } elseif (defined('HMBKP_DATABASE_ONLY') && HMBKP_DATABASE_ONLY || get_option('hmbkp_database_only')) {
            $legacy_schedule->set_type('database');
        } else {
            $legacy_schedule->set_type('complete');
        }
        // Daily schedule time
        if (defined('HMBKP_DAILY_SCHEDULE_TIME') && HMBKP_DAILY_SCHEDULE_TIME) {
            $legacy_schedule->set_schedule_start_time(strtotime(HMBKP_DAILY_SCHEDULE_TIME));
        }
        // Backup schedule
        $legacy_schedule->set_reoccurrence(get_option('hmbkp_schedule_frequency', 'hmbkp_daily'));
        // Automatic backups disabled?
        if (defined('HMBKP_DISABLE_AUTOMATIC_BACKUP') && HMBKP_DISABLE_AUTOMATIC_BACKUP || get_option('hmbkp_disable_automatic_backup')) {
            $legacy_schedule->set_reoccurrence('manually');
        }
        // Max backups
        if (defined('HMBKP_MAX_BACKUPS') && is_numeric(HMBKP_MAX_BACKUPS)) {
            $legacy_schedule->set_max_backups((int) HMBKP_MAX_BACKUPS);
        } else {
            $legacy_schedule->set_max_backups((int) get_option('hmbkp_max_backups', 10));
        }
        // Excludes
        if (get_option('hmbkp_excludes')) {
            $legacy_schedule->set_excludes(get_option('hmbkp_excludes'));
        }
        // Backup email
        if (defined('HMBKP_EMAIL') && is_email(HMBKP_EMAIL)) {
            $legacy_schedule->set_service_options('HMBKP_Email_Service', array('email' => HMBKP_EMAIL));
        } elseif (is_email(get_option('hmbkp_email_address'))) {
            $legacy_schedule->set_service_options('HMBKP_Email_Service', array('email' => get_option('hmbkp_email_address')));
        }
        // Set the archive filename to what it used to be
        $legacy_schedule->set_archive_filename(implode('-', array(get_bloginfo('name'), 'backup', date('Y-m-d-H-i-s', current_time('timestamp')))) . '.zip');
        $legacy_schedule->save();
        // Remove the legacy options
        foreach (array('hmbkp_database_only', 'hmbkp_files_only', 'hmbkp_max_backups', 'hmbkp_email_address', 'hmbkp_email', 'hmbkp_schedule_frequency', 'hmbkp_disable_automatic_backup') as $option_name) {
            delete_option($option_name);
        }
    }
    // Update from 2.2.4
    if (get_option('hmbkp_plugin_version') && version_compare('2.2.5', get_option('hmbkp_plugin_version'), '>')) {
        $schedules = HMBKP_Schedules::get_instance();
        // Loop through all schedules and re-set the reccurrence to include hmbkp_
        foreach ($schedules->get_schedules() as $schedule) {
            $reoccurrence = $schedule->get_reoccurrence();
            if ($reoccurrence !== 'manually' && strpos($reoccurrence, 'hmbkp_') === false) {
                $schedule->set_reoccurrence('hmbkp_' . $schedule->get_reoccurrence());
            }
            $schedule->save();
        }
    }
    // Update from 2.x to 3.0
    if (get_option('hmbkp_plugin_version') && version_compare('2.0', get_option('hmbkp_plugin_version'), '>')) {
        // Remove the plugin data cache
        delete_transient('hmbkp_plugin_data');
    }
    // Update to 3.1
    if (get_option('hmbkp_plugin_version') && version_compare('3.0', get_option('hmbkp_plugin_version'), '>')) {
        // Remove the plugin data cache
        delete_option('hmbkp_path');
        delete_option('hmbkp_default_path');
    }
    // Every update
    if (get_option('hmbkp_plugin_version') && version_compare(BackUpWordPress_Plugin::PLUGIN_VERSION, get_option('hmbkp_plugin_version'), '>')) {
        BackUpWordPress_Setup::deactivate();
        HMBKP_Path::get_instance()->protect_path('reset');
    }
    // Update the stored version
    if (get_option('hmbkp_plugin_version') !== BackUpWordPress_Plugin::PLUGIN_VERSION) {
        update_option('hmbkp_plugin_version', BackUpWordPress_Plugin::PLUGIN_VERSION);
    }
}
 /**
  * Runs on every admin page load
  */
 public function init()
 {
     // If we have multiple paths for some reason then clean them up
     HMBKP_Path::get_instance()->merge_existing_paths();
 }