Exemplo n.º 1
0
/**
 * 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;
}
Exemplo n.º 2
0
/**
 * 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;
}
Exemplo n.º 6
0
/**
 * 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;
}
Exemplo n.º 9
0
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;
}
Exemplo n.º 11
0
/**
 * 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;
}
Exemplo n.º 12
0
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;
}
Exemplo n.º 13
0
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;
         }
     }
 }