<?php namespace WPDesk\FS\TableRate; use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable; use Psr\Log\LoggerInterface; /** * Can convert from shop currency to current currency. */ class MultiCurrency implements Hookable { /** * @var LoggerInterface */ private $logger; /** * @var string */ private $filter_prefix; /** * @param LoggerInterface $logger * @param string $filter_prefix */ public function __construct( LoggerInterface $logger, string $filter_prefix ) { $this->logger = $logger; $this->filter_prefix = $filter_prefix; } public function hooks() { add_filter( 'flexible_shipping_value_in_currency', [ $this, 'flexible_shipping_value_in_currency' ], PHP_INT_MAX, 2 ); } public function flexible_shipping_value_in_currency( $amount, $base_currency_amount = null ) { if ( $base_currency_amount && $amount !== $base_currency_amount ) { // Already converted. return $amount; } return (float) apply_filters( $this->filter_prefix . '/currency-switchers/amount', $amount, $this->logger ); } }