session->get( 'edd_success_errors' ); if ( $errors || $successes ) { echo edd_build_errors_html( $errors ); echo edd_build_successes_html( $successes ); edd_clear_errors(); } } add_action( 'edd_purchase_form_before_submit', 'edd_print_errors' ); add_action( 'edd_ajax_checkout_errors', 'edd_print_errors' ); add_action( 'edd_print_errors', 'edd_print_errors' ); /** * Formats error messages and returns an HTML string. * * @param array $errors * * @since 2.11 * @return string */ function edd_build_errors_html( $errors ) { $error_html = ''; $classes = apply_filters( 'edd_error_class', array( 'edd_errors', 'edd-alert', 'edd-alert-error' ) ); if ( ! empty( $errors ) && is_array( $errors ) ) { $error_html .= '
'; // Loop error codes and display errors foreach ( $errors as $error_id => $error ) { $error_html .= '

' . __( 'Error', 'easy-digital-downloads' ) . ': ' . $error . '

'; } $error_html .= '
'; } return $error_html; } /** * Builds the HTML output for the sucess messages. * * @since 3.1 * @param array $successes * @return string */ function edd_build_successes_html( $successes ) { if ( empty( $successes ) || ! is_array( $successes ) ) { return ''; } $html = '
'; foreach ( $successes as $id => $message ) { $html .= '

'; $html .= '' . esc_html__( 'Success', 'easy-digital-downloads' ) . ': '; $html .= $message; $html .= '

'; } $html .= '
'; return $html; } /** * Get Errors * * Retrieves all error messages stored during the checkout process. * If errors exist, they are returned. * * @since 1.0 * @uses EDD_Session::get() * @return mixed array if errors are present, false if none found */ function edd_get_errors() { $errors = EDD()->session->get( 'edd_errors' ); $errors = apply_filters( 'edd_errors', $errors ); return $errors; } /** * Set Error * * Stores an error in a session var. * * @since 1.0 * @uses EDD_Session::get() * @param int $error_id ID of the error being set * @param string $error_message Message to store with the error * @return void */ function edd_set_error( $error_id, $error_message ) { $errors = edd_get_errors(); if ( ! $errors ) { $errors = array(); } $errors[ $error_id ] = $error_message; EDD()->session->set( 'edd_errors', $errors ); } /** * Stores an array of success messages in a session variable. * * @since 3.1 * @uses EDD_Session::set() * @param string $error_id * @param string $error_message * @return void */ function edd_set_success( $error_id, $error_message ) { $successes = EDD()->session->get( 'edd_success_errors' ); if ( ! $successes ) { $successes = array(); } $successes[ $error_id ] = $error_message; EDD()->session->set( 'edd_success_errors', $successes ); } /** * Clears all stored errors. * * @since 1.0 * @uses EDD_Session::set() * @return void */ function edd_clear_errors() { EDD()->session->set( 'edd_errors', null ); EDD()->session->set( 'edd_success_errors', null ); } /** * Removes (unsets) a stored error * * @since 1.3.4 * @uses EDD_Session::set() * @param int $error_id ID of the error being set * @return string */ function edd_unset_error( $error_id ) { $errors = edd_get_errors(); if ( $errors && isset( $errors[ $error_id ] ) ) { unset( $errors[ $error_id ] ); EDD()->session->set( 'edd_errors', $errors ); } } /** * Register die handler for edd_die() * * @author Sunny Ratilal * @since 1.6 * * @return void */ function _edd_die_handler() { die(); } /** * Wrapper function for wp_die(). * * This function adds filters for wp_die() which kills execution of the script * using wp_die(). This allows us to then to work with functions using edd_die() * in the unit tests. * * @author Sunny Ratilal * @since 1.6 * @return void */ function edd_die( $message = '', $title = '', $status = 400 ) { if ( ! defined( 'EDD_UNIT_TESTS' ) ) { add_filter( 'wp_die_ajax_handler', '_edd_die_handler', 10, 3 ); add_filter( 'wp_die_handler' , '_edd_die_handler', 10, 3 ); add_filter( 'wp_die_json_handler', '_edd_die_handler', 10, 3 ); } wp_die( $message, $title, array( 'response' => $status ) ); }