PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / Multicurrency / Resolver / ResolverForModeLanguage.php
woocommerce-multilingual / classes / Multicurrency / Resolver Last commit date
ComposedResolver.php 1 week ago Factory.php 1 week ago HelperByLanguage.php 1 week ago HelperByLocation.php 1 week ago Resolver.php 1 week ago ResolverForContext.php 1 week ago ResolverForDefault.php 1 week ago ResolverForModeLanguage.php 1 week ago ResolverForModeLocation.php 1 week ago
ResolverForModeLanguage.php
74 lines
1 <?php
2
3 namespace WCML\MultiCurrency\Resolver;
4
5 use WCML\MultiCurrency\Settings;
6 use WCML_Multi_Currency;
7 use WPML\FP\Logic;
8
9 class ResolverForModeLanguage implements Resolver {
10
11 public function getClientCurrency() {
12 $currentLang = HelperByLanguage::getCurrentLanguage();
13 $storedLang = wcml_user_store_get( WCML_Multi_Currency::CURRENCY_LANGUAGE_STORAGE_KEY );
14 $storedCurrency = wcml_user_store_get( WCML_Multi_Currency::CURRENCY_STORAGE_KEY );
15
16 $getInitialCurrencyForLang = function() use ( $currentLang ) {
17 return Settings::isDefaultCurrencyByLocationForLang( $currentLang )
18 ? HelperByLanguage::getCurrencyByUserCountry( $currentLang )
19 : Settings::getDefaultCurrencyForLang( $currentLang );
20 };
21
22 $reInitCurrencyIfLangHasChanged = function() use ( $currentLang, $storedLang, $storedCurrency, $getInitialCurrencyForLang ) {
23 $hasChangedLang = $storedLang && $currentLang !== $storedLang;
24
25 if ( $hasChangedLang ) {
26 $initialCurrencyForLang = $getInitialCurrencyForLang();
27
28 if ( $initialCurrencyForLang ) {
29 $preventSwitching = apply_filters( 'wcml_switch_currency_exception', false, $storedCurrency, $initialCurrencyForLang, true );
30
31 if ( ! array_key_exists( 'force_switch', $_POST ) && $preventSwitching ) {
32 do_action( 'wcml_multi_currency_set_switching_currency_html', $preventSwitching['prevent_switching'] );
33 }
34
35 return $initialCurrencyForLang;
36 }
37 }
38
39 return null;
40 };
41
42 $getStoredCurrencyIfValid = function() use ( $currentLang, $storedCurrency ) {
43 return Settings::isValidCurrencyForLang( $storedCurrency, $currentLang )
44 ? $storedCurrency
45 : null;
46 };
47
48 $getDefaultCurrencyIfValid = function() use ( $currentLang ) {
49 $defaultCurrency = wcml_get_woocommerce_currency_option();
50
51 return Settings::isValidCurrencyForLang( $defaultCurrency, $currentLang )
52 ? $defaultCurrency
53 : null;
54 };
55
56 $getFirstAvailableCurrencyForLang = function() use ( $currentLang ) {
57 return Settings::getFirstAvailableCurrencyForLang( $currentLang );
58 };
59
60 $resolve = Logic::firstSatisfying(
61 Logic::isTruthy(),
62 [
63 $reInitCurrencyIfLangHasChanged,
64 $getStoredCurrencyIfValid,
65 $getInitialCurrencyForLang,
66 $getDefaultCurrencyIfValid,
67 $getFirstAvailableCurrencyForLang,
68 ]
69 );
70
71 return $resolve( null );
72 }
73 }
74