<?php namespace WCML\Compatibility\WcPip; class MulticurrencyHooks implements \IWPML_Action { public function add_hooks() { add_filter( 'woocommerce_currency_symbol', [ $this, 'filter_pip_currency_symbol' ] ); add_filter( 'wcml_filter_currency_position', [ $this, 'filter_pip_currency_position' ] ); } /** * @param string $currencySymbol * * @return string */ public function filter_pip_currency_symbol( $currencySymbol ) { remove_filter( 'woocommerce_currency_symbol', [ $this, 'filter_pip_currency_symbol' ] ); $currency = self::getPipOrderCurrency(); if ( $currency ) { $currencySymbol = get_woocommerce_currency_symbol( $currency ); } add_filter( 'woocommerce_currency_symbol', [ $this, 'filter_pip_currency_symbol' ] ); return $currencySymbol; } /** * @param string $currency * * @return string */ public function filter_pip_currency_position( $currency ) { remove_filter( 'wcml_filter_currency_position', [ $this, 'filter_pip_currency_position' ] ); $currency = self::getPipOrderCurrency( $currency ); add_filter( 'wcml_filter_currency_position', [ $this, 'filter_pip_currency_position' ] ); return $currency; } /** * @param string|false $currency * * @return string|false */ private static function getPipOrderCurrency( $currency = false ) { $pip_order_id = Helper::getPipOrderId(); if ( $pip_order_id && isset( WC()->order_factory ) ) { $the_order = WC()->order_factory->get_order( $pip_order_id ); if ( $the_order ) { $currency = $the_order->get_currency(); if ( ! $currency && isset( $_COOKIE['_wcml_order_currency'] ) ) { $currency = $_COOKIE['_wcml_order_currency']; } } } return $currency; } }