Server IP : 192.158.238.246 / Your IP : 18.188.39.45 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/task/7779/cwd/plugins/give/src/FormMigration/Concerns/Blocks/ |
Upload File : |
<?php namespace Give\FormMigration\Concerns\Blocks; use Give\Framework\Blocks\BlockCollection; use Give\Framework\Blocks\BlockModel; class BlockDifference { protected $blockLookup; protected $skip = []; protected $blockAddedCallback; protected $blockDifferenceCallback; public function __construct(BlockCollection $collection) { $collection->walk(function(BlockModel $block) { $this->blockLookup[$block->clientId] = $block; }); } public function skip(...$blockNames): self { $this->skip = array_merge($this->skip, $blockNames); return $this; } public function onBlockAdded(callable $callback): self { $this->blockAddedCallback = $callback; return $this; } public function onBlockDifference(callable $callback): self { $this->blockDifferenceCallback = $callback; return $this; } public function diff(BlockCollection $collection) { $collection->walk(function(BlockModel $block) { if(in_array($block->name, $this->skip)) return; if(!isset($this->blockLookup[$block->clientId])) { call_user_func($this->blockAddedCallback, $block); return; } $differences = []; foreach($block->getAttributes() as $key => $value) { $previousValue = $this->blockLookup[$block->clientId]->getAttributes()[$key] ?? null; if($previousValue !== $value) { $differences[$key] = [ 'previous' => $previousValue, 'current' => $value, ]; } } if($differences) { call_user_func($this->blockDifferenceCallback, $block, $differences); } }); } }