PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.16.4
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.16.4
1.19.8 1.19.7 1.19.6 1.19.5 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.12.0 1.13.0 1.14.0 1.15.0 1.15.1 1.15.2 1.15.3 1.16.0 1.16.1 1.16.2 1.16.3 1.16.4 1.16.5 1.16.6 1.16.7 1.16.8 1.17.0 1.17.6 1.17.7 1.17.8 1.17.9 1.18.0 1.18.1 1.18.2 1.18.3 1.18.4 1.18.5 1.18.6 1.18.7 1.18.8 1.18.9 1.19.0 1.19.1 1.19.2 1.19.3 1.19.4 1.3.19 1.3.20 1.4.0 1.4.1 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.16 1.5.17 1.5.18 1.5.19 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.8.0 1.8.1 1.8.3 1.9.0 1.9.1 1.9.2
nitropack / classes / Integration / Plugin / AeliaCurrencySwitcher.php
nitropack / classes / Integration / Plugin Last commit date
AdvancedMathCaptcha.php 3 years ago AeliaCurrencySwitcher.php 3 years ago BeaverBuilder.php 4 years ago CF_Helper.php 3 years ago Cloudflare.php 2 years ago CommonHelpers.php 3 years ago CookieNotice.php 4 years ago DownloadManager.php 4 years ago Elementor.php 3 years ago Ezoic.php 4 years ago FusionBuilder.php 4 years ago GeoTargetingWP.php 2 years ago GravityForms.php 2 years ago JetPackNP.php 3 years ago NginxHelper.php 2 years ago RC.php 3 years ago RankMathNP.php 3 years ago ShortPixel.php 4 years ago SquirrlySEO.php 3 years ago TheEventsCalendar.php 3 years ago ThriveTheme.php 4 years ago WCML.php 3 years ago WPBakeryNP.php 3 years ago WPCacheHelper.php 3 years ago WPForms.php 3 years ago WPML.php 1 year ago WPRocket.php 4 years ago Woocommerce.php 4 years ago WoocommerceCacheHandler.php 4 years ago YoastSEO.php 3 years ago
AeliaCurrencySwitcher.php
90 lines
1 <?php
2
3 namespace NitroPack\Integration\Plugin;
4
5 class AeliaCurrencySwitcher {
6 const STAGE = "very_early";
7 const customVariationCookies = ['aelia_cs_selected_currency', 'aelia_customer_country'];
8
9 public static function isActive() {
10 return class_exists("\Aelia\WC\CurrencySwitcher\WC_Aelia_CurrencySwitcher");
11 }
12
13 public function init($stage) {
14 $siteConfig = get_nitropack()->getSiteConfig();
15
16 if (empty($siteConfig["isAeliaCurrencySwitcherActive"])) {
17 return true; // ACS is not active
18 }
19
20 if (!self::isAeliaGeolocationEnabled() || self::doesWoocommerceHandleCache() || self::doesCacheHandlerHandleCache()) {
21 return true;
22 }
23
24 // use CloudFlare geolocation if available
25 if (isset($_SERVER["HTTP_CF_IPCOUNTRY"])) {
26 add_action('set_nitropack_geo_cache_prefix', function() {
27 \NitroPack\SDK\NitroPack::addCustomCachePrefix($_SERVER["HTTP_CF_IPCOUNTRY"]);
28 });
29 return true;
30 }
31
32 add_filter("nitropack_passes_cookie_requirements", [$this, "canServeCache"]);
33 }
34
35 public static function configureVariationCookies() {
36 $siteConfig = get_nitropack()->getSiteConfig();
37
38 if (empty($siteConfig["isAeliaCurrencySwitcherActive"])) {
39 removeVariationCookies(self::customVariationCookies);
40 return true;
41 }
42
43 // Check if ACS is configured to not geolocate or geolocation is already with caching
44 if (!self::isAeliaGeolocationEnabled() || self::doesWoocommerceHandleCache() || self::doesCacheHandlerHandleCache()) {
45 removeVariationCookies(self::customVariationCookies);
46 return true;
47 }
48
49 // standard cookie integration
50 initVariationCookies(self::customVariationCookies);;
51 }
52
53 public function canServeCache($currentState) {
54 // some websites only use aelia_cs_selected_currency, but check all cookies just in case.
55 if (empty($_COOKIE["aelia_cs_selected_currency"])
56 && empty($_COOKIE["aelia_customer_country"])
57 && empty($_COOKIE["aelia_customer_state"])
58 && empty($_COOKIE["aelia_tax_exempt"])
59 ) {
60 nitropack_header("X-Nitro-Disabled-Reason: Aelia cookie bypass");
61 return false;
62 }
63
64 return $currentState;
65 }
66
67 public static function isAeliaGeolocationEnabled() {
68 $siteConfig = get_nitropack()->getSiteConfig();
69
70 return !empty($siteConfig['options_cache']['wc_aelia_currency_switcher']['ipgeolocation_enabled'])
71 && $siteConfig['options_cache']['wc_aelia_currency_switcher']['ipgeolocation_enabled'] == 1;
72 }
73
74 public static function doesWoocommerceHandleCache() {
75 $siteConfig = get_nitropack()->getSiteConfig();
76
77 return !empty($siteConfig['isWoocommerceActive'])
78 && !empty($siteConfig['options_cache']['woocommerce_default_customer_address'])
79 && "geolocation_ajax" === $siteConfig['options_cache']['woocommerce_default_customer_address'];
80 }
81
82 public static function doesCacheHandlerHandleCache() {
83 $siteConfig = get_nitropack()->getSiteConfig();
84
85 return !empty($siteConfig['isWoocommerceCacheHandlerActive'])
86 && !empty($siteConfig['options_cache']['cache_handler_cache_handler'])
87 && in_array($siteConfig['options_cache']['cache_handler_cache_handler'], ['enable_redirect', 'enable_ajax']);
88 }
89 }
90