コード例 #1
0
/**
 * Applies the preset discount, if any. This is separated from edd_listen_for_cart_discount() in order to allow items to be
 * added to the cart and for it to persist across page loads if necessary
 *
 * @return void
 */
function edd_apply_preset_discount()
{
    $code = sanitize_text_field(EDD()->session->get('preset_discount'));
    if (!$code) {
        return;
    }
    if (!edd_is_discount_valid($code, '', false)) {
        return;
    }
    $code = apply_filters('edd_apply_preset_discount', $code);
    edd_set_cart_discount($code);
    EDD()->session->set('preset_discount', null);
}
コード例 #2
0
/**
 * Validates the supplied discount sent via AJAX.
 *
 * @since 1.0
 * @return void
 */
function edd_ajax_apply_discount()
{
    if (isset($_POST['code'])) {
        $discount_code = sanitize_text_field($_POST['code']);
        $return = array('msg' => '', 'code' => $discount_code);
        $user = '';
        if (is_user_logged_in()) {
            $user = get_current_user_id();
        } else {
            parse_str($_POST['form'], $form);
            if (!empty($form['edd_email'])) {
                $user = urldecode($form['edd_email']);
            }
        }
        if (edd_is_discount_valid($discount_code, $user)) {
            $discount = edd_get_discount_by_code($discount_code);
            $amount = edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID));
            $discounts = edd_set_cart_discount($discount_code);
            $total = edd_get_cart_total($discounts);
            $return = array('msg' => 'valid', 'amount' => $amount, 'total_plain' => $total, 'total' => html_entity_decode(edd_currency_filter(edd_format_amount($total)), ENT_COMPAT, 'UTF-8'), 'code' => $discount_code, 'html' => edd_get_cart_discounts_html($discounts));
        } else {
            $errors = edd_get_errors();
            $return['msg'] = $errors['edd-discount-error'];
            edd_unset_error('edd-discount-error');
        }
        // Allow for custom discount code handling
        $return = apply_filters('edd_ajax_discount_response', $return);
        echo json_encode($return);
    }
    edd_die();
}
コード例 #3
0
/**
 * Purchase Form Validate Discounts
 *
 * @access      private
 * @since       1.0.8.1
 * @return      string
 */
function edd_purchase_form_validate_discounts()
{
    // Retrieve the discount stored in cookies
    $discounts = edd_get_cart_discounts();
    $user = '';
    if (isset($_POST['edd_user_login']) && !empty($_POST['edd_user_login'])) {
        $user = sanitize_text_field($_POST['edd_user_login']);
    } else {
        if (isset($_POST['edd_email']) && !empty($_POST['edd_email'])) {
            $user = sanitize_text_field($_POST['edd_email']);
        } else {
            if (is_user_logged_in()) {
                $user = wp_get_current_user()->user_email;
            }
        }
    }
    $error = false;
    // Check for valid discount(s) is present
    if (!empty($_POST['edd-discount']) && __('Enter discount', 'easy-digital-downloads') != $_POST['edd-discount']) {
        // Check for a posted discount
        $posted_discount = isset($_POST['edd-discount']) ? trim($_POST['edd-discount']) : false;
        // Add the posted discount to the discounts
        if ($posted_discount && (empty($discounts) || edd_multiple_discounts_allowed()) && edd_is_discount_valid($posted_discount, $user)) {
            edd_set_cart_discount($posted_discount);
        }
    }
    // If we have discounts, loop through them
    if (!empty($discounts)) {
        foreach ($discounts as $discount) {
            // Check if valid
            if (!edd_is_discount_valid($discount, $user)) {
                // Discount is not valid
                $error = true;
            }
        }
    } else {
        // No discounts
        return 'none';
    }
    if ($error) {
        edd_set_error('invalid_discount', __('One or more of the discounts you entered is invalid', 'easy-digital-downloads'));
    }
    return implode(', ', $discounts);
}
コード例 #4
0
/**
 * Validates the supplied discount sent via AJAX.
 *
 * @since 1.0
 * @return void
 */
