Source of file WriteCallbackExtension.php
Size: 1,451 Bytes - Last Modified: 2021-12-23T10:02:11+00:00
/var/www/docs.ssmods.com/process/src/code/Extensions/WriteCallbackExtension.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | <?php /** * Class WriteCallbackExtension */ class WriteCallbackExtension extends DataExtension { /** * @var array */ private $beforeWriteCallbacks = array(); /** * @var array */ private $afterWriteCallbacks = array(); /** * */ public function onBeforeWrite() { foreach ($this->beforeWriteCallbacks as $callback) { $callback($this->owner); } $this->beforeWriteCallbacks = array(); } /** * */ public function onAfterWrite() { foreach ($this->afterWriteCallbacks as $callback) { $callback($this->owner); } $this->afterWriteCallbacks = array(); } /** * @param callable $callback */ public function onBeforeWriteCallback(callable $callback) { $this->beforeWriteCallbacks[] = $callback; } /** * @param callable $callback */ public function onAfterWriteCallback(callable $callback) { $this->afterWriteCallbacks[] = $callback; } /** * @param callable $callback */ public function onAfterExistsCallback(callable $callback) { // if object exists already then call immediately if ($this->owner->getField('ID')) { $callback($this->owner); } else { // otherwise wait until it's written $this->onAfterWriteCallback($callback); } } } |