2013-06-28 09:23:20 +00:00
|
|
|
<?php
|
2016-11-14 10:29:25 +00:00
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
2013-06-28 09:23:20 +00:00
|
|
|
/**
|
|
|
|
* WooCommerce Coupons Functions
|
|
|
|
*
|
|
|
|
* Functions for coupon specific things.
|
|
|
|
*
|
|
|
|
* @author WooThemes
|
|
|
|
* @category Core
|
|
|
|
* @package WooCommerce/Functions
|
2016-11-14 10:29:25 +00:00
|
|
|
* @version 2.7.0
|
2013-06-28 09:23:20 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get coupon types.
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
function wc_get_coupon_types() {
|
|
|
|
return (array) apply_filters( 'woocommerce_coupon_discount_types', array(
|
2016-12-14 11:07:08 +00:00
|
|
|
'percent' => __( 'Percentage discount', 'woocommerce' ),
|
|
|
|
'fixed_cart' => __( 'Fixed cart discount', 'woocommerce' ),
|
|
|
|
'fixed_product' => __( 'Fixed product discount', 'woocommerce' ),
|
2013-06-28 09:23:20 +00:00
|
|
|
) );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get a coupon type's name.
|
|
|
|
*
|
|
|
|
* @param string $type (default: '')
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
function wc_get_coupon_type( $type = '' ) {
|
|
|
|
$types = wc_get_coupon_types();
|
2015-12-16 11:47:56 +00:00
|
|
|
return isset( $types[ $type ] ) ? $types[ $type ] : '';
|
|
|
|
}
|
2013-12-02 11:34:27 +00:00
|
|
|
|
2015-12-16 11:47:56 +00:00
|
|
|
/**
|
|
|
|
* Coupon types that apply to individual products. Controls which validation rules will apply.
|
|
|
|
*
|
|
|
|
* @since 2.5.0
|
2016-01-06 16:11:09 +00:00
|
|
|
* @return array
|
2015-12-16 11:47:56 +00:00
|
|
|
*/
|
|
|
|
function wc_get_product_coupon_types() {
|
2016-12-14 11:07:08 +00:00
|
|
|
return (array) apply_filters( 'woocommerce_product_coupon_types', array( 'fixed_product', 'percent' ) );
|
2015-12-16 11:47:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Coupon types that apply to the cart as a whole. Controls which validation rules will apply.
|
|
|
|
*
|
|
|
|
* @since 2.5.0
|
2016-01-06 16:11:09 +00:00
|
|
|
* @return array
|
2015-12-16 11:47:56 +00:00
|
|
|
*/
|
|
|
|
function wc_get_cart_coupon_types() {
|
2016-12-14 11:07:08 +00:00
|
|
|
return (array) apply_filters( 'woocommerce_cart_coupon_types', array( 'fixed_cart' ) );
|
2013-12-02 11:34:27 +00:00
|
|
|
}
|
2015-10-28 17:43:31 +00:00
|
|
|
|
|
|
|
/**
|
2015-10-29 19:23:10 +00:00
|
|
|
* Check if coupons are enabled.
|
|
|
|
* Filterable.
|
2015-10-28 17:43:31 +00:00
|
|
|
*
|
|
|
|
* @since 2.5.0
|
|
|
|
*
|
2016-01-06 16:11:09 +00:00
|
|
|
* @return array
|
2015-10-28 17:43:31 +00:00
|
|
|
*/
|
2015-10-29 19:23:10 +00:00
|
|
|
function wc_coupons_enabled() {
|
2015-12-16 11:47:56 +00:00
|
|
|
return apply_filters( 'woocommerce_coupons_enabled', 'yes' === get_option( 'woocommerce_enable_coupons' ) );
|
2015-10-28 17:43:31 +00:00
|
|
|
}
|
2016-08-23 22:52:14 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get coupon code by ID.
|
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
* @param int $id Coupon ID.
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
function wc_get_coupon_code_by_id( $id ) {
|
2016-11-14 10:29:25 +00:00
|
|
|
$data_store = WC_Data_Store::load( 'coupon' );
|
|
|
|
return (string) $data_store->get_code_by_id( $id );
|
2016-08-23 22:52:14 +00:00
|
|
|
}
|
2016-08-30 10:43:53 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get coupon code by ID.
|
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
* @param string $code
|
|
|
|
* @param int $exclude Used to exclude an ID from the check if you're checking existance.
|
|
|
|
* @return int
|
|
|
|
*/
|
|
|
|
function wc_get_coupon_id_by_code( $code, $exclude = 0 ) {
|
2016-11-14 10:29:25 +00:00
|
|
|
$data_store = WC_Data_Store::load( 'coupon' );
|
|
|
|
$ids = wp_cache_get( WC_Cache_Helper::get_cache_prefix( 'coupons' ) . 'coupon_id_from_code_' . $code, 'coupons' );
|
2016-08-30 10:43:53 +00:00
|
|
|
|
|
|
|
if ( false === $ids ) {
|
2016-11-14 10:29:25 +00:00
|
|
|
$ids = $data_store->get_ids_by_code( $code );
|
2016-08-30 10:43:53 +00:00
|
|
|
if ( $ids ) {
|
|
|
|
wp_cache_set( WC_Cache_Helper::get_cache_prefix( 'coupons' ) . 'coupon_id_from_code_' . $code, $ids, 'coupons' );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$ids = array_diff( array_filter( array_map( 'absint', (array) $ids ) ), array( $exclude ) );
|
|
|
|
|
|
|
|
return apply_filters( 'woocommerce_get_coupon_id_from_code', absint( current( $ids ) ), $code, $exclude );
|
|
|
|
}
|