/var/www/html_us/wp-content/plugins/woocommerce/includes/wc-coupon-functions.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/**
 * WooCommerce Coupons Functions
 *
 * Functions for coupon specific things.
 *
 * @package WooCommerce\Functions
 * @version 3.0.0
 */

defined'ABSPATH' ) || exit;

use 
Automattic\WooCommerce\Utilities\StringUtil;

/**
 * Get coupon types.
 *
 * @return array
 */
function wc_get_coupon_types() {
    return (array) 
apply_filters(
        
'woocommerce_coupon_discount_types',
        array(
            
'percent'       => __'Percentage discount''woocommerce' ),
            
'fixed_cart'    => __'Fixed cart discount''woocommerce' ),
            
'fixed_product' => __'Fixed product discount''woocommerce' ),
        )
    );
}

/**
 * Get a coupon type's name.
 *
 * @param string $type Coupon type.
 * @return string
 */
function wc_get_coupon_type$type '' ) {
    
$types wc_get_coupon_types();
    return isset( 
$types$type ] ) ? $types$type ] : '';
}

/**
 * Coupon types that apply to individual products. Controls which validation rules will apply.
 *
 * @since  2.5.0
 * @return array
 */
function wc_get_product_coupon_types() {
    return (array) 
apply_filters'woocommerce_product_coupon_types', array( 'fixed_product''percent' ) );
}

/**
 * Coupon types that apply to the cart as a whole. Controls which validation rules will apply.
 *
 * @since  2.5.0
 * @return array
 */
function wc_get_cart_coupon_types() {
    return (array) 
apply_filters'woocommerce_cart_coupon_types', array( 'fixed_cart' ) );
}

/**
 * Check if coupons are enabled.
 * Filterable.
 *
 * @since  2.5.0
 *
 * @return bool
 */
function wc_coupons_enabled() {
    return 
apply_filters'woocommerce_coupons_enabled''yes' === get_option'woocommerce_enable_coupons' ) );
}

/**
 * Get coupon code by ID.
 *
 * @since 3.0.0
 * @param int $id Coupon ID.
 * @return string
 */
function wc_get_coupon_code_by_id$id ) {
    
$data_store WC_Data_Store::load'coupon' );
    return empty( 
$id ) ? '' : (string) $data_store->get_code_by_id$id );
}

/**
 * Get coupon ID by code.
 *
 * @since 3.0.0
 * @param string $code    Coupon code.
 * @param int    $exclude Used to exclude an ID from the check if you're checking existence.
 * @return int
 */
function wc_get_coupon_id_by_code$code$exclude ) {

    if ( 
StringUtil::is_null_or_whitespace$code ) ) {
        return 
0;
    }

    
$data_store WC_Data_Store::load'coupon' );
    
$ids        wp_cache_getWC_Cache_Helper::get_cache_prefix'coupons' ) . 'coupon_id_from_code_' $code'coupons' );

    if ( 
false === $ids ) {
        
$ids $data_store->get_ids_by_code$code );
        if ( 
$ids ) {
            
wp_cache_setWC_Cache_Helper::get_cache_prefix'coupons' ) . 'coupon_id_from_code_' $code$ids'coupons' );
        }
    }

    
$ids array_diffarray_filterarray_map'absint', (array) $ids ) ), array( $exclude ) );

    return 
apply_filters'woocommerce_get_coupon_id_from_code'absintcurrent$ids ) ), $code$exclude );
}