/**
 * Checks whether a discount code is active.
 *
 * @since 1.0
 * @param int $code_id
 * @return bool
 */
function edd_is_discount_active($code_id = null)
{
    $discount = edd_get_discount($code_id);
    $return = false;
    if ($discount) {
        if (edd_is_discount_expired($code_id)) {
            if (defined('DOING_AJAX')) {
                edd_set_error('edd-discount-error', __('This discount is expired.', 'edd'));
            }
        } elseif ($discount->post_status == 'active') {
            $return = true;
        } else {
            if (defined('DOING_AJAX')) {
                edd_set_error('edd-discount-error', __('This discount is not active.', 'edd'));
            }
        }
    }
    return apply_filters('edd_is_discount_active', $return, $code_id);
}
/**
 * Is Discount Active
 *
 * Checks whether a discount code is active.
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function edd_is_discount_active($code_id = null)
{
    $discount = edd_get_discount($code_id);
    $return = false;
    if ($discount) {
        if (isset($discount['status']) && $discount['status'] == 'active' && !edd_is_discount_expired($code_id)) {
            $return = true;
        }
    }
    return apply_filters('edd_is_discount_active', $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;
 }
/**
 * Discounts Page
 *
 * Renders the discount page contents.
 *
 * @access      private
 * @since       1.0
 * @return      void
*/
function edd_discounts_page()
{
    global $edd_options;
    $current_page = get_bloginfo('wpurl') . '/wp-admin/admin.php?edit.php?post_type=download&page=edd-discounts';
    ?>
	<div class="wrap">
		
		<?php 
    if (isset($_GET['edd-action']) && $_GET['edd-action'] == 'edit_discount') {
        ?>

			<?php 
        include_once EDD_PLUGIN_DIR . 'includes/admin-pages/forms/edit-discount.php';
        ?>

		<?php 
    } else {
        ?>
			<h2><?php 
        _e('Discount Codes', 'edd');
        ?>
</h2>
			<?php 
        $discounts = edd_get_discounts();
        ?>
			<table class="wp-list-table widefat fixed posts edd-discounts">
				<thead>
					<tr>
						<th><?php 
        _e('Name', 'edd');
        ?>
</th>
						<th><?php 
        _e('Code', 'edd');
        ?>
</th>
						<th><?php 
        _e('Amount', 'edd');
        ?>
</th>
						<th><?php 
        _e('Uses', 'edd');
        ?>
</th>
						<th><?php 
        _e('Max Uses', 'edd');
        ?>
</th>
						<th><?php 
        _e('Start Date', 'edd');
        ?>
</th>
						<th><?php 
        _e('Expiration', 'edd');
        ?>
</th>
						<th><?php 
        _e('Status', 'edd');
        ?>
</th>
						<th><?php 
        _e('Actions', 'edd');
        ?>
</th>
					</tr>
				</thead>
				<tfoot>
					<tr>
						<th><?php 
        _e('Name', 'edd');
        ?>
</th>
						<th><?php 
        _e('Code', 'edd');
        ?>
</th>
						<th><?php 
        _e('Amount', 'edd');
        ?>
</th>
						<th><?php 
        _e('Uses', 'edd');
        ?>
</th>
						<th><?php 
        _e('Max Uses', 'edd');
        ?>
</th>
						<th><?php 
        _e('Start Date', 'edd');
        ?>
</th>
						<th><?php 
        _e('Expiration', 'edd');
        ?>
</th>
						<th><?php 
        _e('Status', 'edd');
        ?>
</th>
						<th><?php 
        _e('Actions', 'edd');
        ?>
</th>
					</tr>
				</tfoot>
				<tbody>
					<?php 
        if ($discounts) {
            ?>
						<?php 
            foreach ($discounts as $discount_key => $discount) {
                ?>
							<tr>
								<td><?php 
                if (isset($discount['name'])) {
                    echo $discount['name'];
                }
                ?>
</td>
								<td><?php 
                if (isset($discount['code'])) {
                    echo $discount['code'];
                }
                ?>
</td>
								<td><?php 
                if (isset($discount['amount'])) {
                    echo edd_format_discount_rate($discount['type'], $discount['amount']);
                }
                ?>
</td>
								<td>
									<?php 
                if (isset($discount['uses']) && isset($discount['max']) && $discount['uses'] != '' && $discount['max'] != '') {
                    echo $discount['uses'] == '' ? 0 : $discount['uses'] . '/' . $discount['max'];
                } else {
                    echo isset($discount['uses']) ? $discount['uses'] : 0;
                }
                ?>
								</td>
								<td>
									<?php 
                if (isset($discount['max'])) {
                    echo $discount['max'] == '' ? __('unlimited', 'edd') : $discount['max'];
                } else {
                    _e('unlimited', 'edd');
                }
                ?>
								</td>
								<td>
								<?php 
                if (isset($discount['start']) && $discount['start'] != '') {
                    echo date(get_option('date_format'), strtotime($discount['start']));
                } else {
                    _e('No start date', 'edd');
                }
                ?>
								</td>
								<td>
								<?php 
                if (isset($discount['expiration']) && $discount['expiration'] != '') {
                    echo edd_is_discount_expired($discount_key) ? __('Expired', 'edd') : $discount['expiration'];
                } else {
                    _e('no expiration', 'edd');
                }
                ?>
								</td>
								<td><?php 
                if (isset($discount['status'])) {
                    echo $discount['status'];
                }
                ?>
</td>
								<td>
									<a href="<?php 
                echo add_query_arg('edd-action', 'edit_discount', add_query_arg('discount', $discount_key, $current_page));
                ?>
"><?php 
                _e('Edit', 'edd');
                ?>
</a> |
									<?php 
                if (edd_is_discount_active($discount_key)) {
                    ?>
									<a href="<?php 
                    echo add_query_arg('edd-action', 'deactivate_discount', add_query_arg('discount', $discount_key, $current_page));
                    ?>
"><?php 
                    _e('Deactivate', 'edd');
                    ?>
</a> |
									<?php 
                } else {
                    ?>
										<a href="<?php 
                    echo add_query_arg('edd-action', 'activate_discount', add_query_arg('discount', $discount_key, $current_page));
                    ?>
"><?php 
                    _e('Activate', 'edd');
                    ?>
</a> |
									<?php 
                }
                ?>
									<a href="<?php 
                echo add_query_arg('edd-action', 'delete_discount', add_query_arg('discount', $discount_key, $current_page));
                ?>
"><?php 
                _e('Delete', 'edd');
                ?>
</a>
								</td>
							</tr>
						<?php 
            }
            ?>
					<?php 
        } else {
            ?>
					<tr><td colspan=10><?php 
            _e('No discount codes have been created.', 'edd');
            ?>
</td>
					<?php 
        }
        ?>
				</tbody>
			</table>		
			<?php 
        do_action('edd_discounts_below_table');
        ?>
	

			<?php 
        include_once EDD_PLUGIN_DIR . 'includes/admin-pages/forms/add-discount.php';
        ?>
		
		<?php 
    }
    ?>
		
	</div><!--end wrap-->
	<?php 
}