X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=tools%2Fviewlog.pl;h=381b0f816b17a4597b4e14687ece89f53fbcdd33;hb=refs%2Fheads%2Fkoha_ffzg;hp=3c371624b9b8bd3b93f9d97747ccb1f257905ddf;hpb=c840c9383558db8ebabfb9b84efccf72904ac061;p=koha.git diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 3c371624b9..381b0f816b 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -26,11 +26,16 @@ 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::Patron::Images; + +use Koha::ActionLogs; +use Koha::Database; +use Koha::DateUtils; +use Koha::Items; +use Koha::Patrons; use vars qw($debug $cgi_debug); @@ -70,91 +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 $patron_image = Koha::Patron::Images->find($data->{borrowernumber}); - $template->param( picture => 1 ) if $patron_image; - + 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 ); } - $template->param(%$data); - $template->param( - menu => 1, - borrowernumber => $borrowernumber, - categoryname => $data->{'description'}, - 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, $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{}; - $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 @@ -177,7 +206,6 @@ if ($do_it) { foreach my $module (@modules) { $template->param( $module => 1 ); } - output_html_with_http_headers $input, $cookie, $template->output; } else {