/** * 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 Expired * * Checks whether a discount code is expired. * * @param int $code_id * * @since 1.0 * @return bool */ function edd_is_discount_expired($code_id = null) { $discount = edd_get_discount($code_id); $return = false; if ($discount) { $expiration = edd_get_discount_expiration($code_id); if ($expiration) { $expiration = strtotime($expiration); if ($expiration < current_time('timestamp')) { // Discount is expired edd_update_discount_status($code_id, 'inactive'); $return = true; } } } return apply_filters('edd_is_discount_expired', $return, $code_id); }
/** * Retrieve all the data for all the discount codes * * @access public * @since 1.4 * @return array $discount_codes_data Array of all the data for the discount codes */ public function discount_codes_data() { $discount_codes_data = array(); $per_page = $this->per_page; $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'ID'; $order = isset($_GET['order']) ? $_GET['order'] : 'DESC'; $status = isset($_GET['status']) ? $_GET['status'] : array('active', 'inactive'); $meta_key = isset($_GET['meta_key']) ? $_GET['meta_key'] : null; $search = isset($_GET['s']) ? sanitize_text_field($_GET['s']) : null; $discounts = edd_get_discounts(array('posts_per_page' => $per_page, 'paged' => isset($_GET['paged']) ? $_GET['paged'] : 1, 'orderby' => $orderby, 'order' => $order, 'post_status' => $status, 'meta_key' => $meta_key, 's' => $search)); if ($discounts) { foreach ($discounts as $discount) { if (edd_get_discount_max_uses($discount->ID)) { $uses = edd_get_discount_uses($discount->ID) . '/' . edd_get_discount_max_uses($discount->ID); } else { $uses = edd_get_discount_uses($discount->ID); } if (edd_get_discount_max_uses($discount->ID)) { $max_uses = edd_get_discount_max_uses($discount->ID) ? edd_get_discount_max_uses($discount->ID) : __('unlimited', 'edd'); } else { $max_uses = __('Unlimited', 'edd'); } $start_date = edd_get_discount_start_date($discount->ID); if (!empty($start_date)) { $discount_start_date = date_i18n(get_option('date_format'), strtotime($start_date)); } else { $discount_start_date = __('No start date', 'edd'); } if (edd_get_discount_expiration($discount->ID)) { $expiration = date_i18n(get_option('date_format'), strtotime(edd_get_discount_expiration($discount->ID))); } else { $expiration = __('No expiration', 'edd'); } $discount_codes_data[] = array('ID' => $discount->ID, 'name' => get_the_title($discount->ID), 'code' => edd_get_discount_code($discount->ID), 'amount' => edd_format_discount_rate(edd_get_discount_type($discount->ID), edd_get_discount_amount($discount->ID)), 'uses' => $uses, 'max_uses' => $max_uses, 'start_date' => $discount_start_date, 'expiration' => $expiration, 'status' => edd_is_discount_expired($discount->ID) ? 'expired' : $discount->post_status); } } return $discount_codes_data; }
</p> </td> </tr> <?php do_action('edd_edit_discount_form_before_expiration', $discount_id, $discount); ?> <tr> <th scope="row" valign="top"> <label for="edd-expiration"><?php _e('Expiration date', 'edd'); ?> </label> </th> <td> <input name="expiration" id="edd-expiration" type="text" value="<?php echo esc_attr(edd_get_discount_expiration($discount_id)); ?> " style="width: 300px;" class="edd_datepicker"/> <p class="description"><?php _e('Enter the expiration date for this discount code in the format of mm/dd/yyyy. For no expiration, leave blank', 'edd'); ?> </p> </td> </tr> <?php do_action('edd_edit_discount_form_before_max_uses', $discount_id, $discount); ?> <tr> <th scope="row" valign="top"> <label for="edd-max-uses"><?php _e('Max Uses', 'edd');
/** * Is Discount Expired * * Checks whether a discount code is expired. * * @param int $code_id * * @access public * @since 1.0 * @return bool */ function edd_is_discount_expired($code_id = null) { $discount = edd_get_discount($code_id); $return = false; if ($discount) { $expiration = edd_get_discount_expiration($code_id); if ($expiration) { $expiration = strtotime($expiration); if ($expiration < time() - 24 * 60 * 60) { // discount is expired $return = true; } } } return apply_filters('edd_is_discount_expired', $return, $code_id); }