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 / EditorScopedSync / EditorChangeTracker.php
woocommerce-multilingual / classes / EditorScopedSync Last commit date
EditorChangeTracker.php 1 month ago ForceUpdateEndpoint.php 1 month ago HooksFactory.php 1 month ago Mode.php 1 month ago Notices.php 1 month ago Settings.php 1 month ago SyncGate.php 1 month 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