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 / ProductSaveActions.php
woocommerce-multilingual / classes / Rest Last commit date
Exceptions 1 week ago Frontend 1 week ago Language 1 week ago Store 1 week ago Wrapper 1 week ago Functions.php 1 week ago Generic.php 1 week ago Hooks.php 2 years ago ProductSaveActions.php 1 week ago
ProductSaveActions.php
72 lines
1 <?php
2
3 namespace WCML\Rest;
4
5 use function WCML\functions\getId;
6
7 class ProductSaveActions extends \WPML_Post_Translation {
8
9 private $sitepress;
10
11 private $woocommerceWpml;
12
13 public function __construct(
14 array $settings,
15 \wpdb $wpdb,
16 \SitePress $sitepress,
17 \woocommerce_wpml $woocommerceWpml
18 ) {
19 parent::__construct( $settings, $wpdb );
20 $this->sitepress = $sitepress;
21 $this->woocommerceWpml = $woocommerceWpml;
22 }
23
24 public function run( $product, $trid, $langCode, $translationOf, $wpRestRequest = null ) {
25 $productId = getId( $product );
26 $trid = $trid ?: $this->get_save_post_trid( $productId, null );
27 $langCode = $langCode ?: parent::get_save_post_lang( $productId, $this->sitepress );
28 $sourceLangCode = $this->get_element_lang_code( $translationOf );
29
30 if ( ! $this->synchronize_product_stock_only( $wpRestRequest ) ) {
31 $this->after_save_post( $trid, get_post( $productId, ARRAY_A ), $langCode, $sourceLangCode );
32 }
33
34 $originalProductId = $translationOf ?: $productId;
35 do_action( \WCML\Synchronization\Hooks::HOOK_SYNCHRONIZE_PRODUCT_TRANSLATIONS, get_post( $originalProductId ), [], [] );
36 if ( WCML_MULTI_CURRENCIES_INDEPENDENT === $this->woocommerceWpml->settings['enable_multi_currency'] ) {
37 $this->woocommerceWpml->multi_currency->custom_prices->save_custom_prices_on_rest( $originalProductId, $wpRestRequest );
38 }
39 }
40
41 private function synchronize_product_stock_only( $wpRestRequest ) {
42 if ( $wpRestRequest instanceof \WP_REST_Request ) {
43 $stockSyncFields = [
44 'id',
45 'manage_stock',
46 'stock_quantity',
47 ];
48
49 $requestParamsArray = $wpRestRequest->get_params();
50 $requestFields = array_keys( $requestParamsArray );
51
52 $nonStockFields = array_diff( $requestFields, $stockSyncFields );
53
54 return empty( $nonStockFields );
55 }
56
57 return false;
58 }
59
60 public function save_post_actions( $postId, $post ) {
61 throw new \Exception( 'This method should not be called, use `run` instead.' );
62 }
63
64 public function get_save_post_trid( $postId, $post_status ) {
65 return $this->get_element_trid( $postId );
66 }
67
68 protected function get_save_post_source_lang( $trid, $language_code, $default_language ) {
69 return $this->get_source_lang_code( $this->get_element_id( $language_code, $trid ) );
70 }
71 }
72