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 / Utilities / SyncHash.php
woocommerce-multilingual / classes / Utilities Last commit date
Suspend 1 week ago ActionScheduler.php 1 week ago AdminPages.php 1 week ago AdminUrl.php 1 week ago DB.php 1 week ago Post.php 1 week ago Resources.php 1 week ago SyncHash.php 1 week ago WCTaxonomies.php 1 week ago WcAdminPages.php 1 week ago WpAdminPages.php 1 week ago
SyncHash.php
84 lines
1 <?php
2
3 namespace WCML\Utilities;
4
5 use WPML\FP\Obj;
6
7 class SyncHash {
8
9 const META_KEY = 'wcml_sync_hash';
10 const HAS_CHANGES_FLAG = 'has_changes';
11 const GROUP_FIELDS = 'postmeta_fields';
12 const GROUP_TAXONOMIES = 'taxonomies';
13 const GROUP_DEFAULT_ATTRIBUTES = 'default_attributes';
14
15 const SOURCE_META = 'meta';
16 const SOURCE_EMPTY = 'empty';
17
18 private $hashes = [];
19
20 private function getEmpty() {
21 return [
22 self::GROUP_FIELDS => '',
23 self::GROUP_TAXONOMIES => '',
24 self::GROUP_DEFAULT_ATTRIBUTES => '',
25 ];
26 }
27
28 private function validate( $hash ) {
29 if ( is_array( $hash ) ) {
30 return $hash;
31 }
32 return $this->getEmpty();
33 }
34
35 public function initialize( $objectId, $source, $setChanged = false ) {
36 switch ( $source ) {
37 case self::SOURCE_META:
38 $meta = get_post_meta( $objectId, self::META_KEY, true );
39 $this->hashes[ $objectId ] = empty( $meta ) ? $this->getEmpty() : $this->validate( maybe_unserialize( $meta ) );
40 $this->hashes[ $objectId ][ self::HAS_CHANGES_FLAG ] = $setChanged;
41 break;
42 case self::SOURCE_EMPTY:
43 $this->hashes[ $objectId ] = $this->getEmpty();
44 $this->hashes[ $objectId ][ self::HAS_CHANGES_FLAG ] = $setChanged;
45 break;
46 }
47 }
48
49 private function getHash( $objectId ) {
50 return array_key_exists( $objectId, $this->hashes ) ? $this->validate( $this->hashes[ $objectId ] ) : $this->getEmpty();
51 }
52
53 private function setHash( $objectId, $hash ) {
54 $this->hashes[ $objectId ] = $hash;
55 }
56
57 public function updateGroupValue( $objectId, $group, $hashValue ) {
58 if ( $this->isNewGroupValue( $objectId, $group, $hashValue ) ) {
59 $hash = $this->getHash( $objectId );
60 $hash[ $group ] = $hashValue;
61 $hash[ self::HAS_CHANGES_FLAG ] = true;
62 $this->setHash( $objectId, $hash );
63 }
64 }
65
66 public function isNewGroupValue( $objectId, $group, $hashValue ) {
67 $hash = $this->getHash( $objectId );
68 return Obj::propOr( null, $group, $hash ) !== $hashValue;
69 }
70
71 public function saveHash( $objectId, $clear = false ) {
72 $hash = $this->getHash( $objectId );
73 $hasChanges = (bool) Obj::propOr( null, self::HAS_CHANGES_FLAG, $hash );
74 if ( $hasChanges ) {
75 unset( $hash[ self::HAS_CHANGES_FLAG ] );
76 update_post_meta( $objectId, self::META_KEY, $hash );
77 }
78 if ( $clear ) {
79 unset( $this->hashes[ $objectId ] );
80 }
81 }
82
83 }
84