PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.5.11
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.5.11
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
AeliaCurrencySwitcher.php 4 years ago BeaverBuilder.php 4 years ago CF_Helper.php 4 years ago Cloudflare.php 4 years ago CookieNotice.php 4 years ago DownloadManager.php 4 years ago Ezoic.php 4 years ago FusionBuilder.php 4 years ago NginxHelper.php 4 years ago RC.php 4 years ago RocketNet_Helper.php 4 years ago ShortPixel.php 4 years ago ThriveTheme.php 4 years ago WPCacheHelper.php 4 years ago WPRocket.php 4 years ago Woocommerce.php 4 years ago WoocommerceCacheHandler.php 4 years ago
AeliaCurrencySwitcher.php
111 lines
1 <?php
2
3 namespace NitroPack\Integration\Plugin;
4
5 class AeliaCurrencySwitcher {
6 public const STAGE = "very_early";
7 public 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 // use CloudFlare geolocation if available
21 if (isset($_SERVER["HTTP_CF_IPCOUNTRY"])) {
22 add_action('set_nitropack_geo_cache_prefix', function() {
23 \NitroPack\SDK\NitroPack::addCustomCachePrefix($_SERVER["HTTP_CF_IPCOUNTRY"]);
24 });
25 return true;
26 }
27
28 add_filter("nitropack_passes_cookie_requirements", [$this, "canServeCache"]);
29 }
30
31 public static function configureVariationCookies() {
32 $siteConfig = get_nitropack()->getSiteConfig();
33
34 if (empty($siteConfig["isAeliaCurrencySwitcherActive"])) {
35 self::resetVariationCookies();
36 return true;
37 }
38
39 // Check if Woocommerce Geolocation is configured to handle cache
40 if (!empty($siteConfig['isWoocommerceActive'])
41 && !empty($siteConfig['options_cache']['woocommerce_default_customer_address'])
42 && "geolocation_ajax" === $siteConfig['options_cache']['woocommerce_default_customer_address']
43 ) {
44 self::resetVariationCookies();
45 return true;
46 }
47
48 // Check if Woocommerce Cache Handler is configured
49 if (!empty($siteConfig['isWoocommerceCacheHandlerActive'])
50 && !empty($siteConfig['options_cache']['cache_handler_cache_handler'])
51 && in_array($siteConfig['options_cache']['cache_handler_cache_handler'], ['enable_redirect', 'enable_ajax'])
52 ) {
53 self::resetVariationCookies();
54 return true;
55 }
56
57 // standard cookie integration
58 self::initVariationCookies();
59 }
60
61 public static function initVariationCookies() {
62 $api = get_nitropack_sdk()->getApi();
63 $customVariationCookies = self::customVariationCookies;
64 try {
65 $variationCookies = $api->getVariationCookies();
66 foreach ($variationCookies as $cookie) {
67 $index = array_search($cookie["name"], $customVariationCookies);
68 if ($index !== false) {
69 array_splice($customVariationCookies, $index, 1);
70 }
71 }
72
73 foreach ($customVariationCookies as $cookieName) {
74 $api->setVariationCookie($cookieName);
75 }
76 } catch (\Exception $e) {
77 // what to do here? possible reason for exception is the API not responding
78 return false;
79 }
80 }
81
82 public static function resetVariationCookies() {
83 $api = get_nitropack_sdk()->getApi();
84 try {
85 $variationCookies = $api->getVariationCookies();
86 foreach ($variationCookies as $cookie) {
87 if (in_array($cookie["name"], self::customVariationCookies)) {
88 $api->unsetVariationCookie($cookie["name"]);
89 }
90 }
91 } catch (\Exception $e) {
92 // what to do here? possible reason for exception is the API not responding
93 return false;
94 }
95 }
96
97 public function canServeCache($currentState) {
98 // some websites only use aelia_cs_selected_currency, but check all cookies just in case.
99 if (empty($_COOKIE["aelia_cs_selected_currency"])
100 && empty($_COOKIE["aelia_customer_country"])
101 && empty($_COOKIE["aelia_customer_state"])
102 && empty($_COOKIE["aelia_tax_exempt"])
103 ) {
104 header("X-Nitro-Disabled-Reason: Aelia cookie bypass");
105 return false;
106 }
107
108 return $currentState;
109 }
110 }
111