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 / Products / Products.php
woocommerce-multilingual / classes / Rest / Wrapper / Products Last commit date
Products.php 2 weeks ago
Products.php
96 lines
1 <?php
2
3 namespace WCML\Rest\Wrapper\Products;
4
5 use WCML\Rest\Exceptions\Generic;
6 use WCML\Rest\Exceptions\InvalidLanguage;
7 use WCML\Rest\Exceptions\InvalidProduct;
8 use WCML\Rest\ProductSaveActions;
9 use WCML\Rest\Wrapper\Handler;
10 use WCML\Utilities\Suspend\PostsQueryFiltersFactory as SuspendPostsQueryFiltersFactory;
11 use WPML\FP\Fns;
12 use WPML\FP\Obj;
13
14 class Products extends Handler {
15
16 private $sitepress;
17 private $wpmlPostTranslations;
18 private $productSaveActions;
19 private $strings;
20
21 public function __construct(
22 \SitePress $sitepress,
23 \WPML_Post_Translation $wpmlPostTranslations,
24 ProductSaveActions $productSaveActions,
25 \WCML_WC_Strings $strings
26 ) {
27 $this->sitepress = $sitepress;
28 $this->wpmlPostTranslations = $wpmlPostTranslations;
29 $this->productSaveActions = $productSaveActions;
30 $this->strings = $strings;
31 }
32
33 public function query( $args, $request ) {
34 $data = $request->get_params();
35 if ( isset( $data['lang'] ) && $data['lang'] === 'all' ) {
36 SuspendPostsQueryFiltersFactory::create();
37 }
38
39 return $args;
40 }
41
42
43 public function prepare( $response, $object, $request ) {
44 $response->data['translations'] = [];
45
46 $langCode = Obj::prop( 'lang', $request->get_params() );
47
48 if ( array_key_exists( 'attributes', $response->data ) ) {
49 foreach ( $response->data['attributes'] as &$attribute ) {
50 $attribute['name'] = $this->strings->get_translated_string_by_name_and_context( \WCML_WC_Strings::DOMAIN_WORDPRESS, \WCML_WC_Strings::TAXONOMY_SINGULAR_NAME_PREFIX . $attribute['name'], $langCode, $attribute['name'] );
51 }
52 }
53
54 $trid = $this->wpmlPostTranslations->get_element_trid( $response->data['id'] );
55
56 if ( $trid ) {
57 $translations = $this->wpmlPostTranslations->get_element_translations( $response->data['id'], $trid );
58 foreach ( $translations as $translation ) {
59 $response->data['translations'][ $this->wpmlPostTranslations->get_element_lang_code( $translation ) ] = $translation;
60 }
61 $response->data['lang'] = $this->wpmlPostTranslations->get_element_lang_code( $response->data['id'] );
62 }
63
64 return $response;
65 }
66
67
68 public function insert( $object, $request, $creating ) {
69 $getParam = Obj::prop( Fns::__, $request->get_params() );
70
71 $langCode = $getParam( 'lang' );
72 $translationOf = $getParam( 'translation_of' );
73 $trid = null;
74
75 if ( $langCode ) {
76
77 if ( ! $this->sitepress->is_active_language( $langCode ) ) {
78 throw new InvalidLanguage( $langCode );
79 }
80
81 if ( $translationOf ) {
82 $trid = $this->wpmlPostTranslations->get_element_trid( $translationOf );
83
84 if ( ! $trid ) {
85 throw new InvalidProduct( $translationOf );
86 }
87 }
88
89 } elseif ( $translationOf ) {
90 throw new Generic( __( 'Using "translation_of" requires providing a "lang" parameter too', 'woocommerce-multilingual' ) );
91 }
92
93 $this->productSaveActions->run( $object, $trid, $langCode, $translationOf, $request );
94 }
95 }
96