function edd_ajax_apply_discount()
{
    if (isset($_POST['code']) && check_ajax_referer('edd_checkout_nonce', 'nonce')) {
        $user = isset($_POST['user']) ? $_POST['user'] : $_POST['email'];
        $return = array('msg' => '', 'code' => $_POST['code']);
        if (edd_is_discount_used($_POST['code'], $user)) {
            // Called twice if discount is not used (again by edd_is_discount_valid) but allows for beter usr msg and less execution if discount is used.
            $return['msg'] = __('This discount code has been used already', 'edd');
        } else {
            if (edd_is_discount_valid($_POST['code'], $user)) {
                $discount = edd_get_discount_by_code($_POST['code']);
                $amount = edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID));
                $discounts = edd_set_cart_discount($_POST['code']);
                $total = edd_get_cart_total($discounts);
                $return = array('msg' => 'valid', 'amount' => $amount, 'total' => html_entity_decode(edd_currency_filter(edd_format_amount($total)), ENT_COMPAT, 'UTF-8'), 'code' => $_POST['code'], 'html' => edd_get_cart_discounts_html($discounts));
            } else {
                $return['msg'] = __('The discount you entered is invalid', 'edd');
            }
        }
        echo json_encode($return);
    }
    edd_die();
}
コード例 #5
0
 /**
  * Load discount
  *
  * @since 2.0
  */
 public function share_product()
 {
     if (!isset($_POST['product_id'])) {
         return;
     }
     // check nonce
     check_ajax_referer('edd_sd_nonce', 'nonce');
     global $edd_options;
     // get discount code's ID from plugin settings
     $discount = edd_get_option('edd_sd_discount_code', '');
     // get discount code by ID
     $discount = edd_get_discount_code($discount);
     // set cart discount. Discount will only be applied if discount exists.
     $discounts = edd_set_cart_discount($discount);
     $total = edd_get_cart_total($discounts);
     // purchase was shared
     EDD()->session->set('edd_shared', true);
     // store the download ID temporarily
     EDD()->session->set('edd_shared_id', $_POST['product_id']);
     $return = apply_filters('edd_social_discounts_ajax_return', array('msg' => 'valid', 'success_title' => $this->success_title(), 'success_message' => $this->success_message($_POST['product_id']), 'product_id' => $_POST['product_id'], 'total' => html_entity_decode(edd_currency_filter(edd_format_amount($total)), ENT_COMPAT, 'UTF-8'), 'html' => edd_get_cart_discounts_html($discounts)));
     echo json_encode($return);
     edd_die();
 }
コード例 #6
0
/**
 * Validates the supplied discount sent via AJAX.
 *
 * @since 1.0
 * @return void
 */
function edd_ajax_apply_discount()
{
    if (isset($_POST['code'])) {
        $discount_code = $_POST['code'];
        $return = array('msg' => '', 'code' => $discount_code);
        if (edd_is_discount_valid($discount_code)) {
            $discount = edd_get_discount_by_code($discount_code);
            $amount = edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID));
            $discounts = edd_set_cart_discount($discount_code);
            $total = edd_get_cart_total($discounts);
            $return = array('msg' => 'valid', 'amount' => $amount, 'total_plain' => $total, 'total' => html_entity_decode(edd_currency_filter(edd_format_amount($total)), ENT_COMPAT, 'UTF-8'), 'code' => $_POST['code'], 'html' => edd_get_cart_discounts_html($discounts));
        } else {
            $errors = edd_get_errors();
            $return['msg'] = $errors['edd-discount-error'];
            edd_unset_error('edd-discount-error');
        }
        // Allow for custom discount code handling
        $return = apply_filters('edd_ajax_discount_response', $return);
        echo json_encode($return);
    }
    edd_die();
}