From 8b968553954d5819ee78f80c2066f1d5b08d8d21 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 27 Feb 2020 07:29:17 +0000 Subject: [PATCH] Added generic onFlush function to EntityListener. #330 --- src/EventListener/EntityListener.php | 33 ++++++++- .../EntityListener/UserEntityListener.php | 70 ++++++++++++++----- 2 files changed, 83 insertions(+), 20 deletions(-) diff --git a/src/EventListener/EntityListener.php b/src/EventListener/EntityListener.php index 21711669..ebd51b53 100644 --- a/src/EventListener/EntityListener.php +++ b/src/EventListener/EntityListener.php @@ -10,12 +10,41 @@ abstract class EntityListener public function postPersist($object, LifecycleEventArgs $args) { - error_log('Entity created'); + error_log('Created object'); } public function onFlush(OnFlushEventArgs $args) { - error_log('on flush'); + $em = $args->getEntityManager(); + $unit_of_work = $em->getUnitOfWork(); + $deleted_entities = $unit_of_work->getScheduledEntityDeletions(); + $updated_entities = $unit_of_work->getScheduledEntityUpdates(); + $updated_collections = $unit_of_work->getScheduledCollectionUpdates(); + $deleted_collections = $unit_of_work->getScheduledCollectionDeletions(); + + foreach ($updated_entities as $updated_entity) + { + $changeset = $unit_of_work->getEntityChangeSet($updated_entity); + + $entity_fields = array_keys($changeset); + foreach ($entity_fields as $field) + { + $values = $changeset[$field]; + + $old_value = $values[0]; + $new_value = $values[1]; + + error_log('Changed ' . $field . ' from ' . $old_value . ' to ' . $new_value); + } + } + + foreach ($deleted_entities as $deleted_entity) + { + $deleted_id = $deleted_entity->getID(); + + error_log('Deleted object with id ' . $deleted_id); + } + } /* diff --git a/src/EventListener/EntityListener/UserEntityListener.php b/src/EventListener/EntityListener/UserEntityListener.php index 2210c3d8..91495e41 100644 --- a/src/EventListener/EntityListener/UserEntityListener.php +++ b/src/EventListener/EntityListener/UserEntityListener.php @@ -8,6 +8,8 @@ use Doctrine\ORM\Event\OnFlushEventArgs; use App\EventListener\EntityListener; use App\Entity\User; +use App\Entity\Role; +use App\Entity\Hub; class UserEntityListener extends EntityListener { @@ -16,8 +18,9 @@ class UserEntityListener extends EntityListener error_log('Created user with id ' . $user->getID() . ' and username ' . $user->getUsername()); } - public function onFlush(OnFlushEventArgs $args) - { + //public function onFlush(OnFlushEventArgs $args) + //{ + /* $em = $args->getEntityManager(); $unit_of_work = $em->getUnitOfWork(); $deleted_entities = $unit_of_work->getScheduledEntityDeletions(); @@ -25,20 +28,15 @@ class UserEntityListener extends EntityListener $updated_collections = $unit_of_work->getScheduledCollectionUpdates(); $deleted_collections = $unit_of_work->getScheduledCollectionDeletions(); - error_log('count of updated_collections ' . count($updated_collections)); - error_log('count of deleted_collections ' . count($deleted_collections)); - foreach ($updated_entities as $updated_entity) { - if ($updated_entity instanceof User) - { + //if ($updated_entity instanceof User) + //{ $changeset = $unit_of_work->getEntityChangeSet($updated_entity); $entity_fields = array_keys($changeset); foreach ($entity_fields as $field) { - error_log('field ' . $field); - $values = $changeset[$field]; $old_value = $values[0]; @@ -46,24 +44,60 @@ class UserEntityListener extends EntityListener error_log('Changed ' . $field . ' from ' . $old_value . ' to ' . $new_value); } - } - else - { - error_log('hhmmm unsa kaha ni'); - } + //} } foreach ($deleted_entities as $deleted_entity) { - if ($deleted_entity instanceof User) - { + //if ($deleted_entity instanceof User) + //{ $deleted_id = $deleted_entity->getID(); $deleted_username = $deleted_entity->getUsername(); error_log('Deleted user with id ' . $deleted_id . ' and username ' . $deleted_username); - } + //} } - } + + // TODO: find a way to get the list of "old" items, compare with list of updated items + // so we can find out what was added/removed + foreach ($updated_collections as $updated_collection) + { + error_log('in updated_collection snippet'); + + foreach ($updated_collection as $item) + { + if ($item instanceof Role) + { + error_log('updated_collection item ' . $item->getName()); + } + if ($item instanceof Hub) + { + error_log('updated_collection item ' . $item->getName()); + } + } + + } + + foreach ($deleted_collections as $deleted_collection) + { + error_log('in deleted_collection snippet'); + + foreach ($deleted_collection as $item) + { + if ($item instanceof Role) + { + error_log('deleted_collection item ' . $item->getName()); + } + if ($item instanceof Hub) + { + error_log('deleted_collection item ' . $item->getName()); + } + } + + + } */ + + //} /* public function postUpdate($user, LifecycleEventArgs $args)