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 / ProductTerms.php
woocommerce-multilingual / classes / Rest / Wrapper Last commit date
Orders 1 week ago Products 1 week ago Reports 1 week ago Composite.php 1 week ago Factory.php 1 week ago Handler.php 1 week ago ProductAttributes.php 1 week ago ProductTerms.php 1 week ago
ProductTerms.php
109 lines
1 <?php
2
3 namespace WCML\Rest\Wrapper;
4
5 use WPML\FP\Fns;
6 use WPML\FP\Obj;
7 use WCML\Rest\Exceptions\InvalidLanguage;
8 use WCML\Rest\Exceptions\InvalidTerm;
9 use WCML\Rest\Exceptions\MissingLanguage;
10
11 class ProductTerms extends Handler {
12
13 private $sitepress;
14 private $wpmlTermTranslations;
15 private $wcmlTerms;
16
17 public function __construct(
18 \SitePress $sitepress,
19 \WPML_Term_Translation $wpmlTermTranslations,
20 \WCML_Terms $wcmlTerms
21 ) {
22 $this->sitepress = $sitepress;
23 $this->wpmlTermTranslations = $wpmlTermTranslations;
24 $this->wcmlTerms = $wcmlTerms;
25 }
26
27 public function query( $args, $request ) {
28 $language = Obj::prop( 'lang', $request->get_params() );
29
30 if ( $language ) {
31 if ( 'all' === $language ) {
32 remove_filter( 'terms_clauses', [ $this->sitepress, 'terms_clauses' ] );
33 remove_filter( 'get_term', [ $this->sitepress, 'get_term_adjust_id' ], 1 );
34 remove_filter( 'get_terms_args', [ $this->sitepress, 'get_terms_args_filter' ] );
35 } else {
36 $this->checkLanguage( $language );
37 }
38 }
39
40 return $args;
41 }
42
43 public function prepare( $response, $object, $request ) {
44
45 $response->data['translations'] = [];
46
47 $termTaxonomyId = (int) Obj::prop( 'term_taxonomy_id', $object );
48 $trid = $this->wpmlTermTranslations->get_element_trid( $termTaxonomyId );
49
50 if ( $trid ) {
51 $getTermId = function( $termTaxonomyId ) {
52 $term = get_term_by( 'term_taxonomy_id', $termTaxonomyId );
53 return $term->term_id ?? null;
54 };
55
56 $response->data['translations'] = Fns::map(
57 $getTermId,
58 $this->wpmlTermTranslations->get_element_translations( $termTaxonomyId, $trid )
59 );
60
61 $response->data['lang'] = $this->wpmlTermTranslations->get_element_lang_code( $termTaxonomyId );
62 }
63
64 return $response;
65 }
66
67 public function insert( $term, $request, $creating ) {
68 $getParam = Obj::prop( Fns::__, $request->get_params() );
69
70 $language = $getParam( 'lang' );
71 $translationOf = $getParam( 'translation_of' );
72
73 if ( $language ) {
74
75 $this->checkLanguage( $language );
76
77 if ( $creating ) {
78 if ( $translationOf ) {
79 $translationOfTerm = get_term( $translationOf, $term->taxonomy );
80
81 $trid = isset( $translationOfTerm->term_taxonomy_id )
82 ? $this->wpmlTermTranslations->get_element_trid( $translationOfTerm->term_taxonomy_id )
83 : null;
84
85 if ( ! $trid ) {
86 throw new InvalidTerm( $translationOf );
87 }
88 } else {
89 $trid = null;
90 }
91 } else {
92 $trid = $this->wpmlTermTranslations->get_element_trid( $term->term_taxonomy_id );
93 }
94
95 $this->sitepress->set_element_language_details( $term->term_taxonomy_id, 'tax_' . $term->taxonomy, $trid, $language );
96
97 $this->wcmlTerms->update_terms_translated_status( $term->taxonomy );
98 } elseif ( $translationOf ) {
99 throw new MissingLanguage();
100 }
101 }
102
103 private function checkLanguage( $language ) {
104 if ( ! $this->sitepress->is_active_language( $language ) ) {
105 throw new InvalidLanguage( $language );
106 }
107 }
108 }
109