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 / Shipping / FrontEndHooks.php
woocommerce-multilingual / classes / Multicurrency / Shipping Last commit date
AdminHooks.php 1 week ago DefaultConversion.php 1 week ago FlatRateShipping.php 5 years ago FreeShipping.php 1 week ago FrontEndHooks.php 1 week ago LocalPickup.php 5 years ago ShippingClasses.php 1 week ago ShippingClassesMode.php 1 week ago ShippingHooksFactory.php 1 week ago ShippingMode.php 1 week ago ShippingModeBase.php 1 week ago ShippingModeProvider.php 1 week ago UnsupportedShipping.php 1 week ago VariableCost.php 1 week ago
FrontEndHooks.php
74 lines
1 <?php
2
3 namespace WCML\Multicurrency\Shipping;
4
5 use IWPML_Action;
6 use WCML\StandAlone\IStandAloneAction;
7
8 class FrontEndHooks implements IWPML_Action, IStandAloneAction {
9
10 private $multiCurrency;
11
12 public function __construct( $multiCurrency ) {
13 $this->multiCurrency = $multiCurrency;
14 }
15
16 public function add_hooks() {
17 ShippingModeProvider::getAll()->each( function( ShippingMode $shippingMode ) {
18 add_filter(
19 'woocommerce_shipping_' . $shippingMode->getMethodId() . '_instance_option',
20 $this->getShippingCost( $shippingMode ),
21 10,
22 3
23 );
24 }
25 );
26 }
27
28 public function getShippingCost( ShippingMode $shippingMode ) {
29 return function( $rate, $key, $wcShippingMethod ) use ( $shippingMode ) {
30 if ( $shippingMode->isManualPricingEnabled( $wcShippingMethod ) ) {
31 if ( 'cost' === $key ) {
32 $rate = $shippingMode->getShippingCostValue( $wcShippingMethod, $this->getClientCurrency() );
33 do_action( 'wcml_shipping_cost_in_mc', $wcShippingMethod );
34 } elseif ( $shippingMode instanceof ShippingClassesMode ) {
35 if ( $this->isShippingClass( $key ) ) {
36 $rate = $shippingMode->getShippingClassCostValue( $wcShippingMethod, $this->getClientCurrency(), $key );
37 } elseif ( $this->isNoShippingClass( $key ) ) {
38 $rate = $shippingMode->getNoShippingClassCostValue( $wcShippingMethod, $this->getClientCurrency() );
39 }
40 }
41 }
42 return $rate;
43 };
44 }
45
46 private function isShippingClass( $key ) {
47 return 'class_cost_' === substr( $key, 0, 11 );
48 }
49
50 private function isNoShippingClass( $key ) {
51 return 'no_class_cost' === substr( $key, 0, 13 );
52 }
53
54 private function getClientCurrency() {
55 return $this->adjustCurrencyOnWidgetChange( $this->multiCurrency->get_client_currency() );
56 }
57
58 private function adjustCurrencyOnWidgetChange( $currencyCode ) {
59 $postData = wpml_collect( $_POST );
60 $currencyCodeInRequest = $postData->get( 'currency' );
61 if ( 'wcml_switch_currency' === $postData->get( 'action' )
62 && $currencyCodeInRequest
63 && $this->validateCurrencyCode( $currencyCodeInRequest ) ) {
64 return $currencyCodeInRequest;
65 }
66 return $currencyCode;
67 }
68
69 private function validateCurrencyCode( $currencyCode ) {
70 return in_array( $currencyCode, $this->multiCurrency->get_currency_codes() );
71 }
72
73 }
74