get_default_currency(); if ( $default_currency !== $config->get_feed_currency() ) { $data->set_current_currency( $config->get_feed_currency() ); } else { $data->set_current_currency( $default_currency ); } } /** /** * Switch currency before feed generation * * @param \CTXFeed\V5\Utility\Config $config feed config array. */ public function switch_currency($config) { // if ($this->woo_multi_currency instanceof \WOOMULTI_CURRENCY_Data) { // return; // } // add_filter('wmc_get_default_currency', function ($currency) use ($config) { // Cache::set('woo_feed_currency', $currency); // // return $config->get_feed_currency(); // }); $woo_multi_currency = new \WOOMULTI_CURRENCY_Data(); // $data = $woo_multi_currency::get_ins(); // $default_currency = $data->get_default_currency(); // // if ($default_currency !== $config->get_feed_currency()) { // $data->set_current_currency($config->get_feed_currency()); // } else { // $data->set_current_currency($default_currency); // } } /** * Restore currency after feed generation * * @param \CTXFeed\V5\Utility\Config $config feed config array. */ public function restore_currency($config) { // phpcs:ignore add_filter('wmc_get_default_currency', function ($currency) { return Cache::get('woo_feed_currency'); }); $woo_multi_currency = new \WOOMULTI_CURRENCY_Data(); $data = $woo_multi_currency::get_ins(); $default_currency = Cache::get('woo_feed_currency'); if (!$default_currency) { $default_currency = $data->get_default_currency(); } $data->set_current_currency($default_currency); } /** * Currency Convert for Currency Switcher * * @param int $price product price. * @param \WC_Product $product product object. * @param \CTXFeed\V5\Utility\Config $config config object. * @param bool $with_tax price with tax or without tax. * @param string $price_type price type regular_price, price, sale_price. * * @return int */ public function get_converted_price($price, $product, $config, $with_tax, $price_type) {// phpcs:ignore $this->switch_currency( $config ); $original_price = $price; if ( $config->get_feed_currency() !== Cache::get('woo_feed_currency' ) ) { $price = $main_price = wmc_get_price( $price, $config->get_feed_currency() ); $wmc_currency_params = get_option('woo_multi_currency_params'); $regular_price = wmc_adjust_fixed_price(json_decode(get_post_meta($product->get_id(), '_regular_price_wmcp', true), true)); $sale_price = wmc_adjust_fixed_price(json_decode(get_post_meta($product->get_id(), '_sale_price_wmcp', true), true)); if ( isset($wmc_currency_params['enable_fixed_price']) && $wmc_currency_params['enable_fixed_price'] == 1 ) { $price = $this->get_curreny_fixed_price($price, $product, $config, $regular_price, $sale_price, $price_type); if (!$price) { $price = $main_price; } } } if (empty($price)) { $price = $original_price; } return $price; } /** * Get currency fixed price * * @param int $price product price. * @param \WC_Product $product product object. * @param \CTXFeed\V5\Utility\Config $config config object. * @param array $regular_price product regular price. * @param array $sale_price product sale price. * @param string $price_type price type regular_price, price, sale_price. * * @return int */ public function get_curreny_fixed_price($price, $product, $config, $regular_price, $sale_price, $price_type) { // phpcs:ignore if ($price_type === 'price' && !empty($regular_price)) { $price = isset($regular_price[$config->get_feed_currency()]) ? $regular_price[$config->get_feed_currency()] : $price ; } elseif ($price_type === 'sale_price' && !empty($sale_price)) { $price = isset($sale_price[$config->get_feed_currency()]) ? $sale_price[$config->get_feed_currency()] : $price; } elseif ($price_type === 'regular_price' && !empty($regular_price)) { $price = isset($regular_price[$config->get_feed_currency()]) ? $regular_price[$config->get_feed_currency()] : $price; } return $price; } }