Download all files FTP
This commit is contained in:
83
wp-content/plugins/litespeed-cache/thirdparty/aelia-currencyswitcher.cls.php
vendored
Normal file
83
wp-content/plugins/litespeed-cache/thirdparty/aelia-currencyswitcher.cls.php
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
/**
|
||||
* The Third Party integration with the Aelia CurrencySwitcher plugin.
|
||||
*
|
||||
* @since 1.0.13
|
||||
* @since 2.6 Removed hook_vary as OLS supports vary header already
|
||||
* @package LiteSpeed
|
||||
* @subpackage LiteSpeed_Cache/thirdparty
|
||||
*/
|
||||
|
||||
namespace LiteSpeed\Thirdparty;
|
||||
|
||||
defined( 'WPINC' ) || exit();
|
||||
|
||||
/**
|
||||
* Integration layer for Aelia Currency Switcher.
|
||||
*
|
||||
* Registers the plugin cookies as Vary drivers so cached pages can differ by
|
||||
* selected currency / location. Hooks both the runtime vary list (headers)
|
||||
* and the rewrite-rules vary list (always needed).
|
||||
*/
|
||||
class Aelia_CurrencySwitcher {
|
||||
|
||||
/**
|
||||
* Cookie names used by Aelia Currency Switcher to determine currency & geo.
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
private static $_cookies = array( 'aelia_cs_selected_currency', 'aelia_customer_country', 'aelia_customer_state', 'aelia_tax_exempt' );
|
||||
|
||||
/**
|
||||
* Detects if WooCommerce + Aelia Currency Switcher are present and registers hooks.
|
||||
*
|
||||
* @since 1.0.13
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function detect() {
|
||||
if ( defined( 'WOOCOMMERCE_VERSION' ) && isset( $GLOBALS['woocommerce-aelia-currencyswitcher'] ) && is_object( $GLOBALS['woocommerce-aelia-currencyswitcher'] ) ) {
|
||||
// Not all pages need to add vary, so allow sites to restrict via filter.
|
||||
self::$_cookies = apply_filters( 'litespeed_3rd_aelia_cookies', self::$_cookies );
|
||||
|
||||
// Add cookies to the active vary header list (conditionally used at runtime).
|
||||
add_filter( 'litespeed_vary_curr_cookies', __CLASS__ . '::check_cookies' );
|
||||
|
||||
// Ensure rewrite rules are aware of these cookies (always include).
|
||||
add_filter( 'litespeed_vary_cookies', __CLASS__ . '::register_cookies' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure Aelia cookies are part of the global vary cookie registry.
|
||||
*
|
||||
* @since 1.0.13
|
||||
*
|
||||
* @param string[] $cookies Current list of vary cookies.
|
||||
* @return string[] Updated list including Aelia cookies.
|
||||
*/
|
||||
public static function register_cookies( $cookies ) {
|
||||
return array_merge( $cookies, self::$_cookies );
|
||||
}
|
||||
|
||||
/**
|
||||
* Conditionally append Aelia cookies to the vary header set for WooCommerce pages.
|
||||
*
|
||||
* If the page is not a WooCommerce page, leave the list unchanged.
|
||||
* Otherwise, append Aelia's cookies so responses vary correctly.
|
||||
*
|
||||
* @since 1.0.13
|
||||
* @access public
|
||||
*
|
||||
* @param string[] $cookies Current list of vary cookies for the response.
|
||||
* @return string[] Potentially augmented list of vary cookies.
|
||||
*/
|
||||
public static function check_cookies( $cookies ) {
|
||||
// NOTE: is_cart and is_checkout are handled by WooCommerce itself.
|
||||
if ( ! function_exists( 'is_woocommerce' ) || ! is_woocommerce() ) {
|
||||
return $cookies;
|
||||
}
|
||||
|
||||
return array_merge( $cookies, self::$_cookies );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user