From 42b408403d879b5dd100903a7d74b4d18a8ec8a8 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 1 Mar 2016 10:52:39 +0000 Subject: [PATCH] [PASSED QA] 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 --- 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 c18794e..1d9f1de 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 e5ef418..3904cf0 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(); -- 1.9.1