From 4c68b78a89de86d4cd9f3a5c7f089a6f41d482ae Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Thu, 14 Feb 2019 10:45:26 +0000
Subject: [PATCH] Bug 3820: Add changes to MEMBERS MODIFY logaction
This patch attemps to add a more refined and detailed info structure
detailing what fields were changed and what they were changed from and
to.
Test Plan: Enable BorrowersLog in the system preferences and undertake a
series of borrower detail changes. Go to view the actionlogs and note
that MEMBER MODIFY logs now detail what fields you have changed using
the following form:
{ FIELD1: { before: BEFORE_VALUE, after: AFTER_VALUE } }
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Charles Farmer <charles.farmer@inLibro.com>
Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
---
Koha/Patron.pm | 40 +++++++++++++++-------------------------
1 file changed, 15 insertions(+), 25 deletions(-)
diff --git a/Koha/Patron.pm b/Koha/Patron.pm
index dff9320..ad99c2c 100644
--- a/Koha/Patron.pm
+++ b/Koha/Patron.pm
@@ -255,33 +255,23 @@ sub store {
$self->add_enrolment_fee_if_needed;
}
- my $borrowers_log = C4::Context->preference("BorrowersLog");
- my $previous_cardnumber = $self_from_storage->cardnumber;
- if ($borrowers_log
- && ( !defined $previous_cardnumber
- || $previous_cardnumber ne $self->cardnumber )
- )
- {
- logaction(
- "MEMBERS",
- "MODIFY",
- $self->borrowernumber,
- to_json(
- {
- cardnumber_replaced => {
- previous_cardnumber => $previous_cardnumber,
- new_cardnumber => $self->cardnumber,
- }
- },
- { utf8 => 1, pretty => 1 }
- )
- );
- }
+ # Actionlogs
+ if ( C4::Context->preference("BorrowersLog") ) {
+ my $info;
+ for my $key ( keys %{ $self_from_storage->unblessed } ) {
+ if ( $self_from_storage->$key ne $self->$key ) {
+ $info->{$key} = {
+ before => $self_from_storage->$key,
+ after => $self->$key
+ };
+ }
+ }
- logaction( "MEMBERS", "MODIFY", $self->borrowernumber,
- "UPDATE (executed w/ arg: " . $self->borrowernumber . ")" )
- if $borrowers_log;
+ logaction( "MEMBERS", "MODIFY", $self->borrowernumber,
+ to_json( $info, { utf8 => 1, pretty => 1, canonical => 1 } ) );
+ }
+ # Final store
$self = $self->SUPER::store;
}
}
--
2.1.4