diff --git a/src/Model/Behavior/NotifyAdminsBehavior.php b/src/Model/Behavior/NotifyAdminsBehavior.php index 6016684..8497d3b 100644 --- a/src/Model/Behavior/NotifyAdminsBehavior.php +++ b/src/Model/Behavior/NotifyAdminsBehavior.php @@ -19,10 +19,15 @@ class NotifyAdminsBehavior extends Behavior { /** @var array */ protected $_defaultConfig = [ + 'implementedEvents' => [ + 'Model.afterSave' => 'afterSave', + 'Model.afterDelete' => 'afterDelete', + 'Model.beforeDelete' => 'beforeDelete', + ], 'implementedMethods' => [ 'notifySiteAdmins' => 'notifySiteAdmins', 'notifySiteAdminsForEntity' => 'notifySiteAdminsForEntity', - ] + ], ]; /** @var AuditLog|null */ @@ -50,6 +55,13 @@ class NotifyAdminsBehavior extends Behavior $this->notifySiteAdminsForEntityChange($entity); } + public function beforeDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options): void + { + if ($entity->table()->hasBehavior('MetaFields') && !isset($entity->meta_fields)) { + $entity = $entity->table()->loadInto($entity, ['MetaFields']); + } + } + public function afterDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options): void { if (!$this->isNotificationAllowed($event, $entity, $options)) { @@ -114,6 +126,7 @@ class NotifyAdminsBehavior extends Behavior unset($changedFields['meta_fields']); } } + $originalFields = $entity->isNew() ? [] : $entity->isNew(); $data = [ 'original' => $this->_serializeFields($originalFields), 'changed' => $this->_serializeFields($changedFields),