From e8df4f7ef09c5e5a7c0adfe65d5a069041de638f Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 17 Sep 2024 09:37:26 -0400 Subject: [PATCH] Bug 37944: Log object delete as JSON diff, implement for items We should store deleted objects as diffs just as we do for modification and item created. This enhancement will store modification diffs if the action is set to DELETE, and an "original" object is passed in. Test Plan: 1) Enable CataloguingLog 2) Deletee an item 3) Query the database for the newest action log: select * from action_logs order by action_id desc limit 1\G 4) Note the diff column is NULL 5) Apply this patch 6) Restart all the things! 7) Delete another item 8) Query the database again 9) Note the diff has been created! --- C4/Log.pm | 4 ++++ Koha/Item.pm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/C4/Log.pm b/C4/Log.pm index 543096259a4..d88b9598d5a 100644 --- a/C4/Log.pm +++ b/C4/Log.pm @@ -124,6 +124,10 @@ sub logaction { # Log diff against empty hashref for newly created objects $updated = $is_object ? $original->unblessed : $original; $original = {}; + } elsif ( $actionname eq 'DELETE' ) { + # Log diff for deleted objects against empty hashref + $original = $is_object ? $original->unblessed : $original; + $updated = {}; } else { # Log diff against hashref of pre-modified object if passed in $original = $is_object ? $original->unblessed : $original; diff --git a/Koha/Item.pm b/Koha/Item.pm index 55948931150..fd08cf3be53 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -278,7 +278,7 @@ sub delete { $self->_after_item_action_hooks({ action => 'delete' }); - logaction( "CATALOGUING", "DELETE", $self->itemnumber, "item" ) + logaction( "CATALOGUING", "DELETE", $self->itemnumber, "item", undef, $self ) if C4::Context->preference("CataloguingLog"); Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue( -- 2.39.3 (Apple Git-146)