Example #1
0
//Make sure backup folder exists
$backup_dir = WPBACKITUP__CONTENT_PATH . '/' . WPBACKITUP__BACKUP_FOLDER;
$backup_folder_exists = false;
if (!is_dir($backup_dir)) {
    if (@mkdir($backup_dir, 0755)) {
        $backup_folder_exists = true;
    }
} else {
    $backup_folder_exists = true;
}
//Cleanup old backups - this can be removed in a few months.
//Get Zip File List
$file_system = new WPBackItUp_FileSystem($logger);
$file_list = $file_system->get_fileonly_list($backup_folder_root, 'zip|log');
//If there are zip files then move them into their own folders
$logger->log_info(__METHOD__, 'Files in backup folder: ' . var_export($file_list, true));
$logger->log_info(__METHOD__, 'Last Error: ' . var_export(error_get_last(), true));
if (null != $file_list) {
    foreach ($file_list as $file) {
        //remove the suffix
        $file_name = substr(basename($file), 0, -4);
        //strip off the suffix IF one exists
        $folder_name = $file_name;
        if (($str_pos = strpos($folder_name, '-main-')) !== false) {
            $suffix = substr($folder_name, $str_pos);
            $folder_name = str_replace($suffix, '', $folder_name);
        }
        if (($str_pos = strpos($folder_name, '-others-')) !== false) {
            $suffix = substr($folder_name, $str_pos);
            $folder_name = str_replace($suffix, '', $folder_name);
        }
 * WP BackItUp  - Download handler
 *
 * @package WP BackItUp
 * @author  Chris Simmons <*****@*****.**>
 * @link    http://www.wpbackitup.com
 *
 */
//Turn off output buffering if it was on.
while (@ob_end_clean()) {
}
// required for IE, otherwise Content-disposition is ignored
//@apache_setenv('no-gzip', 1); //Causes failure on siteground...research
@ini_set('zlib.output_compression', 'Off');
global $logger;
$logger = new WPBackItUp_Logger(true, null, 'debug_download');
$logger->log_info(__METHOD__, $_REQUEST);
if (isset($_REQUEST['_wpnonce']) && !empty($_REQUEST['_wpnonce']) && isset($_REQUEST['backup_file']) && !empty($_REQUEST['backup_file'])) {
    if (wp_verify_nonce($_REQUEST['_wpnonce'], WPBACKITUP__NAMESPACE . '-download_backup')) {
        $logger->log_info(__METHOD__, 'nonce verified');
        //strip off the suffix IF one exists
        $folder_name = rtrim($_REQUEST['backup_file'], '.zip');
        if (($str_pos = strpos($folder_name, '-main-')) !== false) {
            $suffix = substr($folder_name, $str_pos);
            $folder_name = str_replace($suffix, '', $folder_name);
        }
        if (($str_pos = strpos($folder_name, '-others-')) !== false) {
            $suffix = substr($folder_name, $str_pos);
            $folder_name = str_replace($suffix, '', $folder_name);
        }
        if (($str_pos = strpos($folder_name, '-plugins-')) !== false) {
            $suffix = substr($folder_name, $str_pos);
 /**
  * Create all the tasks for a job
  *
  * @param $job_id
  *
  * @param $tasks
  *
  * @return bool
  */
 private static function create_tasks($job_id, $tasks)
 {
     $logger = new WPBackItUp_Logger(false, null, 'debug_job');
     $logger->log_info(__METHOD__, 'Begin');
     //Create the job tasks
     $last_updated_time = time();
     foreach ($tasks as $key => $value) {
         $task_name = $value;
         $task_data = array('task_id' => $task_name, 'task_status' => self::QUEUED, 'task_allocated_id' => '', 'task_last_updated' => $last_updated_time);
         $task_created = update_post_meta($job_id, $task_name, $task_data);
         if (false === $task_created) {
             $logger->log_error(__METHOD__, 'Tasks NOT created');
             return false;
         }
         $logger->log_info(__METHOD__, 'task created:' . $task_created . ':' . $task_name);
     }
     $logger->log_info(__METHOD__, 'End');
     return true;
 }
    $logger->log('**BACKUP THEMES TASK**');
    write_response_processing("Backup themes ");
    set_status('backup_themes', $active, true);
    $themes_remaining_files_count = $wp_backup->backup_files($backup_job->backup_id, WPBACKITUP__THEMES_ROOT_PATH, 'themes');
    $logger->log('Themes remaining:' . $themes_remaining_files_count);
    if ($themes_remaining_files_count === false) {
        //ERROR
        $logger->log_error(__METHOD__, 'Error backing up themes.');
        $backup_job->set_task_error('120');
        write_fatal_error_status('120');
        //cleanup_on_failure( $wp_backup->backup_project_path );
        end_backup(120, false);
    } else {
        if ($themes_remaining_files_count > 0) {
            //CONTINUE
            $logger->log_info(__METHOD__, 'Continue backing up themes.');
            $backup_job->set_task_queued();
        } else {
            //COMPLETE
            $logger->log_info(__METHOD__, 'Complete - All themes backed up.');
            set_status('backup_themes', $complete, false);
            $backup_job->set_task_complete();
            $logger->log('**END BACKUP THEMES TASK**');
        }
    }
    return;
}
//Backup the plugins
if ('task_backup_plugins' == $current_task) {
    $logger->log('**BACKUP PLUGINS TASK**');
    write_response_processing("Backup plugins ");
$complete = 2;
$failure = -1;
$warning = -2;
$success = 99;
//**************************//
//   SINGLE THREAD BACKUPS  //
//**************************//
$logger_tasks = new WPBackItUp_Logger(false, null, 'debug_tasks');
$backup_process_id = uniqid();
//If there is a queued or active job then add a resume check
if ('scheduled' == $this->backup_type) {
    wp_schedule_single_event(time() + 30, 'wpbackitup_run_cleanup_tasks');
}
//Make sure backup is NOT already running before you run the current task
if (!WPBackItUp_Backup::start()) {
    $logger_tasks->log_info(__METHOD__ . '(' . $backup_process_id . ')', 'Cleanup job cant acquire job lock.');
    return;
    //nothing to do
} else {
    $logger_tasks->log_info(__METHOD__ . '(' . $backup_process_id . ')', 'Cleanup job lock acquired.');
}
//**************************//
//**************************//
//     Task Handling        //
//**************************//
global $cleanup_job;
$cleanup_job = null;
$current_task = null;
$backup_error = false;
$cleanup_job = WPBackItUp_Job::get_job('cleanup');
$logger_tasks->log_info(__METHOD__ . '(' . $backup_process_id . ')', 'Check for available job');
 public static function is_authorized()
 {
     $permission_logger = new WPBackItUp_Logger(false, null, 'debug_permissions');
     $permission_logger->log_info(__METHOD__, 'Begin');
     $permission_logger->log_info(__METHOD__, 'User Permissions: ' . current_user_can('manage_options'));
     if (defined('DOING_CRON')) {
         $permission_logger->log_info(__METHOD__, 'Doing CRON Constant: ' . DOING_CRON);
     } else {
         $permission_logger->log_info(__METHOD__, 'DOING_CRON - NOT defined');
     }
     if (defined('XMLRPC_REQUEST')) {
         $permission_logger->log_info(__METHOD__, 'XMLRPC_REQUEST Constant: ' . XMLRPC_REQUEST);
     } else {
         $permission_logger->log_info(__METHOD__, 'XMLRPC_REQUEST  - NOT defined ');
     }
     //Check User Permissions or CRON
     if (!current_user_can('manage_options') && (!defined('DOING_CRON') || !DOING_CRON)) {
         $permission_logger->log_info(__METHOD__, 'End - NOT AUTHORIZED');
         return false;
     }
     $permission_logger->log_info(__METHOD__, 'End - SUCCESS');
     return true;
 }
 }
 $logger->log('*END DELETE RESTORE FOLDER*');
 $logger->log('*CREATE ROOT RESTORE FOLDER*');
 if (!$wp_restore->create_restore_root_folder()) {
     fatal_error($task, '222', 'Root Restore folder could not be created.');
 }
 $logger->log('*END CREATE RESTORE FOLDER*');
 $logger->log('*DELETE STAGED FOLDER*');
 if (!$wp_restore->delete_staged_folders()) {
     fatal_error($task, '222', 'Staged folders could not be deleted.');
 }
 $logger->log('*END DELETE STAGED FOLDER*');
 $logger->log('*UPDATE ZIP JOB META*');
 //Get the zip list
 $backup_path_pattern = $wp_restore->get_backup_folder_path() . '/' . $wp_restore->get_backup_name() . '*.zip';
 $logger->log_info(__METHOD__, 'Fetch backups pattern:' . $backup_path_pattern);
 $backup_set = glob($backup_path_pattern);
 if (is_array($backup_set) && count($backup_set) > 0) {
     $restore_job->update_job_meta('backup_set', $backup_set);
     $restore_job->update_job_meta('backup_set_remaining', $backup_set);
 } else {
     fatal_error($task, '222', 'No zip files found (pattern):' . $backup_path_pattern);
 }
 $logger->log('*END UPDATE ZIP JOB META*');
 $logger->log('*UPDATE SITE VALUES META*');
 $siteurl = $wp_restore->get_siteurl();
 if (false === $siteurl) {
     fatal_error($task, '207', 'Unable to fetch site url.');
 } else {
     $restore_job->update_job_meta('current_siteurl', $siteurl);
 }