$10 GRAYBYTE WORDPRESS FILE MANAGER $58

SERVER : premium134.web-hosting.com #1 SMP Thu Mar 13 14:29:12 UTC 2025
SERVER IP : 162.0.232.104 | ADMIN IP 216.73.216.80
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/raydofqv/ctdatabase.work/wp-content/plugins/woocommerce/includes/

HOME
Current File : /home/raydofqv/ctdatabase.work/wp-content/plugins/woocommerce/includes//wc-coupon-functions.php
<?php
/**
 * WooCommerce Coupons Functions
 *
 * Functions for coupon specific things.
 *
 * @package WooCommerce\Functions
 * @version 3.0.0
 */

defined( 'ABSPATH' ) || exit;

use Automattic\WooCommerce\Utilities\StringUtil;
use Automattic\WooCommerce\Admin\API\Reports\Coupons\DataStore as CouponsDataStore;

/**
 * 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' ) );
}

/**
 * Check if two coupon codes are the same.
 * Lowercasing to ensure case-insensitive comparison.
 *
 * @since 9.9.0
 *
 * @param string $coupon_1 Coupon code 1.
 * @param string $coupon_2 Coupon code 2.
 * @return bool
 */
function wc_is_same_coupon( $coupon_1, $coupon_2 ) {
	return wc_strtolower( $coupon_1 ) === wc_strtolower( $coupon_2 );
}

/**
 * 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 = 0 ) {

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

	$data_store = WC_Data_Store::load( 'coupon' );
	// Coupon code allows spaces, which doesn't work well with some cache engines (e.g. memcached).
	$hashed_code = md5( wc_strtolower( $code ) );
	$cache_key   = WC_Cache_Helper::get_cache_prefix( 'coupons' ) . 'coupon_id_from_code_' . $hashed_code;

	$ids = wp_cache_get( $cache_key, 'coupons' );

	if ( false === $ids ) {
		$ids = $data_store->get_ids_by_code( $code );
		if ( $ids ) {
			wp_cache_set( $cache_key, $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 );
}

/**
 * Repair coupon lookup entries with zero discount_amount. A bug in WC 9.9 (fixed in 10.0)
 * caused discount_amount to be set to zero when a coupon code was used with
 * different case (e.g. "10-off" vs "10-OFF").
 *
 * @since 10.1.0
 * @return array Array with 'success' boolean and 'message' string.
 */
