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)
{
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);
}
}
/*

View file

@ -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)