/** * 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); }
/** * 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(); }
/** * 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); }
/** * 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(); }
/** * 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(); }
/** * 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(); }