From 286746b48aa8f54bc416463a6a581b4e353b38bc Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Mon, 18 Feb 2019 14:08:19 +0000 Subject: [PATCH] Bug 22363: Use Koha::ActionLogs->search instead of GetLogs in log viewer Test plan: 1) Use log viewer, try different parameters 2) Try screen and file export 3) prove t/db_dependent/Koha/ActionLogs.t --- .../intranet-tmpl/prog/en/modules/tools/viewlog.tt | 1 + tools/viewlog.pl | 72 ++++++++++++++++------ 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt index db17762656..2f867682bc 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt @@ -3,6 +3,7 @@ [% USE Koha %] [% USE AuthorisedValues %] [% USE Branches %] +[% USE KohaDates %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 2f8bc30e3e..7f4e42cec4 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -26,11 +26,13 @@ use Text::CSV::Encoded; use C4::Context; use C4::Koha; use C4::Output; -use C4::Log; use C4::Items; use C4::Serials; use C4::Debug; use C4::Search; # enabled_staff_search_views +use Koha::ActionLogs; +use Koha::Database; +use Koha::DateUtils; use Koha::Patrons; use vars qw($debug $cgi_debug); @@ -100,26 +102,59 @@ $template->param( ); if ($do_it) { + my $dtf = Koha::Database->new->schema->storage->datetime_parser; + my %search_params; + + if ($datefrom and $dateto ) { + my $dateto_endday = dt_from_string($dateto); + $dateto_endday->set( # We set last second of day to see all log from that day + hour => 23, + minute => 59, + second => 59 + ); + $search_params{'timestamp'} = { + -between => [ + $dtf->format_datetime( dt_from_string($datefrom) ), + $dtf->format_datetime( $dateto_endday ), + ] + }; + } elsif ($datefrom) { + $search_params{'timestamp'} = { + '>=' => $dtf->format_datetime( dt_from_string($datefrom) ) + }; + } elsif ($dateto) { + my $dateto_endday = dt_from_string($dateto); + $dateto_endday->set( # We set last second of day to see all log from that day + hour => 23, + minute => 59, + second => 59 + ); + $search_params{'timestamp'} = { + '<=' => $dtf->format_datetime( $dateto_endday ) + }; + } + $search_params{user} = $user if $user; + $search_params{module} = { -in => [ @modules ] } if ( defined $modules[0] and $modules[0] ne '' ) ; + $search_params{action} = { -in => [ @actions ] } if ( defined $actions[0] && $actions[0] ne '' ); + $search_params{object} = $object if $object; + $search_params{info} = $info if $info; + $search_params{interface} = { -in => [ @interfaces ] } if ( defined $interfaces[0] && $interfaces[0] ne '' ); - my @data; - my ( $results, $modules, $actions, $interfaces ); - if ( defined $actions[0] && $actions[0] ne '' ) { $actions = \@actions; } # match All means no limit - if ( $modules[0] ne '' ) { $modules = \@modules; } # match All means no limit - if ( defined $interfaces[0] && $interfaces[0] ne '' ) { $interfaces = \@interfaces; } # match All means no limit - $results = GetLogs( $datefrom, $dateto, $user, $modules, $actions, $object, $info, $interfaces ); - @data = @$results; - foreach my $result (@data) { + my @logs = Koha::ActionLogs->search(\%search_params); + my @data; + foreach my $log (@logs) { + my $result = $log->unblessed; # Init additional columns for CSV export $result->{'biblionumber'} = q{}; $result->{'biblioitemnumber'} = q{}; $result->{'barcode'} = q{}; - if ( substr( $result->{'info'}, 0, 4 ) eq 'item' || $result->{module} eq "CIRCULATION" ) { + if ( substr( $log->info, 0, 4 ) eq 'item' || $log->module eq "CIRCULATION" ) { # get item information so we can create a working link - my $itemnumber = $result->{'object'}; - $itemnumber = $result->{'info'} if ( $result->{module} eq "CIRCULATION" ); + my $itemnumber = $log->object; + $itemnumber = $log->info if ( $log->module eq "CIRCULATION" ); my $item = GetItem($itemnumber); if ($item) { $result->{'biblionumber'} = $item->{'biblionumber'}; @@ -129,24 +164,24 @@ if ($do_it) { } #always add firstname and surname for librarian/user - if ( $result->{'user'} ) { - my $patron = Koha::Patrons->find( $result->{'user'} ); + if ( $log->user ) { + my $patron = Koha::Patrons->find( $log->user ); if ($patron) { $result->{librarian} = $patron; } } #add firstname and surname for borrower, when using the CIRCULATION, MEMBERS, FINES - if ( $result->{module} eq "CIRCULATION" || $result->{module} eq "MEMBERS" || $result->{module} eq "FINES" ) { - if ( $result->{'object'} ) { - my $patron = Koha::Patrons->find( $result->{'object'} ); + if ( $log->module eq "CIRCULATION" || $log->module eq "MEMBERS" || $log->module eq "FINES" ) { + if ( $log->object ) { + my $patron = Koha::Patrons->find( $log->object ); if ($patron) { $result->{patron} = $patron; } } } + push @data, $result; } - if ( $output eq "screen" ) { # Printing results to screen @@ -169,7 +204,6 @@ if ($do_it) { foreach my $module (@modules) { $template->param( $module => 1 ); } - output_html_with_http_headers $input, $cookie, $template->output; } else { -- 2.11.0