PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 month ago Frontend 1 month ago Language 1 month ago Store 1 month ago Wrapper 1 month ago Functions.php 1 month ago Generic.php 1 month ago Hooks.php 2 years ago ProductSaveActions.php 1 month 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