public function run() { $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']; // This forces *Restore* page to be opened event if // request_filesystem_credentials is not required. In the // latter case JavaScript will submit the page automatically // which opens up a *Restore in Progress* popup. if ($_SERVER['REQUEST_METHOD'] != 'POST') { throw new FW_Backup_Exception_Method_Not_Allowed(); } $restore = new FW_Backup_Process_Restore(); $restore->request_filesystem_credentials(); // Increase time limit. Run, until user cancelled set_time_limit(0); try { $fs->check_permissions(); // 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) { FW_Flash_Messages::add('auto-install', $exception->getMessage(), 'error'); // otherwise flash messages wont show wp_redirect($this->backup()->action()->url_backup_auto_install_page()); exit; } 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'); // get rid of update notifications wp_redirect(admin_url('update-core.php?force-check=1&auto-install-redirect=' . esc_url(admin_url()))); exit; }
private function do_backup_restore($post_id) { try { $process = new FW_Backup_Process_Restore(); $process->run($post_id); } catch (FW_Backup_Exception_Request_File_System_Credentials $exception) { $this->backup()->set_request_filesystem_credentials($exception->get_html()); return; } catch (FW_Backup_Exception_Method_Not_Allowed $exception) { return; } catch (FW_Backup_Exception $exception) { FW_Flash_Messages::add('backup-restore', $exception->getMessage(), 'error'); } wp_redirect($this->url_backup_page()); exit; }