/** * Perform a manual backup via ajax */ function hmbkp_ajax_request_do_backup() { check_ajax_referer('hmbkp_nonce', 'nonce'); if (empty($_POST['hmbkp_schedule_id'])) { die; } // We want to display any fatal errors in this ajax request so we can catch them on the other side. error_reporting(E_ERROR | E_USER_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR); @ini_set('display_errors', 'On'); @ini_set('html_errors', 'Off'); // Force a memory error for testing purposes //ini_set( 'memory_limit', '2M' ); //function a() { a(); } a(); // Force a 500 error for testing purposes //header( 'HTTP/1.1 500 Internal Server Error' ); ignore_user_abort(true); hmbkp_cleanup(); $schedule = new HMBKP_Scheduled_Backup(sanitize_text_field(urldecode($_POST['hmbkp_schedule_id']))); $schedule->run(); $errors = array_merge($schedule->get_errors(), $schedule->get_warnings()); $error_message = ''; foreach ($errors as $error_set) { $error_message .= implode("\n\r", $error_set); } if ($error_message && file_exists($schedule->get_archive_filepath())) { $error_message .= 'HMBKP_SUCCESS'; } if (trim($error_message)) { echo $error_message; } die; }
/** * Perform a manual backup * * Handles ajax requests as well as standard GET requests */ function hmbkp_request_do_backup() { if (empty($_GET['hmbkp_schedule_id'])) { die; } if (defined('DOING_AJAX') && DOING_AJAX) { check_ajax_referer('hmbkp_run_schedule', 'hmbkp_run_schedule_nonce'); } else { check_admin_referer('hmbkp_run_schedule', 'hmbkp_run_schedule_nonce'); } // Fixes an issue on servers which only allow a single session per client session_write_close(); // We want to display any fatal errors in this ajax request so we can catch them on the other side. error_reporting(E_ERROR | E_USER_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR); @ini_set('display_errors', 'On'); @ini_set('html_errors', 'Off'); // Force a memory error for testing purposes //ini_set( 'memory_limit', '2M' ); //function a() { a(); } a(); // Force a 500 error for testing purposes //header( 'HTTP/1.1 500 Internal Server Error' ); ignore_user_abort(true); HMBKP_Path::get_instance()->cleanup(); $schedule = new HMBKP_Scheduled_Backup(sanitize_text_field(urldecode($_GET['hmbkp_schedule_id']))); $schedule->run(); HMBKP_Notices::get_instance()->clear_all_notices(); $errors = array_merge($schedule->get_errors(), $schedule->get_warnings()); $error_message = ''; foreach ($errors as $error_set) { $error_message .= implode("\n\r", $error_set); } if ($error_message && file_exists($schedule->get_archive_filepath()) && defined('DOING_AJAX') && DOING_AJAX) { $error_message .= ' HMBKP_SUCCESS'; } if (trim($error_message) && defined('DOING_AJAX') && DOING_AJAX) { echo $error_message; } if (trim($error_message) && defined('DOING_AJAX')) { wp_die($error_message); } if (!defined('DOING_AJAX')) { wp_safe_redirect(hmbkp_get_settings_url(), '303'); } die; }