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 3 weeks ago Frontend 3 weeks ago Language 3 weeks ago Store 3 weeks ago Wrapper 3 weeks ago Functions.php 3 weeks ago Generic.php 3 weeks ago Hooks.php 2 years ago ProductSaveActions.php 3 weeks 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