From d7806a26647462e83bd7c96bb728e39dff320f56 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 9 Mar 2020 07:21:45 +0000 Subject: [PATCH] Add AuditableEntity interface. #330 --- src/Entity/AuditableEntity.php | 8 +++ src/Entity/Role.php | 2 +- src/Entity/User.php | 2 +- src/EventListener/EntityListener.php | 75 ++++++++++++++++------------ 4 files changed, 53 insertions(+), 34 deletions(-) create mode 100644 src/Entity/AuditableEntity.php diff --git a/src/Entity/AuditableEntity.php b/src/Entity/AuditableEntity.php new file mode 100644 index 00000000..f06e4cd8 --- /dev/null +++ b/src/Entity/AuditableEntity.php @@ -0,0 +1,8 @@ +entities[$object_class])) { - // get user id for logging - $user = $this->token_storage->getToken()->getUser(); - $user_id = $user->getID(); + if ($object instanceof AuditableEntity) + { + // get user id for logging + $user = $this->token_storage->getToken()->getUser(); + $user_id = $user->getID(); - // get entity name - //$obj_class = preg_replace('/.*\\\\/', '', $object_class); + // get entity name + //$obj_class = preg_replace('/.*\\\\/', '', $object_class); - // get fields of object - $fields = $object->fieldDump(); + // get fields of object + $fields = $object->fieldDump(); - $this->writeToLogDB($object_class, $object->getID(), 'create', $fields, $user_id); + $this->writeToLogDB($object_class, $object->getID(), 'create', $fields, $user_id); + } } } @@ -78,28 +83,31 @@ class EntityListener $entity_class = get_class($updated_entity); if (isset($this->entities[$entity_class])) { - // get entity name - //$obj_class = preg_replace('/.*\\\\/', '', $entity_class); - - $changeset = $unit_of_work->getEntityChangeSet($updated_entity); - - $entity_fields = array_keys($changeset); - foreach ($entity_fields as $field) + if ($updated_entity instanceof AuditableEntity) { - $values = $changeset[$field]; + // get entity name + //$obj_class = preg_replace('/.*\\\\/', '', $entity_class); - $old_value = $values[0]; - $new_value = $values[1]; + $changeset = $unit_of_work->getEntityChangeSet($updated_entity); - $field_changes[$field] = [ - 'old_value' => $values[0], - 'new_value' => $values[1], - ]; + $entity_fields = array_keys($changeset); + foreach ($entity_fields as $field) + { + $values = $changeset[$field]; + + $old_value = $values[0]; + $new_value = $values[1]; + + $field_changes[$field] = [ + 'old_value' => $values[0], + 'new_value' => $values[1], + ]; + } + + $fields = json_encode($field_changes); + + $this->writeToLogDB($entity_class, $updated_entity->getID(), 'update', $fields, $user_id); } - - $fields = json_encode($field_changes); - - $this->writeToLogDB($entity_class, $updated_entity->getID(), 'update', $fields, $user_id); } } @@ -110,15 +118,18 @@ class EntityListener $entity_class = get_class($deleted_entity); if (isset($this->entities[$entity_class])) { - // get entity name - //$obj_class = preg_replace('/.*\\\\/', '', get_class($deleted_entity)); + if ($deleted_entity instanceof AuditableEntity) + { + // get entity name + //$obj_class = preg_replace('/.*\\\\/', '', get_class($deleted_entity)); - $deleted_id = $deleted_entity->getID(); + $deleted_id = $deleted_entity->getID(); - // get fields of deleted entity - $fields = $deleted_entity->fieldDump(); + // get fields of deleted entity + $fields = $deleted_entity->fieldDump(); - $this->writeToLogDB($entity_class, $deleted_id, 'delete', $fields, $user_id); + $this->writeToLogDB($entity_class, $deleted_id, 'delete', $fields, $user_id); + } } }