Factory.php
2 weeks ago
MulticurrencyHooks.php
2 weeks ago
class-wcml-dynamic-pricing.php
2 weeks ago
MulticurrencyHooks.php
63 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WCML\Compatibility\WcDynamicPricing; |
| 4 | |
| 5 | class MulticurrencyHooks implements \IWPML_Action { |
| 6 | |
| 7 | public function add_hooks() { |
| 8 | add_filter( 'wc_dynamic_pricing_load_modules', [ $this, 'filter_price' ] ); |
| 9 | add_filter( 'woocommerce_dynamic_pricing_get_rule_amount', [ $this, 'woocommerce_dynamic_pricing_get_rule_amount' ], 10, 2 ); |
| 10 | add_filter( 'dynamic_pricing_product_rules', [ $this, 'dynamic_pricing_product_rules' ] ); |
| 11 | } |
| 12 | |
| 13 | public function filter_price( $modules ) { |
| 14 | |
| 15 | foreach ( $modules as $mod_key => $module ) { |
| 16 | if ( isset( $module->available_rulesets ) ) { |
| 17 | $available_rulesets = $module->available_rulesets; |
| 18 | |
| 19 | foreach ( $available_rulesets as $rule_key => $available_ruleset ) { |
| 20 | |
| 21 | if ( isset( $available_ruleset['rules'] ) && is_array( $available_ruleset['rules'] ) ) { |
| 22 | $rules = $available_ruleset['rules']; |
| 23 | foreach ( $rules as $r_key => $rule ) { |
| 24 | if ( 'fixed_product' === $rule['type'] ) { |
| 25 | $rules[ $r_key ]['amount'] = apply_filters( 'wcml_raw_price_amount', $rule['amount'] ); |
| 26 | } |
| 27 | } |
| 28 | $modules[ $mod_key ]->available_rulesets[ $rule_key ]['rules'] = $rules; |
| 29 | |
| 30 | } elseif ( isset( $available_ruleset['type'] ) && 'fixed_product' === $available_ruleset['type'] ) { |
| 31 | $modules[ $mod_key ]->available_rulesets[ $rule_key ]['amount'] = apply_filters( 'wcml_raw_price_amount', $available_ruleset['amount'] ); |
| 32 | } |
| 33 | } |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | return $modules; |
| 38 | } |
| 39 | |
| 40 | public function woocommerce_dynamic_pricing_get_rule_amount( $amount, $rule ) { |
| 41 | |
| 42 | if ( 'price_discount' === $rule['type'] || 'fixed_price' === $rule['type'] ) { |
| 43 | $amount = apply_filters( 'wcml_raw_price_amount', $amount ); |
| 44 | } |
| 45 | |
| 46 | return $amount; |
| 47 | } |
| 48 | |
| 49 | public function dynamic_pricing_product_rules( $rules ) { |
| 50 | if ( is_array( $rules ) ) { |
| 51 | foreach ( $rules as $r_key => $rule ) { |
| 52 | foreach ( $rule['rules'] as $key => $product_rule ) { |
| 53 | if ( 'price_discount' === $product_rule['type'] || 'fixed_price' === $product_rule['type'] ) { |
| 54 | $rules[ $r_key ]['rules'][ $key ]['amount'] = apply_filters( 'wcml_raw_price_amount', $product_rule['amount'] ); |
| 55 | } |
| 56 | } |
| 57 | } |
| 58 | } |
| 59 | return $rules; |
| 60 | } |
| 61 | |
| 62 | } |
| 63 |