get_meta( '_edd_payment_meta', true ); $from_name = edd_get_option( 'from_name', wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ) ); $from_name = apply_filters( 'edd_purchase_from_name', $from_name, $payment_id, $payment_data ); $from_email = edd_get_option( 'from_email', get_bloginfo( 'admin_email' ) ); $from_email = apply_filters( 'edd_purchase_from_address', $from_email, $payment_id, $payment_data ); if ( empty( $to_email ) ) { $to_email = $payment->email; } $subject = edd_get_option( 'purchase_subject', __( 'Purchase Receipt', 'easy-digital-downloads' ) ); $subject = apply_filters( 'edd_purchase_subject', wp_strip_all_tags( $subject ), $payment_id ); $subject = wp_specialchars_decode( edd_do_email_tags( $subject, $payment_id ) ); $heading = edd_get_option( 'purchase_heading', __( 'Purchase Receipt', 'easy-digital-downloads' ) ); $heading = apply_filters( 'edd_purchase_heading', $heading, $payment_id, $payment_data ); $heading = edd_do_email_tags( $heading, $payment_id ); $attachments = apply_filters( 'edd_receipt_attachments', array(), $payment_id, $payment_data ); $message = edd_do_email_tags( edd_get_email_body_content( $payment_id, $payment_data ), $payment_id ); $emails = EDD()->emails; $emails->__set( 'from_name', $from_name ); $emails->__set( 'from_email', $from_email ); $emails->__set( 'heading', $heading ); $headers = apply_filters( 'edd_receipt_headers', $emails->get_headers(), $payment_id, $payment_data ); $emails->__set( 'headers', $headers ); $sent = $emails->send( $to_email, $subject, $message, $attachments ); if ( $admin_notice && ! edd_admin_notices_disabled( $payment_id ) ) { do_action( 'edd_admin_sale_notice', $payment_id, $payment_data ); } return $sent; } /** * Email the download link(s) and payment confirmation to the admin accounts for testing. * * @since 1.5 * @return void */ function edd_email_test_purchase_receipt() { $from_name = edd_get_option( 'from_name', wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ) ); $from_name = apply_filters( 'edd_purchase_from_name', $from_name, 0, array() ); $from_email = edd_get_option( 'from_email', get_bloginfo( 'admin_email' ) ); $from_email = apply_filters( 'edd_test_purchase_from_address', $from_email, 0, array() ); $subject = edd_get_option( 'purchase_subject', __( 'Purchase Receipt', 'easy-digital-downloads' ) ); $subject = apply_filters( 'edd_purchase_subject', wp_strip_all_tags( $subject ), 0 ); $subject = wp_specialchars_decode( edd_do_email_tags( $subject, 0 ) ); $heading = edd_get_option( 'purchase_heading', __( 'Purchase Receipt', 'easy-digital-downloads' ) ); $heading = edd_email_preview_template_tags( apply_filters( 'edd_purchase_heading', $heading, 0, array() ) ); $attachments = apply_filters( 'edd_receipt_attachments', array(), 0, array() ); $message = edd_email_preview_template_tags( edd_get_email_body_content( 0, array() ), 0 ); $emails = EDD()->emails; $emails->__set( 'from_name' , $from_name ); $emails->__set( 'from_email', $from_email ); $emails->__set( 'heading' , $heading ); $headers = apply_filters( 'edd_receipt_headers', $emails->get_headers(), 0, array() ); $emails->__set( 'headers', $headers ); $emails->send( edd_get_admin_notice_emails(), $subject, $message, $attachments ); } /** * Sends the Admin Sale Notification Email * * @since 1.4.2 * @param int $payment_id Payment ID (default: 0) * @param array $payment_data Payment Meta and Data * @return void */ function edd_admin_email_notice( $payment_id = 0, $payment_data = array() ) { $payment_id = absint( $payment_id ); if( empty( $payment_id ) ) { return; } if( ! edd_get_payment_by( 'id', $payment_id ) ) { return; } $from_name = edd_get_option( 'from_name', wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ) ); $from_name = apply_filters( 'edd_purchase_from_name', $from_name, $payment_id, $payment_data ); $from_email = edd_get_option( 'from_email', get_bloginfo( 'admin_email' ) ); $from_email = apply_filters( 'edd_admin_sale_from_address', $from_email, $payment_id, $payment_data ); $subject = edd_get_option( 'sale_notification_subject', sprintf( __( 'New download purchase - Order #%1$s', 'easy-digital-downloads' ), $payment_id ) ); $subject = apply_filters( 'edd_admin_sale_notification_subject', wp_strip_all_tags( $subject ), $payment_id ); $subject = wp_specialchars_decode( edd_do_email_tags( $subject, $payment_id ) ); $heading = edd_get_option( 'sale_notification_heading', __( 'New Sale!', 'easy-digital-downloads' ) ); $heading = apply_filters( 'edd_admin_sale_notification_heading', $heading, $payment_id, $payment_data ); $heading = edd_do_email_tags( $heading, $payment_id ); $attachments = apply_filters( 'edd_admin_sale_notification_attachments', array(), $payment_id, $payment_data ); $message = edd_get_sale_notification_body_content( $payment_id, $payment_data ); $emails = EDD()->emails; $emails->__set( 'from_name', $from_name ); $emails->__set( 'from_email', $from_email ); $emails->__set( 'heading', $heading ); $headers = apply_filters( 'edd_admin_sale_notification_headers', $emails->get_headers(), $payment_id, $payment_data ); $emails->__set( 'headers', $headers ); $emails->send( edd_get_admin_notice_emails(), $subject, $message, $attachments ); } add_action( 'edd_admin_sale_notice', 'edd_admin_email_notice', 10, 2 ); /** * Retrieves the emails for which admin notifications are sent to (these can be * changed in the EDD Settings) * * @since 1.0 * @return mixed */ function edd_get_admin_notice_emails() { $emails = edd_get_option( 'admin_notice_emails', false ); $emails = strlen( trim( $emails ) ) > 0 ? $emails : get_bloginfo( 'admin_email' ); $emails = array_map( 'trim', explode( "\n", $emails ) ); return apply_filters( 'edd_admin_notice_emails', $emails ); } /** * Checks whether admin sale notices are disabled * * @since 1.5.2 * * @param int $payment_id * @return mixed */ function edd_admin_notices_disabled( $payment_id = 0 ) { $ret = edd_get_option( 'disable_admin_notices', false ); return (bool) apply_filters( 'edd_admin_notices_disabled', $ret, $payment_id ); } /** * Get sale notification email text * * Returns the stored email text if available, the standard email text if not * * @since 1.7 * @author Daniel J Griffiths * @return string $message */ function edd_get_default_sale_notification_email() { $default_email_body = __( 'Hello', 'easy-digital-downloads' ) . "\n\n" . sprintf( __( 'A %s purchase has been made', 'easy-digital-downloads' ), edd_get_label_plural() ) . ".\n\n"; $default_email_body .= sprintf( __( '%s sold:', 'easy-digital-downloads' ), edd_get_label_plural() ) . "\n\n"; $default_email_body .= '{download_list}' . "\n\n"; $default_email_body .= __( 'Purchased by: ', 'easy-digital-downloads' ) . ' {name}' . "\n"; $default_email_body .= __( 'Amount: ', 'easy-digital-downloads' ) . ' {price}' . "\n"; $default_email_body .= __( 'Payment Method: ', 'easy-digital-downloads' ) . ' {payment_method}' . "\n\n"; $default_email_body .= __( 'Thank you', 'easy-digital-downloads' ); $message = edd_get_option( 'sale_notification', false ); $message = ! empty( $message ) ? $message : $default_email_body; return $message; } /** * Get various correctly formatted names used in emails * * @since 1.9 * @param $user_info * @param $payment EDD_Payment for getting the names * * @return array $email_names */ function edd_get_email_names( $user_info, $payment = false ) { $email_names = array(); $email_names['fullname'] = ''; if ( $payment instanceof EDD_Payment ) { $email_names['name'] = $payment->email; $email_names['username'] = $payment->email; if ( $payment->user_id > 0 ) { $user_data = get_userdata( $payment->user_id ); $email_names['name'] = $payment->first_name; $email_names['fullname'] = trim( $payment->first_name . ' ' . $payment->last_name ); if ( ! empty( $user_data->user_login ) ) { $email_names['username'] = $user_data->user_login; } } elseif ( ! empty( $payment->first_name ) ) { $email_names['name'] = $payment->first_name; $email_names['fullname'] = trim( $payment->first_name . ' ' . $payment->last_name ); $email_names['username'] = $payment->first_name; } } else { if ( is_serialized( $user_info ) ) { preg_match( '/[oO]\s*:\s*\d+\s*:\s*"\s*(?!(?i)(stdClass))/', $user_info, $matches ); if ( ! empty( $matches ) ) { return array( 'name' => '', 'fullname' => '', 'username' => '', ); } else { $user_info = maybe_unserialize( $user_info ); } } if ( isset( $user_info['id'] ) && $user_info['id'] > 0 && isset( $user_info['first_name'] ) ) { $user_data = get_userdata( $user_info['id'] ); $email_names['name'] = $user_info['first_name']; $email_names['fullname'] = $user_info['first_name'] . ' ' . $user_info['last_name']; $email_names['username'] = $user_data->user_login; } elseif ( isset( $user_info['first_name'] ) ) { $email_names['name'] = $user_info['first_name']; $email_names['fullname'] = $user_info['first_name'] . ' ' . $user_info['last_name']; $email_names['username'] = $user_info['first_name']; } else { $email_names['name'] = $user_info['email']; $email_names['username'] = $user_info['email']; } } return $email_names; } /** * Handle installation and connection for Recapture via ajax * * @since 2.10.2 */ function edd_recapture_remote_install_handler () { if ( ! current_user_can( 'manage_shop_settings' ) || ! current_user_can( 'install_plugins' ) ) { wp_send_json_error( array( 'error' => __( 'You do not have permission to do this.', 'easy-digital-downloads' ) ) ); } include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; include_once ABSPATH . 'wp-admin/includes/file.php'; include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $plugins = get_plugins(); if( ! array_key_exists( 'recapture-for-edd/recapture.php', $plugins ) ) { /* * Use the WordPress Plugins API to get the plugin download link. */ $api = plugins_api( 'plugin_information', array( 'slug' => 'recapture-for-edd', ) ); if ( is_wp_error( $api ) ) { wp_send_json_error( array( 'error' => $api->get_error_message(), 'debug' => $api ) ); } /* * Use the AJAX Upgrader skin to quietly install the plugin. */ $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() ); $install = $upgrader->install( $api->download_link ); if ( is_wp_error( $install ) ) { wp_send_json_error( array( 'error' => $install->get_error_message(), 'debug' => $api ) ); } $activated = activate_plugin( $upgrader->plugin_info() ); } else { $activated = activate_plugin( 'recapture-for-edd/recapture.php' ); } /* * Final check to see if Recapture is available. */ if ( is_wp_error( $activated ) ) { wp_send_json_error( array( 'error' => __( 'Something went wrong. Recapture for EDD was not installed correctly.', 'easy-digital-downloads' ) ) ); } wp_send_json_success(); } add_action( 'wp_ajax_edd_recapture_remote_install', 'edd_recapture_remote_install_handler' ); /** * Maybe adds a notice to abandoned payments if Recapture isn't installed. * * @since 2.10.2 * * @param int $payment_id The ID of the abandoned payment, for which a Recapture notice is being thrown. */ function maybe_add_recapture_notice_to_abandoned_payment( $payment_id ) { if ( ! class_exists( 'Recapture' ) && 'abandoned' === edd_get_payment_status( $payment_id ) && ! get_user_meta( get_current_user_id(), '_edd_try_recapture_dismissed', true ) ) { ?>
tag, %2$s - tag, %3$s - tag, %4$s - tag */ __( '%1$sRecover abandoned purchases like this one.%2$s %3$sTry Recapture for free%4$s.', 'easy-digital-downloads' ), '', '', '', '' ) ); ?>
'dismiss_notices', 'edd_notice' => 'try_recapture', ) ), 'edd_notice_nonce' ) ), '" type="button" class="notice-dismiss">', '', ' ' ) ); ?>