function wc_repair_zero_discount_coupons_lookup_table() {
	global $wpdb;

	$table_name = $wpdb->prefix . 'wc_order_coupon_lookup';

	// Check if table exists.
	// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
	if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) !== $table_name ) {
		return array(
			'success' => false,
			'message' => __( 'Coupons lookup table does not exist.', 'woocommerce' ),
		);
	}

	// Get entries with zero discount_amount.
	$zero_discount_entries = $wpdb->get_results(
		$wpdb->prepare(
			// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
			"SELECT order_id, coupon_id FROM $table_name WHERE discount_amount = %f",
			0.0
		),
		ARRAY_A
	);

	if ( empty( $zero_discount_entries ) ) {
		return array(
			'success' => true,
			'message' => __( 'No entries with zero discount amount found. Coupons lookup table is up to date.', 'woocommerce' ),
		);
	}

	$processed_count = 0;
	$error_count     = 0;

	foreach ( $zero_discount_entries as $entry ) {
		try {
			$result = CouponsDataStore::sync_order_coupons( $entry['order_id'] );
			if ( false !== $result ) {
				++$processed_count;
			} else {
				++$error_count;
			}
		} catch ( Exception $e ) {
			++$error_count;
			$logger = wc_get_logger();
			$logger->error(
				sprintf(
					'Error fixing coupon lookup entry for order %d: %s',
					$entry['order_id'],
					$e->getMessage()
				),
				array(
					'source'   => 'coupons-lookup-fix',
					'order_id' => $entry['order_id'],
					'error'    => $e,
				)
			);
		}
	}

	// Clear any related caches.
	wp_cache_flush_group( 'coupons' );
	WC_Cache_Helper::get_transient_version( 'woocommerce_reports', true );

	$message = sprintf(
		/* translators: %1$d: number of entries processed, %2$d: number of errors */
		__( 'Coupons lookup table entries with zero discount amount repaired successfully. Processed %1$d entries with %2$d errors.', 'woocommerce' ),
		$processed_count,
		$error_count
	);

	return array(
		'success' => true,
		'message' => $message,
	);
}

Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
abstracts
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
admin
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
blocks
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
cli
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
customizer
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
data-stores
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
emails
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
export
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
gateways
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
import
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
integrations
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
interfaces
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
legacy
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
libraries
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
log-handlers
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
payment-tokens
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
product-usage
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
queue
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
react-admin
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
rest-api
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
shipping
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
shortcodes
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
theme-support
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
tracks
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
traits
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
walkers
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
wccom-site
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
widgets
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
.htaccess
0.124 KB
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0444
class-wc-ajax.php
131.443 KB
13 Apr 2026 5.14 PM
raydofqv / raydofqv
0644
class-wc-auth.php
12.69 KB
30 Jul 2024 7.31 PM
raydofqv / raydofqv
0644
class-wc-autoloader.php
5.268 KB
6 Oct 2025 5.56 PM
raydofqv / raydofqv
0644
class-wc-background-emailer.php
4.575 KB
20 Aug 2020 11.18 PM
raydofqv / raydofqv
0644
class-wc-background-updater.php
3.452 KB
20 Aug 2020 11.18 PM
raydofqv / raydofqv
0644
class-wc-brands-brand-settings-manager.php
1.783 KB
23 Sep 2024 8.44 PM
raydofqv / raydofqv
0644
class-wc-brands-coupons.php
6.894 KB
21 Jan 2025 6.53 PM
raydofqv / raydofqv
0644
class-wc-brands.php
34.8 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
class-wc-breadcrumb.php
10.41 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-cache-helper.php
12.693 KB
6 Oct 2025 5.56 PM
raydofqv / raydofqv
0644
class-wc-cart-fees.php
3.367 KB
26 Sep 2023 9.42 PM
raydofqv / raydofqv
0644
class-wc-cart-session.php
25.366 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-cart-totals.php
28.479 KB
29 Jul 2025 12.34 PM
raydofqv / raydofqv
0644
class-wc-cart.php
75.572 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-checkout.php
50.146 KB
12 Mar 2026 8.10 PM
raydofqv / raydofqv
0644
class-wc-cli.php
3.339 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
class-wc-comments.php
23.077 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-countries.php
50.665 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-coupon.php
43.867 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-customer-download-log.php
3.371 KB
20 Aug 2020 11.18 PM
raydofqv / raydofqv
0644
class-wc-customer-download.php
10.339 KB
30 Jul 2024 7.31 PM
raydofqv / raydofqv
0644
class-wc-customer.php
33.203 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-data-exception.php
1.29 KB
23 May 2018 7.30 PM
raydofqv / raydofqv
0644
class-wc-data-store.php
6.594 KB
19 Oct 2022 12.34 AM
raydofqv / raydofqv
0644
class-wc-datetime.php
2.256 KB
20 Apr 2022 6.50 AM
raydofqv / raydofqv
0644
class-wc-deprecated-action-hooks.php
6.588 KB
27 Feb 2024 6.59 PM
raydofqv / raydofqv
0644
class-wc-deprecated-filter-hooks.php
7.342 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-discounts.php
36.644 KB
29 Jul 2025 12.34 PM
raydofqv / raydofqv
0644
class-wc-download-handler.php
28.372 KB
18 Dec 2024 10.19 PM
raydofqv / raydofqv
0644
class-wc-emails.php
39.301 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-embed.php
4.24 KB
21 Jan 2025 6.53 PM
raydofqv / raydofqv
0644
class-wc-form-handler.php
48.171 KB
9 Mar 2026 4.07 PM
raydofqv / raydofqv
0644
class-wc-frontend-scripts.php
34.36 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-geo-ip.php
30.429 KB
6 Oct 2025 5.56 PM
raydofqv / raydofqv
0644
class-wc-geolite-integration.php
1.988 KB
16 Jan 2020 6.10 AM
raydofqv / raydofqv
0644
class-wc-geolocation.php
11.343 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-https.php
4.335 KB
20 Jun 2023 11.45 PM
raydofqv / raydofqv
0644
class-wc-install.php
116.228 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-integrations.php
1.277 KB
20 Aug 2020 11.18 PM
raydofqv / raydofqv
0644
class-wc-log-levels.php
3.898 KB
30 Jan 2024 11.24 PM
raydofqv / raydofqv
0644
class-wc-logger.php
9.413 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-meta-data.php
2.207 KB
20 Apr 2022 6.50 AM
raydofqv / raydofqv
0644
class-wc-order-factory.php
8.741 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-order-item-coupon.php
4.077 KB
22 Dec 2021 12.24 AM
raydofqv / raydofqv
0644
class-wc-order-item-fee.php
9.988 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
class-wc-order-item-meta.php
5.803 KB
22 Dec 2021 12.24 AM
raydofqv / raydofqv
0644
class-wc-order-item-product.php
17.541 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
class-wc-order-item-shipping.php
9.585 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
class-wc-order-item-tax.php
6.488 KB
22 Dec 2021 12.24 AM
raydofqv / raydofqv
0644
class-wc-order-item.php
21.394 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
class-wc-order-query.php
2.552 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-order-refund.php
5.991 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
class-wc-order.php
77.562 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-payment-gateways.php
14.259 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-payment-tokens.php
6.24 KB
23 Nov 2022 5.58 AM
raydofqv / raydofqv
0644
class-wc-post-data.php
38.688 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-post-types.php
32.891 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
class-wc-privacy-background-process.php
1.79 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
class-wc-privacy-erasers.php
13.614 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
class-wc-privacy-exporters.php
14.691 KB
28 Jul 2021 4.11 AM
raydofqv / raydofqv
0644
class-wc-privacy.php
17.216 KB
23 Jun 2025 7.46 PM
raydofqv / raydofqv
0644
class-wc-product-attribute.php
7.868 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-product-download.php
13.178 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-product-external.php
4.984 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
class-wc-product-factory.php
4.588 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-product-grouped.php
6.811 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-product-query.php
2.273 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-product-simple.php
2.7 KB
29 Jul 2025 12.34 PM
raydofqv / raydofqv
0644
class-wc-product-variable.php
23.764 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-product-variation.php
20.177 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
class-wc-query.php
33.495 KB
10 Feb 2026 7.22 PM
raydofqv / raydofqv
0644
class-wc-rate-limiter.php
4.004 KB
1 Dec 2021 4.23 AM
raydofqv / raydofqv
0644
class-wc-regenerate-images-request.php
7.737 KB
25 Jan 2023 3.19 AM
raydofqv / raydofqv
0644
class-wc-regenerate-images.php
15.436 KB
25 Jun 2024 9.17 PM
raydofqv / raydofqv
0644
class-wc-register-wp-admin-settings.php
5.05 KB
22 Jun 2021 3.24 PM
raydofqv / raydofqv
0644
class-wc-rest-authentication.php
21.551 KB
25 Jun 2024 9.17 PM
raydofqv / raydofqv
0644
class-wc-rest-exception.php
0.27 KB
23 Sep 2020 1.16 AM
raydofqv / raydofqv
0644
class-wc-session-handler.php
24.572 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-shipping-rate.php
9.342 KB
23 Jun 2025 7.46 PM
raydofqv / raydofqv
0644
class-wc-shipping-zone.php
13.078 KB
23 Sep 2020 1.16 AM
raydofqv / raydofqv
0644
class-wc-shipping-zones.php
4.995 KB
24 Nov 2025 11.10 PM
raydofqv / raydofqv
0644
class-wc-shipping.php
13.058 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
class-wc-shortcodes.php
18.822 KB
21 Jan 2025 6.53 PM
raydofqv / raydofqv
0644
class-wc-structured-data.php
24.425 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-tax.php
39.74 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
class-wc-template-loader.php
20.421 KB
12 Nov 2025 6.35 PM
raydofqv / raydofqv
0644
class-wc-tracker.php
51.495 KB
6 Oct 2025 5.56 PM
raydofqv / raydofqv
0644
class-wc-validation.php
5.79 KB
28 May 2024 2.28 PM
raydofqv / raydofqv
0644
class-wc-webhook.php
30.085 KB
6 Oct 2025 5.56 PM
raydofqv / raydofqv
0644
class-woocommerce.php
62.318 KB
14 Apr 2026 4.01 PM
raydofqv / raydofqv
0644
wc-account-functions.php
14.146 KB
24 Nov 2025 11.10 PM
raydofqv / raydofqv
0644
wc-attribute-functions.php
21.853 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
wc-brands-functions.php
4.17 KB
23 Sep 2024 8.44 PM
raydofqv / raydofqv
0644
wc-cart-functions.php
20.809 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
wc-conditional-functions.php
15.529 KB
29 Jul 2025 12.34 PM
raydofqv / raydofqv
0644
wc-core-functions.php
78.714 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-coupon-functions.php
5.564 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
wc-deprecated-functions.php
39.776 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-formatting-functions.php
49.896 KB
24 Nov 2025 11.10 PM
raydofqv / raydofqv
0644
wc-interactivity-api-functions.php
2.167 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-notice-functions.php
8.492 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
wc-order-functions.php
44.009 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
wc-order-item-functions.php
5.032 KB
25 Jan 2023 3.19 AM
raydofqv / raydofqv
0644
wc-order-step-logger-functions.php
5.971 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-page-functions.php
9.431 KB
23 Sep 2024 8.44 PM
raydofqv / raydofqv
0644
wc-product-functions.php
67.375 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-rest-functions.php
13.934 KB
24 Nov 2025 11.10 PM
raydofqv / raydofqv
0644
wc-stock-functions.php
17.433 KB
24 Nov 2025 11.10 PM
raydofqv / raydofqv
0644
wc-template-functions.php
142.066 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
wc-template-hooks.php
12.843 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
wc-term-functions.php
24.568 KB
24 Nov 2025 11.10 PM
raydofqv / raydofqv
0644
wc-update-functions.php
102.38 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
wc-user-functions.php
35.349 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
wc-webhook-functions.php
5.767 KB
25 Jun 2024 9.17 PM
raydofqv / raydofqv
0644
wc-widget-functions.php
2.015 KB
20 Aug 2020 11.18 PM
raydofqv / raydofqv
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF Static GIF