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 / EditorScopedSync / EditorChangeTracker.php
woocommerce-multilingual / classes / EditorScopedSync Last commit date
EditorChangeTracker.php 1 week ago ForceUpdateEndpoint.php 1 week ago HooksFactory.php 1 week ago Mode.php 1 week ago Notices.php 1 week ago Settings.php 1 week ago SyncGate.php 1 week ago
EditorChangeTracker.php
77 lines
1 <?php
2
3 namespace WCML\EditorScopedSync;
4
5 class EditorChangeTracker implements \IWPML_Backend_Action {
6
7 const PRIORITY_BEFORE_WC_SAVES = 0;
8
9 private static $editedVariationIds = [];
10
11 private static $deletedVariationIds = [];
12
13 private static $productChanges = [];
14
15 public function add_hooks() {
16 add_action( 'woocommerce_save_product_variation', [ __CLASS__, 'recordVariationSave' ], self::PRIORITY_BEFORE_WC_SAVES, 2 );
17 add_action( 'before_delete_post', [ __CLASS__, 'recordVariationDelete' ], self::PRIORITY_BEFORE_WC_SAVES, 2 );
18 add_action( 'woocommerce_admin_process_product_object', [ __CLASS__, 'recordProductChanges' ], self::PRIORITY_BEFORE_WC_SAVES, 1 );
19 }
20
21 public static function recordVariationSave( $variationId, $i ) {
22 $variationId = (int) $variationId;
23 $parent = (int) wp_get_post_parent_id( $variationId );
24 if ( $parent <= 0 ) {
25 return;
26 }
27 self::$editedVariationIds[ $parent ][ $variationId ] = true;
28 }
29
30 public static function recordVariationDelete( $postId, $post = null ) {
31 if ( ! $post || 'product_variation' !== $post->post_type ) {
32 return;
33 }
34 $parent = (int) $post->post_parent;
35 if ( $parent <= 0 ) {
36 return;
37 }
38 self::$deletedVariationIds[ $parent ][ (int) $postId ] = true;
39 }
40
41 public static function recordProductChanges( $product ) {
42 if ( ! is_object( $product ) || ! method_exists( $product, 'get_changes' ) || ! method_exists( $product, 'get_id' ) ) {
43 return;
44 }
45 self::$productChanges[ (int) $product->get_id() ] = $product->get_changes();
46 }
47
48 public static function editedVariationIdsFor( $productId ) {
49 $productId = (int) $productId;
50 $ids = isset( self::$editedVariationIds[ $productId ] ) ? self::$editedVariationIds[ $productId ] : [];
51 return array_keys( $ids );
52 }
53
54 public static function deletedVariationIdsFor( $productId ) {
55 $productId = (int) $productId;
56 $ids = isset( self::$deletedVariationIds[ $productId ] ) ? self::$deletedVariationIds[ $productId ] : [];
57 return array_keys( $ids );
58 }
59
60 public static function productChangesFor( $productId ) {
61 $productId = (int) $productId;
62 return isset( self::$productChanges[ $productId ] ) ? self::$productChanges[ $productId ] : [];
63 }
64
65 public static function hasAnyVariationActivity( $productId ) {
66 $productId = (int) $productId;
67 return ! empty( self::$editedVariationIds[ $productId ] )
68 || ! empty( self::$deletedVariationIds[ $productId ] );
69 }
70
71 public static function reset() {
72 self::$editedVariationIds = [];
73 self::$deletedVariationIds = [];
74 self::$productChanges = [];
75 }
76 }
77