PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 month ago Factory.php 1 month ago HelperByLanguage.php 1 month ago HelperByLocation.php 1 month ago Resolver.php 1 month ago ResolverForContext.php 1 month ago ResolverForDefault.php 1 month ago ResolverForModeLanguage.php 1 month ago ResolverForModeLocation.php 1 month 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