From ca36ee3794c7a33976405fe8231df28ecaee3289 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 1 Mar 2016 10:52:39 +0000 Subject: [PATCH] Bug 15939: Action logs - Do not default dates to today When accessing the modification logs from a link that does not explicitly set the to and from dates (e.g., from patron or bib details), no results are displayed unless the object had an action occur during the current day. This is a side-effect of commit 5dceb851 for bug 13813. Test plan: - View the modification logs of a record which has already been modified (/tools/viewlog.pl?do_it=1&modules=CATALOGUING&action=MODIFY&object=XXX) => Without this patch, you won't see any logs (unless you have modified the record today) => With this patch, the behavior is the same as prior bug 13813 (you can check in 3.20.x), you will see all logs Signed-off-by: Galen Charlton Signed-off-by: Katrin Fischer Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com --- C4/Log.pm | 4 ++-- t/db_dependent/Log.t | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/C4/Log.pm b/C4/Log.pm index c18794e8cc..1d9f1de3ab 100644 --- a/C4/Log.pm +++ b/C4/Log.pm @@ -220,8 +220,8 @@ sub GetLogs { my $object = shift; my $info = shift; - my $iso_datefrom = output_pref({ dt => dt_from_string( $datefrom ), dateformat => 'iso', dateonly => 1 }); - my $iso_dateto = output_pref({ dt => dt_from_string( $dateto ), dateformat => 'iso', dateonly => 1 }); + my $iso_datefrom = $datefrom ? output_pref({ dt => dt_from_string( $datefrom ), dateformat => 'iso', dateonly => 1 }) : undef; + my $iso_dateto = $dateto ? output_pref({ dt => dt_from_string( $dateto ), dateformat => 'iso', dateonly => 1 }) : undef; my $dbh = C4::Context->dbh; my $query = " diff --git a/t/db_dependent/Log.t b/t/db_dependent/Log.t index e5ef4181c5..3904cf077b 100644 --- a/t/db_dependent/Log.t +++ b/t/db_dependent/Log.t @@ -4,9 +4,8 @@ # This Koha test module is a stub! # Add more tests here!!! -use strict; -use warnings; -use Test::More tests => 7; +use Modern::Perl; +use Test::More tests => 8; use C4::Context; use Koha::DateUtils; @@ -77,4 +76,20 @@ cronlogaction(); $cronJobCount = $dbh->selectrow_array("SELECT COUNT(*) FROM action_logs WHERE module='CRONJOBS';",{}); is($cronJobCount,1,"Cronjob logged as expected."); +subtest "GetLogs should return all logs if dates are not set" => sub { + plan tests => 2; + my $today = dt_from_string->add(minutes => -1); + my $yesterday = dt_from_string->add( days => -1 ); + $dbh->do(q| + INSERT INTO action_logs (timestamp, user, module, action, object, info) + VALUES + (?, 42, 'CATALOGUING', 'MODIFY', 4242, 'Record 42 has been modified by patron 4242 yesterday'), + (?, 43, 'CATALOGUING', 'MODIFY', 4242, 'Record 43 has been modified by patron 4242 today') + |, undef, output_pref({dt =>$yesterday, dateformat => 'iso'}), output_pref({dt => $today, dateformat => 'iso'})); + my $logs = GetLogs( undef, undef, undef, ['CATALOGUING'], ['MODIFY'], 4242 ); + is( scalar(@$logs), 2, 'GetLogs should return all logs regardless the dates' ); + $logs = GetLogs( output_pref($today), undef, undef, ['CATALOGUING'], ['MODIFY'], 4242 ); + is( scalar(@$logs), 1, 'GetLogs should return the logs for today' ); +}; + $dbh->rollback(); -- 2.39.5