/**
 * 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);
}
 /**
  * Process the bulk actions
  *
  * @access public
  * @since 1.4
  * @return void
  */
 public function process_bulk_action()
 {
     if (empty($_REQUEST['_wpnonce'])) {
         return;
     }
     if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'bulk-discounts')) {
         return;
     }
     $ids = isset($_GET['discount']) ? $_GET['discount'] : false;
     if (!is_array($ids)) {
         $ids = array($ids);
     }
     foreach ($ids as $id) {
         if ('delete' === $this->current_action()) {
             edd_remove_discount($id);
         }
         if ('activate' === $this->current_action()) {
             edd_update_discount_status($id, 'active');
         }
         if ('deactivate' === $this->current_action()) {
             edd_update_discount_status($id, 'inactive');
         }
     }
 }
/**
 * Deactivate Discount
 *
 * Sets a discount code's status to deactivate
 *
 * @since 1.0
 * @param array $data Discount code data
 * @uses edd_update_discount_status()
 * @return void
*/
function edd_deactivate_discount($data)
{
    if (!isset($data['_wpnonce']) || !wp_verify_nonce($data['_wpnonce'], 'edd_discount_nonce')) {
        wp_die(__('Trying to cheat or something?', 'easy-digital-downloads'), __('Error', 'easy-digital-downloads'), array('response' => 403));
    }
    if (!current_user_can('manage_shop_discounts')) {
        wp_die(__('You do not have permission to create discount codes', 'easy-digital-downloads'), array('response' => 403));
    }
    $id = absint($data['discount']);
    edd_update_discount_status($id, 'inactive');
}
/**
 * Decrease Discount Usage
 *
 * Decreases the use count of a discount code.
 *
 * @since 2.5.7
 * @param string $code Discount code to be decremented
 * @return int
 */
function edd_decrease_discount_usage($code)
{
    $id = edd_get_discount_id_by_code($code);
    if (false === $id) {
        return false;
    }
    $uses = edd_get_discount_uses($id);
    if ($uses) {
        $uses--;
    }
    if ($uses < 0) {
        $uses = 0;
    }
    update_post_meta($id, '_edd_discount_uses', $uses);
    $max_uses = edd_get_discount_max_uses($id);
    if ($max_uses > $uses) {
        edd_update_discount_status($id, 'active');
        update_post_meta($id, '_edd_discount_status', 'active');
    }
    do_action('edd_discount_decrease_use_count', $uses, $id, $code);
    return $uses;
}
/**
 * Deactivate Discount
 *
 * Sets a discount code's status to deactivate
 *
 * @since 1.0
 * @param array $data Discount code data
 * @uses edd_update_discount_status()
 * @return void
*/
function edd_deactivate_discount($data)
{
    $id = absint($data['discount']);
    edd_update_discount_status($id, 'inactive');
}
 /**
  * Process the bulk actions
  *
  * @access public
  * @since 1.4
  * @return void
  */
 public function process_bulk_action()
 {
     $ids = isset($_GET['discount']) ? $_GET['discount'] : false;
     if (!is_array($ids)) {
         $ids = array($ids);
     }
     foreach ($ids as $id) {
         if ('delete' === $this->current_action()) {
             edd_remove_discount($id);
         }
         if ('activate' === $this->current_action()) {
             edd_update_discount_status($id, 'active');
         }
         if ('deactivate' === $this->current_action()) {
             edd_update_discount_status($id, 'inactive');
         }
     }
 }