PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.3
GiveWP – Donation Plugin and Fundraising Platform v3.19.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / FormMigration / Concerns / Blocks / BlockDifference.php
give / src / FormMigration / Concerns / Blocks Last commit date
BlockDifference.php 2 years ago BlockFactory.php 2 years ago
BlockDifference.php
70 lines
1 <?php
2
3 namespace Give\FormMigration\Concerns\Blocks;
4
5 use Give\Framework\Blocks\BlockCollection;
6 use Give\Framework\Blocks\BlockModel;
7
8 class BlockDifference
9 {
10 protected $blockLookup;
11
12 protected $skip = [];
13
14 protected $blockAddedCallback;
15
16 protected $blockDifferenceCallback;
17
18 public function __construct(BlockCollection $collection) {
19 $collection->walk(function(BlockModel $block) {
20 $this->blockLookup[$block->clientId] = $block;
21 });
22 }
23
24 public function skip(...$blockNames): self
25 {
26 $this->skip = array_merge($this->skip, $blockNames);
27 return $this;
28 }
29
30 public function onBlockAdded(callable $callback): self
31 {
32 $this->blockAddedCallback = $callback;
33 return $this;
34 }
35
36 public function onBlockDifference(callable $callback): self
37 {
38 $this->blockDifferenceCallback = $callback;
39 return $this;
40 }
41
42 public function diff(BlockCollection $collection)
43 {
44 $collection->walk(function(BlockModel $block) {
45 if(in_array($block->name, $this->skip)) return;
46
47
48 if(!isset($this->blockLookup[$block->clientId])) {
49 call_user_func($this->blockAddedCallback, $block);
50 return;
51 }
52
53 $differences = [];
54 foreach($block->getAttributes() as $key => $value) {
55 $previousValue = $this->blockLookup[$block->clientId]->getAttributes()[$key] ?? null;
56 if($previousValue !== $value) {
57 $differences[$key] = [
58 'previous' => $previousValue,
59 'current' => $value,
60 ];
61 }
62 }
63
64 if($differences) {
65 call_user_func($this->blockDifferenceCallback, $block, $differences);
66 }
67 });
68 }
69 }
70