From dde7bbe75fb1f8658666fbb23c8e2f6089a07186 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 27 Oct 2022 11:07:21 +0200 Subject: [PATCH] chg: [behavior:notifyAdmin] Small refactor to better handle deletions --- src/Model/Behavior/NotifyAdminsBehavior.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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),