Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
woocommerce-multilingual
/
classes
/
Multicurrency
/
Resolver
:
ResolverForContext.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace WCML\MultiCurrency\Resolver; use WCML\COT\Helper as COTHelper; use WCML\MultiCurrency\Settings; use WCML\Orders\Helper as OrdersHelper; use WPML\FP\Logic; use WPML\FP\Obj; use WPML\FP\Relation; class ResolverForContext implements Resolver { /** @var callable $getOriginalProductLanguage */ private $getOriginalProductLanguage; public function __construct( callable $getOriginalProductLanguage ) { $this->getOriginalProductLanguage = $getOriginalProductLanguage; } /** * @inheritDoc */ public function getClientCurrency() { $getOnWoocommerceQuickEdit = function() { if ( ! empty( $_REQUEST['woocommerce_quick_edit'] ) ) { return wcml_get_woocommerce_currency_option(); } return null; }; $getIfMissingCustomPrice = function() { if ( Settings::isDisplayOnlyCustomPrices() && is_product() ) { $product = wc_get_product(); $originalProductLanguage = call_user_func( $this->getOriginalProductLanguage, $product->get_id() ); // $isMissingCustomPrice :: int -> bool $isMissingCustomPrice = function( $productOrVariationId ) use ( $originalProductLanguage ) { return ! get_post_meta( apply_filters( 'wpml_object_id', $productOrVariationId, get_post_type( $productOrVariationId ), true, $originalProductLanguage ), '_wcml_custom_prices_status', true ); }; if ( $product->get_type() === 'variable' ) { foreach ( $product->get_children() as $child ) { if ( $isMissingCustomPrice( $child ) ) { return wcml_get_woocommerce_currency_option(); } } } elseif ( $isMissingCustomPrice( $product->get_id() ) ) { return wcml_get_woocommerce_currency_option(); } } return null; }; $getOnPayForOrder = function() { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( isset( $_GET['pay_for_order'], $_GET['key'] ) && $_GET['pay_for_order'] ) { $cacheGroup = 'wcml_client_currency'; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash $cacheKey = 'order' . sanitize_text_field( $_GET['key'] ); $orderCurrency = wp_cache_get( $cacheKey, $cacheGroup ); if ( $orderCurrency ) { return $orderCurrency; } else { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $orderId = wc_get_order_id_by_order_key( wc_clean( wp_unslash( $_GET['key'] ) ) ); if ( $orderId ) { $clientCurrency = OrdersHelper::getCurrency( $orderId, true ); wp_cache_set( $cacheKey, $clientCurrency, $cacheGroup ); return $clientCurrency; } } } return null; }; $getOnSearchProductsFromOrderCurrencyCookie = function() { if ( Relation::propEq( 'action', 'woocommerce_json_search_products_and_variations', $_GET ) ) { return Obj::prop( '_wcml_order_currency', $_COOKIE ); } return null; }; $getFromHttpRefererShopOrderCurrency = function() { $refererUrl = Obj::prop( 'HTTP_REFERER', $_SERVER ); if ( $refererUrl ) { $query = parse_url( $refererUrl, PHP_URL_QUERY ); if ( $query ) { parse_str( $query, $queryArgs ); if ( COTHelper::isUsageEnabled() ) { $id = (int) Obj::prop( 'id', $queryArgs ); if ( $id && COTHelper::isOrder( $id ) ) { return OrdersHelper::getCurrency( $id, true ); } } else { $postId = (int) Obj::prop( 'post', $queryArgs ); if ( $postId && get_post_type( $postId ) === 'shop_order' ) { return OrdersHelper::getCurrency( $postId, true ); } } } } return null; }; $resolve = Logic::firstSatisfying( Logic::isTruthy(), [ $getOnWoocommerceQuickEdit, $getIfMissingCustomPrice, $getOnPayForOrder, $getOnSearchProductsFromOrderCurrencyCookie, $getFromHttpRefererShopOrderCurrency, ] ); return $resolve( null ); } }