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 / Rest / Wrapper / Orders / Languages.php
woocommerce-multilingual / classes / Rest / Wrapper / Orders Last commit date
Languages.php 1 week ago Prices.php 1 week ago
Languages.php
83 lines
1 <?php
2
3 namespace WCML\Rest\Wrapper\Orders;
4
5 use WCML\Rest\Wrapper\Handler;
6 use WCML\Rest\Exceptions\InvalidLanguage;
7 use WPML\FP\Obj;
8
9 use function WCML\functions\getId;
10
11 class Languages extends Handler {
12
13 public function query( $args, $request ) {
14 $lang = $request->get_param( 'lang' );
15
16 if ( ! is_null( $lang ) && 'all' !== $lang ) {
17 $args['meta_query'][] = [
18 'key' => \WCML_Orders::KEY_LANGUAGE,
19 'value' => strval( $lang ),
20 ];
21 }
22
23 return $args;
24 }
25
26
27 public function prepare( $response, $object, $request ) {
28 $language = $request->get_param( 'lang' );
29 if ( empty( $language ) ) {
30 $language = apply_filters( 'wpml_default_language', null );
31 }
32
33 $orderLanguage = \WCML_Orders::getLanguage( $this->get_id( $object ) );
34
35 if ( $orderLanguage !== $language ) {
36 $lineItems = Obj::propOr( [], 'line_items', $response->data );
37 foreach ( $lineItems as $k => $item ) {
38 $translatedProductId = wpml_object_id_filter( $item['product_id'], 'product', false, $language );
39 $translatedVariationId = ( empty( $item['variation_id'] ) ) ? 0 : wpml_object_id_filter( $item['variation_id'], 'product_variation', false, $language );
40
41 if ( $translatedProductId ) {
42 $response->data['line_items'][ $k ]['product_id'] = $translatedProductId;
43
44 $translatedProduct = get_post( $translatedProductId );
45 $postName = $translatedProduct->post_title;
46
47 if ( $translatedVariationId ) {
48 $response->data['line_items'][ $k ]['variation_id'] = $translatedVariationId;
49
50 $translatedVariation = get_post( $translatedVariationId );
51 $postName = $translatedVariation->post_title;
52 }
53
54 $response->data['line_items'][ $k ]['name'] = $postName;
55 }
56 }
57 }
58
59 return $response;
60 }
61
62 private function get_id( $object ) {
63 try {
64 return getId( $object );
65 } catch ( \Exception $err ) {
66 throw new \Exception( 'Order has no ID set.' );
67 }
68 }
69
70
71 public function insert( $object, $request, $creating ) {
72 $data = $request->get_params();
73 if ( isset( $data['lang'] ) ) {
74
75 if ( ! apply_filters( 'wpml_language_is_active', false, $data['lang'] ) ) {
76 throw new InvalidLanguage( $data['lang'] );
77 }
78
79 \WCML_Orders::setLanguage( $object->get_id(), $data['lang'] );
80 }
81 }
82 }
83