X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=tools%2Fviewlog.pl;h=381b0f816b17a4597b4e14687ece89f53fbcdd33;hb=refs%2Fheads%2Fkoha_ffzg;hp=4e772d0903c6c5fdabe91c3eed5c5d925ec95d1a;hpb=7ec3d6dfe98e19f0baa525a5b2b3839b0a35379c;p=koha.git diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 4e772d0903..381b0f816b 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -5,18 +5,18 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use Modern::Perl; @@ -25,14 +25,18 @@ use CGI qw ( -utf8 ); use Text::CSV::Encoded; use C4::Context; use C4::Koha; -use C4::Dates; use C4::Output; -use C4::Log; use C4::Items; -use C4::Branch; +use C4::Serials; use C4::Debug; use C4::Search; # enabled_staff_search_views +use Koha::ActionLogs; +use Koha::Database; +use Koha::DateUtils; +use Koha::Items; +use Koha::Patrons; + use vars qw($debug $cgi_debug); =head1 viewlog.pl @@ -45,9 +49,10 @@ my $input = new CGI; $debug or $debug = $cgi_debug; my $do_it = $input->param('do_it'); -my @modules = $input->param("modules"); -my $user = $input->param("user"); -my @actions = $input->param("actions"); +my @modules = $input->multi_param("modules"); +my $user = $input->param("user") // ''; +my @actions = $input->multi_param("actions"); +my @interfaces = $input->multi_param("interfaces"); my $object = $input->param("object"); my $info = $input->param("info"); my $datefrom = $input->param("from"); @@ -70,112 +75,115 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( if ( $src eq 'circ' ) { # if we were called from circulation, use the circulation menu and get data to populate it -fbcit - use C4::Members; use C4::Members::Attributes qw(GetBorrowerAttributes); my $borrowernumber = $object; - my $data = GetMember( 'borrowernumber' => $borrowernumber ); - my ( $picture, $dberror ) = GetPatronImage( $data->{'borrowernumber'} ); - $template->param( picture => 1 ) if $picture; - + my $patron = Koha::Patrons->find( $borrowernumber ); + my $circ_info = 1; + unless ( $patron ) { + $circ_info = 0; + } if ( C4::Context->preference('ExtendedPatronAttributes') ) { - my $attributes = GetBorrowerAttributes( $data->{'borrowernumber'} ); + my $attributes = GetBorrowerAttributes( $borrowernumber ); $template->param( ExtendedPatronAttributes => 1, extendedattributes => $attributes ); } - # Computes full borrower address - my $roadtype = C4::Koha::GetAuthorisedValueByCode( 'ROADTYPE', $data->{streettype} ); - my $address = $data->{'streetnumber'} . " $roadtype " . $data->{'address'}; - $template->param( - menu => 1, - title => $data->{'title'}, - initials => $data->{'initials'}, - surname => $data->{'surname'}, - othernames => $data->{'othernames'}, - borrowernumber => $borrowernumber, - firstname => $data->{'firstname'}, - cardnumber => $data->{'cardnumber'}, - categorycode => $data->{'categorycode'}, - category_type => $data->{'category_type'}, - categoryname => $data->{'description'}, - address => $address, - address2 => $data->{'address2'}, - city => $data->{'city'}, - state => $data->{'state'}, - zipcode => $data->{'zipcode'}, - country => $data->{'country'}, - phone => $data->{'phone'}, - phonepro => $data->{'phonepro'}, - mobile => $data->{'mobile'}, - email => $data->{'email'}, - emailpro => $data->{'emailpro'}, - branchcode => $data->{'branchcode'}, - branchname => GetBranchName( $data->{'branchcode'} ), - RoutingSerials => C4::Context->preference('RoutingSerials'), + patron => $patron, + circulation => $circ_info, ); } $template->param( debug => $debug, C4::Search::enabled_staff_search_views, + subscriptionsnumber => CountSubscriptionFromBiblionumber($input->param('object')), + object => $object, ); 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 ); - if ( $actions[0] ne '' ) { $actions = \@actions; } # match All means no limit - if ( $modules[0] ne '' ) { $modules = \@modules; } # match All means no limit - $results = GetLogs( $datefrom, $dateto, $user, $modules, $actions, $object, $info ); - @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{}; - $result->{'userfirstname'} = q{}; - $result->{'usersurname'} = q{}; - $result->{'borrowerfirstname'} = q{}; - $result->{'borrowersurname'} = 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 $item = GetItem($itemnumber); + my $itemnumber = $log->object; + $itemnumber = $log->info if ( $log->module eq "CIRCULATION" ); + my $item = Koha::Items->find($itemnumber); if ($item) { - $result->{'biblionumber'} = $item->{'biblionumber'}; - $result->{'biblioitemnumber'} = $item->{'biblionumber'}; - $result->{'barcode'} = $item->{'barcode'}; + $result->{'biblionumber'} = $item->biblionumber; + $result->{'biblioitemnumber'} = $item->biblionumber; + $result->{'barcode'} = $item->barcode; } } #always add firstname and surname for librarian/user - if ( $result->{'user'} ) { - my $userdetails = C4::Members::GetMemberDetails( $result->{'user'} ); - if ($userdetails) { - $result->{'userfirstname'} = $userdetails->{'firstname'}; - $result->{'usersurname'} = $userdetails->{'surname'}; + 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 $borrowerdetails = C4::Members::GetMemberDetails( $result->{'object'} ); - if ($borrowerdetails) { - $result->{'borrowerfirstname'} = $borrowerdetails->{'firstname'}; - $result->{'borrowersurname'} = $borrowerdetails->{'surname'}; + 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 @@ -187,18 +195,17 @@ if ($do_it) { datefrom => $datefrom, dateto => $dateto, user => $user, - object => $object, info => $info, src => $src, modules => \@modules, actions => \@actions, + interfaces => \@interfaces ); # Used modules foreach my $module (@modules) { $template->param( $module => 1 ); } - output_html_with_http_headers $input, $cookie, $template->output; } else {