Added generic onFlush function to EntityListener. #330

This commit is contained in:
Korina Cordero 2020-02-27 07:29:17 +00:00
parent 2998154a55
commit 8b96855395
2 changed files with 83 additions and 20 deletions

View file

@ -10,12 +10,41 @@ abstract class EntityListener
public function postPersist($object, LifecycleEventArgs $args) public function postPersist($object, LifecycleEventArgs $args)
{ {
error_log('Entity created'); error_log('Created object');
} }
public function onFlush(OnFlushEventArgs $args) 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);
}
} }
/* /*

View file

@ -8,6 +8,8 @@ use Doctrine\ORM\Event\OnFlushEventArgs;
use App\EventListener\EntityListener; use App\EventListener\EntityListener;
use App\Entity\User; use App\Entity\User;
use App\Entity\Role;
use App\Entity\Hub;
class UserEntityListener extends EntityListener class UserEntityListener extends EntityListener
{ {
@ -16,8 +18,9 @@ class UserEntityListener extends EntityListener
error_log('Created user with id ' . $user->getID() . ' and username ' . $user->getUsername()); 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(); $em = $args->getEntityManager();
$unit_of_work = $em->getUnitOfWork(); $unit_of_work = $em->getUnitOfWork();
$deleted_entities = $unit_of_work->getScheduledEntityDeletions(); $deleted_entities = $unit_of_work->getScheduledEntityDeletions();
@ -25,20 +28,15 @@ class UserEntityListener extends EntityListener
$updated_collections = $unit_of_work->getScheduledCollectionUpdates(); $updated_collections = $unit_of_work->getScheduledCollectionUpdates();
$deleted_collections = $unit_of_work->getScheduledCollectionDeletions(); $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) foreach ($updated_entities as $updated_entity)
{ {
if ($updated_entity instanceof User) //if ($updated_entity instanceof User)
{ //{
$changeset = $unit_of_work->getEntityChangeSet($updated_entity); $changeset = $unit_of_work->getEntityChangeSet($updated_entity);
$entity_fields = array_keys($changeset); $entity_fields = array_keys($changeset);
foreach ($entity_fields as $field) foreach ($entity_fields as $field)
{ {
error_log('field ' . $field);
$values = $changeset[$field]; $values = $changeset[$field];
$old_value = $values[0]; $old_value = $values[0];
@ -46,24 +44,60 @@ class UserEntityListener extends EntityListener
error_log('Changed ' . $field . ' from ' . $old_value . ' to ' . $new_value); error_log('Changed ' . $field . ' from ' . $old_value . ' to ' . $new_value);
} }
} //}
else
{
error_log('hhmmm unsa kaha ni');
}
} }
foreach ($deleted_entities as $deleted_entity) foreach ($deleted_entities as $deleted_entity)
{ {
if ($deleted_entity instanceof User) //if ($deleted_entity instanceof User)
{ //{
$deleted_id = $deleted_entity->getID(); $deleted_id = $deleted_entity->getID();
$deleted_username = $deleted_entity->getUsername(); $deleted_username = $deleted_entity->getUsername();
error_log('Deleted user with id ' . $deleted_id . ' and username ' . $deleted_username); 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) public function postUpdate($user, LifecycleEventArgs $args)