2013-06-28 09:23:20 +00:00
< ? php
/**
* WooCommerce Coupons Functions
*
* Functions for coupon specific things .
*
* @ author WooThemes
* @ category Core
* @ package WooCommerce / Functions
* @ version 2.1 . 0
*/
2014-09-20 19:07:35 +00:00
if ( ! defined ( 'ABSPATH' ) ) {
exit ; // Exit if accessed directly
}
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 (
'fixed_cart' => __ ( 'Cart Discount' , 'woocommerce' ),
'percent' => __ ( 'Cart % Discount' , 'woocommerce' ),
'fixed_product' => __ ( 'Product Discount' , 'woocommerce' ),
2016-08-27 01:46:45 +00:00
'percent_product' => __ ( '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 () {
return ( array ) apply_filters ( 'woocommerce_product_coupon_types' , array ( 'fixed_product' , 'percent_product' ) );
}
/**
* 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 () {
return ( array ) apply_filters ( 'woocommerce_cart_coupon_types' , array ( 'fixed_cart' , 'percent' ) );
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 ) {
global $wpdb ;
$code = $wpdb -> get_var ( $wpdb -> prepare ( "
SELECT post_title
FROM $wpdb -> posts
WHERE ID = % d
AND post_type = 'shop_coupon'
AND post_status = 'publish' ;
" , $id ) );
return ( string ) $code ;
}
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 ) {
global $wpdb ;
$ids = wp_cache_get ( WC_Cache_Helper :: get_cache_prefix ( 'coupons' ) . 'coupon_id_from_code_' . $code , 'coupons' );
if ( false === $ids ) {
$sql = $wpdb -> prepare ( " SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type = 'shop_coupon' AND post_status = 'publish' ORDER BY post_date DESC; " , $code );
$ids = $wpdb -> get_col ( $sql );
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 );
}