/** * @param $job_object * @return bool */ public function job_run(BackWPup_Job $job_object) { if ($job_object->steps_data[$job_object->step_working]['SAVE_STEP_TRY'] != $job_object->steps_data[$job_object->step_working]['STEP_TRY']) { $job_object->log(sprintf(__('%d. Trying to make a list of folders to back up …', 'backwpup'), $job_object->steps_data[$job_object->step_working]['STEP_TRY'])); } $job_object->substeps_todo = 8; $abs_path = realpath(ABSPATH); if ($job_object->job['backupabsfolderup']) { $abs_path = dirname($abs_path); } $abs_path = trailingslashit(str_replace('\\', '/', $abs_path)); $job_object->temp['folders_to_backup'] = array(); $folders_already_in = $job_object->get_folders_to_backup(); //Folder lists for blog folders if ($job_object->substeps_done === 0) { if ($abs_path && !empty($job_object->job['backuproot'])) { $abs_path = trailingslashit(str_replace('\\', '/', $abs_path)); $excludes = $this->get_exclude_dirs($abs_path, $folders_already_in); foreach ($job_object->job['backuprootexcludedirs'] as $folder) { $excludes[] = trailingslashit($abs_path . $folder); } $this->get_folder_list($job_object, $abs_path, $excludes); } $job_object->substeps_done = 1; $job_object->update_working_data(); $job_object->do_restart_time(); } if ($job_object->substeps_done === 1) { $wp_content_dir = realpath(WP_CONTENT_DIR); if ($wp_content_dir && !empty($job_object->job['backupcontent'])) { $wp_content_dir = trailingslashit(str_replace('\\', '/', $wp_content_dir)); $excludes = $this->get_exclude_dirs($wp_content_dir, $folders_already_in); foreach ($job_object->job['backupcontentexcludedirs'] as $folder) { $excludes[] = trailingslashit($wp_content_dir . $folder); } $this->get_folder_list($job_object, $wp_content_dir, $excludes); } $job_object->substeps_done = 2; $job_object->update_working_data(); $job_object->do_restart_time(); } if ($job_object->substeps_done === 2) { $wp_plugin_dir = realpath(WP_PLUGIN_DIR); if ($wp_plugin_dir && !empty($job_object->job['backupplugins'])) { $wp_plugin_dir = trailingslashit(str_replace('\\', '/', $wp_plugin_dir)); $excludes = $this->get_exclude_dirs($wp_plugin_dir, $folders_already_in); foreach ($job_object->job['backuppluginsexcludedirs'] as $folder) { $excludes[] = trailingslashit($wp_plugin_dir . $folder); } $this->get_folder_list($job_object, $wp_plugin_dir, $excludes); } $job_object->substeps_done = 3; $job_object->update_working_data(); $job_object->do_restart_time(); } if ($job_object->substeps_done === 3) { $theme_root = realpath(get_theme_root()); if ($theme_root && !empty($job_object->job['backupthemes'])) { $theme_root = trailingslashit(str_replace('\\', '/', $theme_root)); $excludes = $this->get_exclude_dirs($theme_root, $folders_already_in); foreach ($job_object->job['backupthemesexcludedirs'] as $folder) { $excludes[] = trailingslashit($theme_root . $folder); } $this->get_folder_list($job_object, $theme_root, $excludes); } $job_object->substeps_done = 4; $job_object->update_working_data(); $job_object->do_restart_time(); } if ($job_object->substeps_done === 4) { $upload_dir = realpath(BackWPup_File::get_upload_dir()); if ($upload_dir && !empty($job_object->job['backupuploads'])) { $upload_dir = trailingslashit(str_replace('\\', '/', $upload_dir)); $excludes = $this->get_exclude_dirs($upload_dir, $folders_already_in); foreach ($job_object->job['backupuploadsexcludedirs'] as $folder) { $excludes[] = trailingslashit($upload_dir . $folder); } $this->get_folder_list($job_object, $upload_dir, $excludes); } $job_object->substeps_done = 5; $job_object->update_working_data(); $job_object->do_restart_time(); } if ($job_object->substeps_done === 5) { //include dirs if ($job_object->job['dirinclude']) { $dirinclude = explode(',', $job_object->job['dirinclude']); $dirinclude = array_unique($dirinclude); //Crate file list for includes foreach ($dirinclude as $dirincludevalue) { if (is_dir($dirincludevalue)) { $this->get_folder_list($job_object, $dirincludevalue); } } } $job_object->substeps_done = 6; $job_object->update_working_data(); $job_object->do_restart_time(); } if ($job_object->substeps_done === 6) { //clean up folder list $folders = $job_object->get_folders_to_backup(); $job_object->add_folders_to_backup($folders, true); $job_object->substeps_done = 7; $job_object->update_working_data(); $job_object->do_restart_time(); } //add extra files if selected if (!empty($job_object->job['backupspecialfiles'])) { if (is_readable(ABSPATH . 'wp-config.php')) { $job_object->additional_files_to_backup[] = str_replace('\\', '/', ABSPATH . 'wp-config.php'); $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), 'wp-config.php')); } elseif (BackWPup_File::is_in_open_basedir(dirname(ABSPATH) . '/wp-config.php')) { if (is_readable(dirname(ABSPATH) . '/wp-config.php') && !is_readable(dirname(ABSPATH) . '/wp-settings.php')) { $job_object->additional_files_to_backup[] = str_replace('\\', '/', dirname(ABSPATH) . '/wp-config.php'); $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), 'wp-config.php')); } } if (is_readable($abs_path . '.htaccess') && empty($job_object->job['backuproot'])) { $job_object->additional_files_to_backup[] = $abs_path . '.htaccess'; $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), '.htaccess')); } if (is_readable($abs_path . 'nginx.conf') && empty($job_object->job['backuproot'])) { $job_object->additional_files_to_backup[] = $abs_path . 'nginx.conf'; $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), 'nginx.conf')); } if (is_readable($abs_path . '.htpasswd') && empty($job_object->job['backuproot'])) { $job_object->additional_files_to_backup[] = $abs_path . '.htpasswd'; $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), '.htpasswd')); } if (is_readable($abs_path . 'robots.txt') && empty($job_object->job['backuproot'])) { $job_object->additional_files_to_backup[] = $abs_path . 'robots.txt'; $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), 'robots.txt')); } if (is_readable($abs_path . 'favicon.ico') && empty($job_object->job['backuproot'])) { $job_object->additional_files_to_backup[] = $abs_path . 'favicon.ico'; $job_object->log(sprintf(__('Added "%s" to backup file list', 'backwpup'), 'favicon.ico')); } } if ($job_object->count_folder === 0 && count($job_object->additional_files_to_backup) === 0) { $job_object->log(__('No files/folder for the backup.', 'backwpup'), E_USER_WARNING); } elseif ($job_object->count_folder > 1) { $job_object->log(sprintf(__('%1$d folders to backup.', 'backwpup'), $job_object->count_folder)); } $job_object->substeps_done = 8; return true; }