From a6a77c89cd388aabe25be7d992e7806188b2bd46 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! Signed-off-by: Sukhmandeep Benipal Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer --- C4/Log.pm | 9 ++++++++- Koha/Item.pm | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/C4/Log.pm b/C4/Log.pm index 543096259a..1feb5f4d5c 100644 --- a/C4/Log.pm +++ b/C4/Log.pm @@ -121,10 +121,17 @@ sub logaction { my $is_object = blessed($original) && $original->isa('Koha::Object'); if ( $actionname =~ /^(ADD|CREATE)$/ ) { + # Log diff against empty hashref for newly created objects - $updated = $is_object ? $original->unblessed : $original; + $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 70cc78f50e..7c692a7d92 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -283,7 +283,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.5