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 2 weeks ago ActionScheduler.php 2 weeks ago AdminPages.php 2 weeks ago AdminUrl.php 2 weeks ago DB.php 2 weeks ago Post.php 2 weeks ago Resources.php 2 weeks ago SyncHash.php 2 weeks ago WCTaxonomies.php 2 weeks ago WcAdminPages.php 2 weeks ago WpAdminPages.php 2 weeks 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