/** * Process Get Discounts API Request * * @access public * @since 1.6 * @global object $wpdb Used to query the database using the WordPress * Database API * @param int $discount Discount ID * @return array $discounts Multidimensional array of the discounts */ public function get_discounts($discount = null) { $discount_list = array(); if (!user_can($this->user_id, 'manage_shop_discounts') && !$this->override) { return $discount_list; } $error = array(); if (empty($discount)) { global $wpdb; $paged = $this->get_paged(); $per_page = $this->per_page(); $discounts = edd_get_discounts(array('posts_per_page' => $per_page, 'paged' => $paged)); $count = 0; if (empty($discounts)) { $error['error'] = __('No discounts found!', 'easy-digital-downloads'); return $error; } foreach ($discounts as $discount) { $discount_list['discounts'][$count]['ID'] = $discount->ID; $discount_list['discounts'][$count]['name'] = $discount->post_title; $discount_list['discounts'][$count]['code'] = edd_get_discount_code($discount->ID); $discount_list['discounts'][$count]['amount'] = edd_get_discount_amount($discount->ID); $discount_list['discounts'][$count]['min_price'] = edd_get_discount_min_price($discount->ID); $discount_list['discounts'][$count]['type'] = edd_get_discount_type($discount->ID); $discount_list['discounts'][$count]['uses'] = edd_get_discount_uses($discount->ID); $discount_list['discounts'][$count]['max_uses'] = edd_get_discount_max_uses($discount->ID); $discount_list['discounts'][$count]['start_date'] = edd_get_discount_start_date($discount->ID); $discount_list['discounts'][$count]['exp_date'] = edd_get_discount_expiration($discount->ID); $discount_list['discounts'][$count]['status'] = $discount->post_status; $discount_list['discounts'][$count]['product_requirements'] = edd_get_discount_product_reqs($discount->ID); $discount_list['discounts'][$count]['requirement_condition'] = edd_get_discount_product_condition($discount->ID); $discount_list['discounts'][$count]['global_discount'] = edd_is_discount_not_global($discount->ID); $discount_list['discounts'][$count]['single_use'] = edd_discount_is_single_use($discount->ID); $count++; } } else { if (is_numeric($discount) && get_post($discount)) { $discount_list['discounts'][0]['ID'] = $discount; $discount_list['discounts'][0]['name'] = get_post_field('post_title', $discount); $discount_list['discounts'][0]['code'] = edd_get_discount_code($discount); $discount_list['discounts'][0]['amount'] = edd_get_discount_amount($discount); $discount_list['discounts'][0]['min_price'] = edd_get_discount_min_price($discount); $discount_list['discounts'][0]['type'] = edd_get_discount_type($discount); $discount_list['discounts'][0]['uses'] = edd_get_discount_uses($discount); $discount_list['discounts'][0]['max_uses'] = edd_get_discount_max_uses($discount); $discount_list['discounts'][0]['start_date'] = edd_get_discount_start_date($discount); $discount_list['discounts'][0]['exp_date'] = edd_get_discount_expiration($discount); $discount_list['discounts'][0]['status'] = get_post_field('post_status', $discount); $discount_list['discounts'][0]['product_requirements'] = edd_get_discount_product_reqs($discount); $discount_list['discounts'][0]['requirement_condition'] = edd_get_discount_product_condition($discount); $discount_list['discounts'][0]['global_discount'] = edd_is_discount_not_global($discount); $discount_list['discounts'][0]['single_use'] = edd_discount_is_single_use($discount); } else { $error['error'] = sprintf(__('Discount %s not found!', 'easy-digital-downloads'), $discount); return $error; } } return $discount_list; }
/** * Is Discount Used * * Checks to see if a user has already used a discount. * * @since 1.1.5 * * @param string $code * @param string $user * @param int $code_id (since 1.5) ID of the discount code to check * * @return bool $return */ function edd_is_discount_used($code = null, $user = '', $code_id = 0) { $return = false; if (empty($code_id)) { $code_id = edd_get_discount_id_by_code($code); if (empty($code_id)) { return false; // No discount was found } } if (edd_discount_is_single_use($code_id)) { $payments = array(); if (EDD()->customers->installed()) { $by_user_id = is_email($user) ? false : true; $customer = new EDD_Customer($user, $by_user_id); $payments = explode(',', $customer->payment_ids); } else { $user_found = false; if (is_email($user)) { $user_found = true; // All we need is the email $key = '_edd_payment_user_email'; $value = $user; } else { $user_data = get_user_by('login', $user); if ($user_data) { $user_found = true; $key = '_edd_payment_user_id'; $value = $user_data->ID; } } if ($user_found) { $query_args = array('post_type' => 'edd_payment', 'meta_query' => array(array('key' => $key, 'value' => $value, 'compare' => '=')), 'fields' => 'ids'); $payments = get_posts($query_args); // Get all payments with matching email } } if ($payments) { foreach ($payments as $payment) { // Check all matching payments for discount code. $payment_meta = edd_get_payment_meta($payment); $user_info = maybe_unserialize($payment_meta['user_info']); if ($user_info['discount'] == $code) { edd_set_error('edd-discount-error', __('This discount has already been redeemed.', 'edd')); $return = true; } } } } return apply_filters('edd_is_discount_used', $return, $code, $user); }
/** * Is Discount Used * * Checks to see if a user has already used a discount. * * @since 1.1.5 * * @param string $code * @param string $user * @param int $code_id (since 1.5) ID of the discount code to check * @param bool $set_error Whether an error message be set in session * * @return bool $return */ function edd_is_discount_used($code = null, $user = '', $code_id = 0, $set_error = true) { $return = false; if (empty($code_id)) { $code_id = edd_get_discount_id_by_code($code); if (empty($code_id)) { return false; // No discount was found } } if (edd_discount_is_single_use($code_id)) { $payments = array(); if (EDD()->customers->installed()) { $by_user_id = is_email($user) ? false : true; $customer = new EDD_Customer($user, $by_user_id); $payments = explode(',', $customer->payment_ids); } else { $user_found = false; if (is_email($user)) { $user_found = true; // All we need is the email $key = '_edd_payment_user_email'; $value = $user; } else { $user_data = get_user_by('login', $user); if ($user_data) { $user_found = true; $key = '_edd_payment_user_id'; $value = $user_data->ID; } } if ($user_found) { $query_args = array('post_type' => 'edd_payment', 'meta_query' => array(array('key' => $key, 'value' => $value, 'compare' => '=')), 'fields' => 'ids'); $payments = get_posts($query_args); // Get all payments with matching email } } if ($payments) { foreach ($payments as $payment) { $payment = new EDD_Payment($payment); if (empty($payment->discounts)) { continue; } if (in_array($payment->status, array('abandoned', 'failed'))) { continue; } $discounts = explode(',', $payment->discounts); if (is_array($discounts)) { if (in_array(strtolower($code), $discounts)) { if ($set_error) { edd_set_error('edd-discount-error', __('This discount has already been redeemed.', 'easy-digital-downloads')); } $return = true; break; } } } } } return apply_filters('edd_is_discount_used', $return, $code, $user); }
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License * @since 1.0 */ // Exit if accessed directly if (!defined('ABSPATH')) { exit; } if (!isset($_GET['discount']) || !is_numeric($_GET['discount'])) { wp_die(__('Something went wrong.', 'edd'), __('Error', 'edd')); } $discount_id = absint($_GET['discount']); $discount = edd_get_discount($discount_id); $product_reqs = edd_get_discount_product_reqs($discount_id); $excluded_products = edd_get_discount_excluded_products($discount_id); $condition = edd_get_discount_product_condition($discount_id); $single_use = edd_discount_is_single_use($discount_id); $flat_display = edd_get_discount_type($discount_id) == 'flat' ? '' : ' style="display:none;"'; $percent_display = edd_get_discount_type($discount_id) == 'percent' ? '' : ' style="display:none;"'; $condition_display = empty($product_reqs) ? ' style="display:none;"' : ''; ?> <h2><?php _e('Edit Discount', 'edd'); ?> - <a href="<?php echo admin_url('edit.php?post_type=download&page=edd-discounts'); ?> " class="button-secondary"><?php _e('Go Back', 'edd'); ?> </a></h2> <form id="edd-edit-discount" action="" method="post">
/** * Is Discount Used * * Checks to see if a user has already used a discount. * * @since 1.1.5 * * @param string $code * @param string $user * @param int $code_id (since 1.5) ID of the discount code to check * * @return bool $return */ function edd_is_discount_used($code = null, $user = '', $code_id = 0) { $return = false; $user_found = true; if (empty($code_id)) { $code_id = edd_get_discount_id_by_code($code); } if (edd_discount_is_single_use($code_id)) { if (is_email($user)) { $user_found = true; // All we need is the email $key = '_edd_payment_user_email'; $value = $user; } else { $user_data = get_user_by('login', $user); if ($user_data) { $key = '_edd_payment_user_id'; $value = $user_data->ID; } else { $user_found = false; // Bail, no user found } } if ($user_found) { $query_args = array('post_type' => 'edd_payment', 'meta_query' => array(array('key' => $key, 'value' => $value, 'compare' => '=')), 'fields' => 'ids'); $payments = get_posts($query_args); // Get all payments with matching email if ($payments) { foreach ($payments as $payment) { // Check all matching payments for discount code. $payment_meta = edd_get_payment_meta($payment); $user_info = maybe_unserialize($payment_meta['user_info']); if ($user_info['discount'] == $code) { $return = true; } } } } } return apply_filters('edd_is_discount_used', $return, $code, $user); }