PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / Orders / Helper.php
woocommerce-multilingual / classes / Orders Last commit date
Legacy 1 week ago Helper.php 1 week ago
Helper.php
105 lines
1 <?php
2
3 namespace WCML\Orders;
4
5 use WPML\FP\Fns;
6 use WPML\FP\Logic;
7 use WPML\FP\Maybe;
8 use WPML\FP\Relation;
9 use WPML\LIB\WP\Cache;
10 use function WPML\FP\invoke;
11 use function WPML\FP\pipe;
12 use WCML\COT\Helper as COTHelper;
13 use WCML\Orders\Legacy\Helper as LegacyHelper;
14
15 class Helper {
16
17 const CACHE_GROUP = 'wcml_order_currency';
18 const KEY_LEGACY_CURRENCY = '_order_currency';
19
20 public static function getCurrency( $orderId, $useDB = false ) {
21 $useDB = $useDB || ! did_action( 'woocommerce_after_register_post_type' );
22
23 if ( $useDB ) {
24 return self::getCurrencyFromDB( $orderId );
25 } else {
26 return self::getCurrencyFromOrderObject( $orderId );
27 }
28 }
29
30 private static function getCurrencyFromDB( $orderId ) {
31 $getCurrency = Cache::memorize( self::CACHE_GROUP, MINUTE_IN_SECONDS, function( $orderId ) {
32 global $wpdb;
33
34 if ( \WCML\COT\Helper::isUsageEnabled() ) {
35 $orderTable = \WCML\COT\Helper::getTableName();
36
37 $currency = $wpdb->get_var(
38 $wpdb->prepare(
39 "SELECT currency FROM {$orderTable} WHERE id = %d",
40 $orderId
41 )
42 );
43 } else {
44 $currency = get_post_meta( $orderId, self::KEY_LEGACY_CURRENCY, true );
45 }
46
47 return $currency ?: null;
48 } );
49
50 return $getCurrency( $orderId );
51 }
52
53 private static function getCurrencyFromOrderObject( $orderId ) {
54 $isNotAutoDraft = pipe(
55 invoke( 'get_status' ),
56 Relation::equals( 'auto-draft' ),
57 Logic::not()
58 );
59
60 return Maybe::fromNullable( wc_get_order( $orderId ) )
61 ->filter( $isNotAutoDraft )
62 ->map( invoke( 'get_currency' ) )
63 ->getOrElse( null );
64 }
65
66 public static function setCurrency( $orderId, $currency ) {
67 Maybe::fromNullable( wc_get_order( $orderId ) )
68 ->map( Fns::tap( invoke( 'set_currency' )->with( $currency ) ) )
69 ->map( invoke( 'save' ) );
70 }
71
72 public static function isOrderCreateAdminScreen(): bool {
73 return COTHelper::isOrderCreateAdminScreen() || LegacyHelper::isOrderCreateAdminScreen();
74 }
75
76 public static function isOrderListAdminScreen(): bool {
77 return COTHelper::isOrderListAdminScreen() || LegacyHelper::isOrderListAdminScreen();
78 }
79
80 public static function isOrderEditAdminScreen(): bool {
81 return COTHelper::isOrderEditAdminScreen() || LegacyHelper::isOrderEditAdminScreen();
82 }
83
84 public static function isEditingNewOrderItems() {
85 return (
86 isset( $_POST['action'] )
87 && in_array(
88 $_POST['action'],
89 [
90 'woocommerce_add_order_item',
91 'woocommerce_remove_order_item',
92 'woocommerce_calc_line_taxes',
93 'woocommerce_save_order_items',
94 ],
95 true
96 )
97 )
98 ||
99 (
100 isset( $_GET['action'] )
101 && $_GET['action'] === 'woocommerce_json_search_products_and_variations'
102 );
103 }
104 }
105