/** * Receipt Shortcode. * * Shows a donation receipt. * * @since 1.0 * * @param array $atts Shortcode attributes. * @param string $content * * @return string */ function give_receipt_shortcode($atts, $content = null) { global $give_receipt_args, $payment; $give_receipt_args = shortcode_atts(array('error' => esc_html__('Sorry, you are missing the payment key to view this donation receipt.', 'give'), 'price' => true, 'donor' => true, 'date' => true, 'payment_key' => false, 'payment_method' => true, 'payment_id' => true), $atts, 'give_receipt'); //set $session var $session = give_get_purchase_session(); //set payment key var if (isset($_GET['payment_key'])) { $payment_key = urldecode($_GET['payment_key']); } elseif ($session) { $payment_key = $session['purchase_key']; } elseif ($give_receipt_args['payment_key']) { $payment_key = $give_receipt_args['payment_key']; } $email_access = give_get_option('email_access'); // No payment_key found & Email Access is Turned on: if (!isset($payment_key) && $email_access == 'on' && !Give()->email_access->token_exists) { ob_start(); give_get_template_part('email-login-form'); return ob_get_clean(); } elseif (!isset($payment_key)) { return give_output_error($give_receipt_args['error'], false, 'error'); } $payment_id = give_get_purchase_id_by_key($payment_key); $user_can_view = give_can_view_receipt($payment_key); // Key was provided, but user is logged out. Offer them the ability to login and view the receipt. if (!$user_can_view && $email_access == 'on' && !Give()->email_access->token_exists) { ob_start(); give_get_template_part('email-login-form'); return ob_get_clean(); } elseif (!$user_can_view) { global $give_login_redirect; $give_login_redirect = give_get_current_page_url(); ob_start(); give_output_error(apply_filters('give_must_be_logged_in_error_message', esc_html__('You must be logged in to view this donation payment receipt.', 'give'))); give_get_template_part('shortcode', 'login'); $login_form = ob_get_clean(); return $login_form; } /* * Check if the user has permission to view the receipt. * * If user is logged in, user ID is compared to user ID of ID stored in payment meta * or if user is logged out and purchase was made as a guest, the purchase session is checked for * or if user is logged in and the user can view sensitive shop data. * */ if (!apply_filters('give_user_can_view_receipt', $user_can_view, $give_receipt_args)) { return give_output_error($give_receipt_args['error'], false, 'error'); } ob_start(); give_get_template_part('shortcode', 'receipt'); $display = ob_get_clean(); return $display; }
/** * Receipt Shortcode * * Shows an order receipt. * * @since 1.0 * * @param array $atts Shortcode attributes * @param string $content * * @return string */ function give_receipt_shortcode($atts, $content = null) { global $give_receipt_args, $payment; $give_receipt_args = shortcode_atts(array('error' => __('Sorry, it appears the viewing window for this donation receipt has expired or you do not have the permission to view this donation receipt.', 'give'), 'price' => true, 'date' => true, 'payment_key' => false, 'payment_method' => true, 'payment_id' => true), $atts, 'give_receipt'); //set $session var $session = give_get_purchase_session(); //set payment key var if (isset($_GET['payment_key'])) { $payment_key = urldecode($_GET['payment_key']); } elseif ($session) { $payment_key = $session['purchase_key']; } elseif ($give_receipt_args['payment_key']) { $payment_key = $give_receipt_args['payment_key']; } // No key found if (!isset($payment_key)) { return '<div class="give_errors"><p class="give_error">' . $give_receipt_args['error'] . '</p></div>'; } $payment_id = give_get_purchase_id_by_key($payment_key); $user_can_view = give_can_view_receipt($payment_key); // Key was provided, but user is logged out. Offer them the ability to login and view the receipt if (!$user_can_view && !empty($payment_key) && !is_user_logged_in() && !give_is_guest_payment($payment_id)) { global $give_login_redirect; $give_login_redirect = give_get_current_page_url(); ob_start(); echo '<div class="give_errors"><p class="give_error">' . __('You must be logged in to view this payment receipt.', 'give') . '</p></div>'; give_get_template_part('shortcode', 'login'); $login_form = ob_get_clean(); return $login_form; } /* * Check if the user has permission to view the receipt * * If user is logged in, user ID is compared to user ID of ID stored in payment meta * * Or if user is logged out and purchase was made as a guest, the purchase session is checked for * * Or if user is logged in and the user can view sensitive shop data * */ if (!apply_filters('give_user_can_view_receipt', $user_can_view, $give_receipt_args)) { return '<p class="edd-alert edd-alert-error">' . $give_receipt_args['error'] . '</p>'; } ob_start(); give_get_template_part('shortcode', 'receipt'); $display = ob_get_clean(); return $display; }