Beispiel #1
0
/**
 * 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;
}
Beispiel #2
0
/**
 * 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;
}