From 157e5de178cfda40b8435eb8efcee67e69efe08d Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Fri, 16 Jun 2017 08:27:29 -0400 Subject: [PATCH] Bug 18816 - Make CataloguingLog work in production by preventing circulation from spamming the log The system preference CataloguingLog is not recommended for use in production. This is do to the fact that every checkin and checkout generates one or more log entires. This seems to be not only bad behavior, but unnecessary and outside the needs of CataloguingLog as we have CirculationLog. Test Plan: 1) Enable CataloguingLog 2) Note the checkins and checkouts cause log entries 3) Apply this patch 4) Note that checkins and checkouts no longer cause log entries, but editing the item will continue to cause log entries. --- C4/Circulation.pm | 18 ++++++++++-------- C4/Items.pm | 9 +++++++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index ca41dd6..3fe78e0 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1421,7 +1421,8 @@ sub AddIssue { datelastborrowed => DateTime->now( time_zone => C4::Context->tz() )->ymd(), }, $item->{'biblionumber'}, - $item->{'itemnumber'} + $item->{'itemnumber'}, + 0 ); ModDateLastSeen( $item->{'itemnumber'} ); @@ -1863,7 +1864,7 @@ sub AddReturn { $item->{location} = $item->{permanent_location}; } - ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} ); + ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'}, 0 ); } # full item data, but no borrowernumber or checkout info (no issue) @@ -1887,7 +1888,7 @@ sub AddReturn { foreach my $key ( keys %$rules ) { if ( $item->{notforloan} eq $key ) { $messages->{'NotForLoanStatusUpdated'} = { from => $item->{notforloan}, to => $rules->{$key} }; - ModItem( { notforloan => $rules->{$key} }, undef, $itemnumber ); + ModItem( { notforloan => $rules->{$key} }, undef, $itemnumber, 0 ); last; } } @@ -1959,7 +1960,7 @@ sub AddReturn { } - ModItem({ onloan => undef }, $issue->{'biblionumber'}, $item->{'itemnumber'}); + ModItem({ onloan => undef }, $issue->{'biblionumber'}, $item->{'itemnumber'}, 0 ); } # the holdingbranch is updated if the document is returned to another location. @@ -2200,7 +2201,7 @@ sub MarkIssueReturned { $dbh->do(q|DELETE FROM issues WHERE issue_id = ?|, undef, $issue_id); - ModItem( { 'onloan' => undef }, undef, $itemnumber ); + ModItem( { 'onloan' => undef }, undef, $itemnumber, 0 ); if ( C4::Context->preference('StoreLastBorrower') ) { my $item = Koha::Items->find( $itemnumber ); @@ -2437,7 +2438,7 @@ sub _FixAccountForLostAndReturned { } ); - ModItem( { paidfor => '' }, undef, $itemnumber ); + ModItem( { paidfor => '' }, undef, $itemnumber, 0 ); return $credit_id; } @@ -2894,7 +2895,7 @@ sub AddRenewal { # Update the renewal count on the item, and tell zebra to reindex $renews = $biblio->{'renewals'} + 1; - ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $biblio->{'biblionumber'}, $itemnumber); + ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $biblio->{'biblionumber'}, $itemnumber, 0); # Charge a new rental fee, if applicable? my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber ); @@ -3760,7 +3761,8 @@ sub ProcessOfflineReturn { ModItem( { renewals => 0, onloan => undef }, $issue->{'biblionumber'}, - $itemnumber + $itemnumber, + 0 ); return "Success."; } else { diff --git a/C4/Items.pm b/C4/Items.pm index 26c14a1..d378a2c 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -518,7 +518,7 @@ sub ModItemFromMarc { =head2 ModItem - ModItem({ column => $newvalue }, $biblionumber, $itemnumber); + ModItem({ column => $newvalue }, $biblionumber, $itemnumber, $log_action ); Change one or more columns in an item record and update the MARC representation of the item. @@ -539,12 +539,16 @@ the derived value of a column such as C, this routine will perform the necessary calculation and set the value. +If log_action is set to false, the action will not be logged. +If log_action is true or undefined, the action will be logged. + =cut sub ModItem { my $item = shift; my $biblionumber = shift; my $itemnumber = shift; + my $log_action = shift // 1; # if $biblionumber is undefined, get it from the current item unless (defined $biblionumber) { @@ -603,7 +607,8 @@ sub ModItem { # item status is possible ModZebra( $biblionumber, "specialUpdate", "biblioserver" ); - logaction("CATALOGUING", "MODIFY", $itemnumber, "item ".Dumper($item)) if C4::Context->preference("CataloguingLog"); + logaction( "CATALOGUING", "MODIFY", $itemnumber, "item " . Dumper($item) ) + if $log_action && C4::Context->preference("CataloguingLog"); } =head2 ModItemTransfer -- 2.1.4