/** * AJAX Validate Discount * * Validates the supplied discount. * * @access private * @since 1.0 * @return string */ function edd_ajax_validate_discount() { if (isset($_POST['code']) && check_ajax_referer('edd_ajax_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)) { $price = edd_get_cart_amount(); $discounted_price = edd_get_discounted_amount($_POST['code'], $price); $return = array('msg' => 'valid', 'amount' => edd_currency_filter(edd_format_amount($discounted_price)), 'code' => $_POST['code']); } else { $return['msg'] = __('The discount you entered is invalid', 'edd'); } } echo json_encode($return); } die; }
/** * Check whether a discount code is valid (when purchasing). * * @since 1.0 * @param string $code Discount Code * @param string $user User info * @return bool */ function edd_is_discount_valid($code = '', $user = '', $set_error = true) { $return = false; $discount_id = edd_get_discount_id_by_code($code); $user = trim($user); if (edd_get_cart_contents()) { if ($discount_id) { if (edd_is_discount_active($discount_id) && edd_is_discount_started($discount_id) && !edd_is_discount_maxed_out($discount_id) && !edd_is_discount_used($code, $user, $discount_id) && edd_discount_is_min_met($discount_id) && edd_discount_product_reqs_met($discount_id)) { $return = true; } } elseif ($set_error) { edd_set_error('edd-discount-error', __('This discount is invalid.', 'edd')); } } return apply_filters('edd_is_discount_valid', $return, $discount_id, $code, $user); }
/** * Is Discount Valid * * Check whether a discount code is valid (when purchasing). * * @access public * @since 1.0 * @return void */ function edd_is_discount_valid($code = '', $email = '') { $return = false; $discount_id = edd_get_discount_id_by_code($code); $email = trim($email); if ($discount_id !== false && $email !== "") { if (edd_is_discount_active($discount_id) && edd_is_discount_started($discount_id) && !edd_is_discount_maxed_out($discount_id) && !edd_is_discount_used($code, $email) && edd_discount_is_min_met($discount_id)) { $return = true; } } return apply_filters('edd_is_discount_valid', $return, $discount_id, $code, $email); }
/** * 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(); }
/** * Check whether a discount code is valid (when purchasing). * * @since 1.0 * @param string $code Discount Code * @param string $user User info * @return bool */ function edd_is_discount_valid($code = '', $user = '') { $return = false; $discount_id = edd_get_discount_id_by_code($code); $user = trim($user); if ($discount_id !== false) { if (edd_is_discount_active($discount_id) && edd_is_discount_started($discount_id) && !edd_is_discount_maxed_out($discount_id) && !edd_is_discount_used($code, $user, $discount_id) && edd_discount_is_min_met($discount_id) && edd_discount_product_reqs_met($discount_id)) { $return = true; } } return apply_filters('edd_is_discount_valid', $return, $discount_id, $code, $user); }