/** * Filter the page titles * * @since 1.0 */ function affwp_show_the_title($title, $id) { // about if ('page-templates/about.php' == get_post_meta($id, '_wp_page_template', true)) { $title = __('Who we are', 'affwp'); } // purchase confirmation if (function_exists('edd_is_success_page') && edd_is_success_page() && $id == get_the_ID()) { if (edd_get_purchase_session()) { $title = sprintf(__('Thanks %s!', 'affwp'), affwp_edd_purchase_get_first_name()); } else { $title = __('Thanks!', 'affwp'); } } return $title; }
/** * List each download with the email of the author (Shop Vendor who added it) */ function sumobi_edd_vendor_emails() { ob_start(); $downloads = edd_get_purchase_session(); $downloads = $downloads['downloads']; if ($downloads) { foreach ($downloads as $key => $download) { $post = get_post($download['id']); $author_id = $post->post_author; // download title echo get_the_title($download['id']) . '<br/>'; // the email address of the author who added the download echo get_the_author_meta('user_email', $author_id) . '<br/><br/>'; } } $html = ob_get_clean(); return $html; }
public static function footer() { global $edd_receipt_args; ?> <!-- start Mixpanel --> <script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" "); for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]); mixpanel.init("<?php echo FT_MP_API_KEY; ?> ");</script> <!-- end Mixpanel --> <?php if (!$edd_receipt_args['id']) { return; } $sent = EDD()->session->get('ft_mp_sent_' . $edd_receipt_args['id']); if ($sent) { return; } // global $edd_receipt_args; $success_page = edd_get_option('success_page') ? is_page(edd_get_option('success_page')) : false; if (!$success_page || !edd_is_success_page()) { return; } $session = edd_get_purchase_session(); $price = $session['price']; $cart_items = $session['cart_details']; if (isset($edd_receipt_args['id'])) { EDD()->session->set('ft_mp_sent_' . $edd_receipt_args['id'], true); } // $session['user_info']['id'] ?> <script type="text/javascript"> mixpanel.identify( <?php echo $session['user_info']['id']; ?> ); mixpanel.people.set( { '$first_name' : '<?php echo esc_attr($session['user_info']['first_name']); ?> ', '$last_name' : '<?php echo esc_attr($session['user_info']['last_name']); ?> ', '$email' : "<?php echo esc_attr($session['user_info']['email']); ?> ", }); <?php foreach ($cart_items as $product) { ?> mixpanel.people.track_charge( <?php echo floatval($product["price"]); ?> , { "Product Name": '<?php echo esc_attr($product["name"]); ?> ' } ); mixpanel.track( 'Purchase', {"Amount": <?php echo floatval($product["price"]); ?> , "Product Name":<?php echo json_encode($product["name"]); ?> } ); mixpanel.people.append( 'Product Name', '<?php echo esc_attr($product["name"]); ?> ' ); <?php } ?> </script> <?php }
/** * Receipt Shortcode * * Shows an order receipt. * * @since 1.4 * @param array $atts Shortcode attributes * @param string $content * @return string */ function edd_receipt_shortcode($atts, $content = null) { global $edd_receipt_args; $edd_receipt_args = shortcode_atts(array('error' => __('Sorry, trouble retrieving payment receipt.', 'edd'), 'price' => true, 'discount' => true, 'products' => true, 'date' => true, 'notes' => true, 'payment_key' => true, 'payment_method' => true, 'payment_id' => true), $atts); $session = edd_get_purchase_session(); if (isset($_GET['purchase_key'])) { $purchase_key = urldecode($_GET['purchase_key']); } else { if ($session) { $purchase_key = $session['purchase_key']; } } // No key found if (!isset($purchase_key)) { return $edd_receipt_args['error']; } $edd_receipt_args['id'] = edd_get_purchase_id_by_key($purchase_key); $user = edd_get_payment_meta_user_info($edd_receipt_args['id']); // Not the proper user if (is_user_logged_in() && $user['id'] != get_current_user_id()) { return $edd_receipt_args['error']; } ob_start(); edd_get_template_part('shortcode', 'receipt'); $display = ob_get_clean(); return $display; }
/** * Shows "Purchase Processing" message for PayPal payments are still pending on site return * * This helps address the Race Condition, as detailed in issue #1839 * * @since 1.9 * @return string */ function edd_paypal_success_page_content($content) { if (!isset($_GET['payment-id']) && !edd_get_purchase_session()) { return $content; } $payment_id = isset($_GET['payment-id']) ? absint($_GET['payment-id']) : false; if (!$payment_id) { $session = edd_get_purchase_session(); $payment_id = edd_get_purchase_id_by_key($session['purchase_key']); } $payment = get_post($payment_id); if ($payment && 'pending' == $payment->post_status) { // Payment is still pending so show processing indicator to fix the Race Condition, issue # ob_start(); edd_get_template_part('payment', 'processing'); $content = ob_get_clean(); } return $content; }
/** * Receipt Shortcode * * Shows an order receipt. * * @since 1.4 * @param array $atts Shortcode attributes * @param string $content * @return string */ function edd_receipt_shortcode($atts, $content = null) { global $edd_receipt_args; $edd_receipt_args = shortcode_atts(array('error' => __('Sorry, trouble retrieving payment receipt.', 'easy-digital-downloads'), 'price' => true, 'discount' => true, 'products' => true, 'date' => true, 'notes' => true, 'payment_key' => false, 'payment_method' => true, 'payment_id' => true), $atts, 'edd_receipt'); $session = edd_get_purchase_session(); if (isset($_GET['payment_key'])) { $payment_key = urldecode($_GET['payment_key']); } elseif ($edd_receipt_args['payment_key']) { $payment_key = $edd_receipt_args['payment_key']; } else { if ($session) { $payment_key = $session['purchase_key']; } } // No key found if (!isset($payment_key)) { return '<p class="edd-alert edd-alert-error">' . $edd_receipt_args['error'] . '</p>'; } $payment_id = edd_get_purchase_id_by_key($payment_key); $user_can_view = edd_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() && !edd_is_guest_payment($payment_id)) { global $edd_login_redirect; $edd_login_redirect = edd_get_current_page_url(); ob_start(); echo '<p class="edd-alert edd-alert-warn">' . __('You must be logged in to view this payment receipt.', 'easy-digital-downloads') . '</p>'; edd_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('edd_user_can_view_receipt', $user_can_view, $edd_receipt_args)) { return '<p class="edd-alert edd-alert-error">' . $edd_receipt_args['error'] . '</p>'; } ob_start(); edd_get_template_part('shortcode', 'receipt'); $display = ob_get_clean(); return $display; }
/** * Determines the receipt visibility status * * @return bool Whether the receipt is visible or not. */ function edd_can_view_receipt($payment_key = '') { $return = false; if (empty($payment_key)) { return $return; } global $edd_receipt_args; $edd_receipt_args['id'] = edd_get_purchase_id_by_key($payment_key); $user_id = (int) edd_get_payment_user_id($edd_receipt_args['id']); $payment_meta = edd_get_payment_meta($edd_receipt_args['id']); if (is_user_logged_in()) { if ($user_id === (int) get_current_user_id()) { $return = true; } elseif (wp_get_current_user()->user_email === edd_get_payment_user_email($edd_receipt_args['id'])) { $return = true; } elseif (current_user_can('view_shop_sensitive_data')) { $return = true; } } $session = edd_get_purchase_session(); if (!empty($session) && !is_user_logged_in()) { if ($session['purchase_key'] === $payment_meta['key']) { $return = true; } } return (bool) apply_filters('edd_can_view_receipt', $return, $payment_key); }
/** * Receipt Shortcode * * Shows an order receipt. * * @since 1.4 * @param array $atts Shortcode attributes * @param string $content * @return string */ function edd_receipt_shortcode($atts, $content = null) { global $edd_receipt_args; $edd_receipt_args = shortcode_atts(array('error' => __('Sorry, trouble retrieving payment receipt.', 'edd'), 'price' => true, 'discount' => true, 'products' => true, 'date' => true, 'notes' => true, 'payment_key' => false, 'payment_method' => true, 'payment_id' => true), $atts, 'edd_receipt'); $session = edd_get_purchase_session(); if (isset($_GET['payment_key'])) { $payment_key = urldecode($_GET['payment_key']); } elseif ($edd_receipt_args['payment_key']) { $payment_key = $edd_receipt_args['payment_key']; } else { if ($session) { $payment_key = $session['purchase_key']; } } // No key found if (!isset($payment_key)) { return $edd_receipt_args['error']; } $edd_receipt_args['id'] = edd_get_purchase_id_by_key($payment_key); $customer_id = edd_get_payment_user_id($edd_receipt_args['id']); /* * 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 * */ $user_can_view = is_user_logged_in() && $customer_id == get_current_user_id() || ($customer_id == 0 || $customer_id == '-1') && !is_user_logged_in() && edd_get_purchase_session() || current_user_can('view_shop_sensitive_data'); if (!apply_filters('edd_user_can_view_receipt', $user_can_view, $edd_receipt_args)) { return $edd_receipt_args['error']; } ob_start(); edd_get_template_part('shortcode', 'receipt'); $display = ob_get_clean(); return $display; }
function affwp_edd_optimizely_revenue_tracking() { $session = edd_get_purchase_session(); if (!$session || !edd_is_success_page()) { return; } $payment_id = edd_get_purchase_id_by_key($session['purchase_key']); ?> <script> var price = <?php echo edd_get_payment_amount($payment_id); ?> ; window.optimizely = window.optimizely || []; window.optimizely.push(['trackEvent', 'purchase_complete', {'revenue': price * 100}]); </script> <?php }
/** * Filter Success Page Content * * Applies filters to the success page content. * * @access private * @since 1.0 * @return string */ function edd_filter_success_page_content($content) { global $edd_options; if (isset($edd_options['success_page']) && isset($_GET['payment-confirmation']) && is_page($edd_options['success_page'])) { if (has_filter('edd_payment_confirm_' . $_GET['payment-confirmation'])) { $content = apply_filters('edd_payment_confirm_' . $_GET['payment-confirmation'], $content); } } if (isset($edd_options['success_page']) && is_page($edd_options['success_page'])) { if (isset($edd_options['show_links_on_success'])) { // show download links to non logged-in users if ($purchase_data = edd_get_purchase_session()) { $content .= edd_get_purchase_download_links($purchase_data); } } } return $content; }
/** * Get's the customer's first name from purchase session * @return [type] [description] */ function affwp_edd_purchase_get_first_name() { // get purchase session $purchase_session = edd_get_purchase_session(); // get the key $purchase_key = $purchase_session['purchase_key']; // get the payment ID from the purchase key $payment_id = edd_get_purchase_id_by_key($purchase_key); $user_info = edd_get_payment_meta_user_info($payment_id); $first_name = $user_info['first_name']; if ($first_name) { return $first_name; } return null; }
function edd_downloads_upgrade_to_cart($item) { $post_data = urldecode($_REQUEST['post_data']); $post_data_formated = array(); if (strstr($post_data, "upgrade_license") && strstr($post_data, "upgrade_product_to")) { $post_data_split = explode("&", $post_data); foreach ($post_data_split as $data_split) { $data_array = explode("=", $data_split); $post_data_formated[$data_array[0]] = $data_array[1]; } } if (isset($post_data_formated['upgrade_license']) && isset($post_data_formated['upgrade_product_to'])) { $price_id = isset($item['options']['price_id']) ? $item['options']['price_id'] : 0; $download_files = edd_get_download_files($post_data_formated['upgrade_product_to'], $price_id); $post_meta = get_post_meta(absint($post_data_formated['upgrade_license']), '_edd_sl_download_id', true); $old_price_id = get_post_meta(absint($post_data_formated['upgrade_license']), '_edd_sl_download_price_id', true); $old_download_file = edd_get_download_files($post_meta, $old_price_id); $item['upgrade'] = array(); $item['upgrade']['old_product'] = absint($post_data_formated['old_product']); $item['upgrade']['new_attachment_id'] = isset($download_files[0]['attachment_id']) ? absint($download_files[0]['attachment_id']) : 0; $item['upgrade']['old_attachment_id'] = isset($old_download_file[0]['attachment_id']) ? absint($old_download_file[0]['attachment_id']) : 0; $item['upgrade']['upgrade_license'] = absint($post_data_formated['upgrade_license']); $item['upgrade']['upgrade_product_to'] = absint($post_data_formated['upgrade_product_to']); if (isset($item['options']) && !empty($item['options'])) { $item['upgrade']['options'] = $item['options']; } $old_product_price = edd_get_cart_item_price(absint($post_data_formated['old_product']), $item['options']); $new_product_price = edd_get_cart_item_price(absint($post_data_formated['upgrade_product_to']), $item['options']); $item['upgrade']['upgrade_price'] = edd_format_amount($new_product_price - $old_product_price); //edd_get_cart_item_price( absint($post_data_formated['upgrade_product_to']), $item['options'] ); $payment_id_lic = get_post_meta($post_data_formated['upgrade_license'], '_edd_sl_payment_id', true); $item['upgrade']['upgrade_product_used'] = 0; $session = edd_get_purchase_session(); $payment_key = edd_get_payment_key(absint($payment_id_lic)); $session['purchase_key'] = $payment_key; edd_set_purchase_session($session); EDD()->session->set('upgrade_license', $payment_key); } return $item; }
function pp_edd_optimizely_revenue_tracking() { if (!function_exists('edd_get_purchase_session')) { return; } $session = edd_get_purchase_session(); if (!$session) { return; } $payment_id = edd_get_purchase_id_by_key($session['purchase_key']); ?> <script> var price = <?php echo edd_get_payment_amount($payment_id); ?> window.optimizely = window.optimizely || []; window.optimizely.push(['trackEvent', 'purchase_complete', {'revenue': price * 100}]); </script> <?php }
/** * Redirect customers to custom page if they have arrived from PayPal or other similar payment gateways that return the customer after successful purchase. * * @since 1.0.1 */ function template_redirect() { global $edd_options; // check if we have query string and on purchase confirmation page if (!is_page($edd_options['success_page'])) { return; } // check query string for PayPal and setup redirect. if (isset($_GET['payment-confirmation']) && $_GET['payment-confirmation']) { $purchase_session = edd_get_purchase_session(); $cart_items = $purchase_session['downloads']; // get the download ID from cart items array if ($cart_items) { foreach ($cart_items as $download) { $download_id = $download['id']; } } else { return; } // return if more than one item exists in cart. The default purchase confirmation will be used if (count($cart_items) > 1) { return; } // check if the redirect is active if (edd_csr_is_redirect_active(edd_csr_get_redirect_id($download_id))) { // get redirect post ID from the download ID $redirect_id = edd_csr_get_redirect_id($download_id); // get the page ID from the redirect ID $redirect = edd_csr_get_redirect_page_id($redirect_id); // get the permalink from the redirect ID $redirect = get_permalink($redirect); // redirect wp_redirect($redirect, 301); exit; } } }