public function append_zip(ZipArchive $zip, $root, $local_prefix, FW_Backup_Interface_Feedback $feedback, $exclude = array()) { /** * @var FW_Extension_Backup $backup */ $feedback->set_task(__('Scanning file system...', 'fw')); $fs = new FW_Backup_Helper_File_System(); $backup = fw()->extensions->get('backup'); $exclude[] = $backup->get_backup_dir(); $upload_dir = wp_upload_dir(); $exclude[] = $upload_dir['basedir'] . '/fw-style.css'; if ($backup->get_config('image_recovery')) { $image_recovery = new FW_Backup_Image_Recovery(); $exclude = array_merge($exclude, $image_recovery->remove_attachment_images()); } list($file_list, $file_size) = $fs->file_list_exclude($root, $exclude); $feedback->set_task(sprintf(__('%d file(s) found [%s]', 'fw'), count($file_list), $fs->format_bytes(array_sum($file_size)))); $fs->append_zip($zip, $file_list, $root, $local_prefix, $feedback); }
public function callback_filter_intermediate_image_sizes_advanced($sizes) { $meta = wp_get_attachment_metadata(FW_Backup_Image_Recovery::$attachment_id); $uploadpath = wp_upload_dir(); $exclude = array(); $folder = dirname($meta['file']); $filtered_meta_sizes = array_intersect_key($meta['sizes'], $sizes); $filtered_theme_sizes = array_intersect_key($sizes, $meta['sizes']); if (!empty($filtered_meta_sizes)) { foreach ($filtered_meta_sizes as $key => $size) { $images_file = path_join($uploadpath['basedir'], path_join($folder, $size['file'])); if (file_exists($images_file)) { $exclude[] = $key; } } } $flipped = array_flip($exclude); FW_Backup_Image_Recovery::$common_sizes = array_intersect_key($filtered_meta_sizes, $flipped); $diff = array_diff_key($filtered_theme_sizes, $flipped); $sizes = $diff; return $sizes; }
public function run_with_initialized_file_system() { $fs = new FW_Backup_Helper_File_System(); $db = new FW_Backup_Helper_Database(); $auto_install_dir = $this->backup()->get_auto_install_dir(); $upload_dir = wp_upload_dir(); $upload_dir = $upload_dir['basedir']; try { // Do Full Backup before Auto Install if (apply_filters('fw_ext_backup_do_backup_on_demo_content_install', true)) { @set_time_limit(30 * 60); $this->backup()->action()->do_backup_background_cron('cron_full'); } // Replace uploads directory $t = $fs->replace($fs->map($upload_dir), $fs->map("{$auto_install_dir}/uploads")); // Move backup directory from trashed dir into new upload dir if ($t) { $fs->move_existing("{$t}/backup", $fs->map("{$upload_dir}/backup")); // Remove trashed dir because we made Full Backup of the site $fs->rmdir($t); } if (file_exists("{$auto_install_dir}/database.txt")) { $file_with_sql = "{$auto_install_dir}/database.txt"; } else { $file_with_sql = "{$auto_install_dir}/database.sql"; } $db->import($file_with_sql, true, true, true); } catch (FW_Backup_Exception $exception) { return array('success' => false, 'data' => array('message' => $exception->getMessage())); } if ($this->backup()->get_config('image_recovery')) { $image_recovery = new FW_Backup_Image_Recovery(); $image_recovery->generate_attachment_images(); } do_action('fw_ext_backup_after_import_demo_content'); return array('success' => true); }