X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2Fviewlog.pl;h=1fbd6be1007a26c4d94a2e54fc97f602516b897c;hb=ef5d4f3c62957100dae0948a44bd27a2159892b4;hp=0bf24833ce392ee155a8aa8dc5b53eee55b1dd66;hpb=f05e50cee21450f67368cd435a3c9d0bec600c10;p=koha_fer diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 0bf24833ce..1fbd6be100 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl - -# Copyright 2000-2002 Katipo Communications +# Copyright 2010 BibLibre +# Copyright 2011 MJ Ray and software.coop # # This file is part of Koha. # @@ -14,11 +14,12 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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. use strict; +#use warnings; FIXME - Bug 2505 use C4::Auth; use CGI; use C4::Context; @@ -26,32 +27,33 @@ use C4::Koha; use C4::Dates; use C4::Output; use C4::Log; +use C4::Items; +use C4::Branch; +use C4::Debug; +# use Data::Dumper; +use C4::Search; # enabled_staff_search_views -use vars qw($debug); - -BEGIN { - $debug = $ENV{DEBUG} || 0; -} +use vars qw($debug $cgi_debug); =head1 viewlog.pl -plugin that shows a stats on borrowers +plugin that shows stats =cut my $input = new CGI; -$debug or $debug = $input->param('debug') || 0; + +$debug or $debug = $cgi_debug; my $do_it = $input->param('do_it'); -my $module = $input->param("module"); +my @modules = $input->param("modules"); my $user = $input->param("user"); -my $action = $input->param("action"); +my @action = $input->param("action"); my $object = $input->param("object"); my $info = $input->param("info"); my $datefrom = $input->param("from"); my $dateto = $input->param("to"); my $basename = $input->param("basename"); -my $mime = $input->param("MIME"); -my $del = $input->param("sep"); +#my $del = $input->param("sep"); my $output = $input->param("output") || "screen"; my $src = $input->param("src"); # this param allows us to be told where we were called from -fbcit @@ -61,104 +63,137 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { tools => 1 }, + flagsrequired => { tools => 'view_system_logs' }, debug => 1, } ); -warn "Source of call was $src"; - if ($src eq 'circ') { # if we were called from circulation, use the circulation menu and get data to populate it -fbcit use C4::Members; my $borrowernumber = $object; - my $data = GetMember($borrowernumber,'borrowernumber'); - my $picture = GetPatronImage($data->{'cardnumber'}); - $template->param( menu => 1, - title => $data->{'title'}, - initials => $data->{'initials'}, - surname => $data->{'surname'}, - borrowernumber => $borrowernumber, - firstname => $data->{'firstname'}, - cardnumber => $data->{'cardnumber'}, - categorycode => $data->{'categorycode'}, - address => $data->{'address'}, - address2 => $data->{'address2'}, - city => $data->{'city'}, - phone => $data->{'phone'}, - phonepro => $data->{'phonepro'}, - email => $data->{'email'}, - branchcode => $data->{'branchcode'}, - picture => $picture, + my $data = GetMember('borrowernumber'=>$borrowernumber); + my ($picture, $dberror) = GetPatronImage($data->{'borrowernumber'}); + $template->param( picture => 1 ) if $picture; + + $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 => $data->{'address'}, + address2 => $data->{'address2'}, + city => $data->{'city'}, + state => $data->{'state'}, + zipcode => $data->{'zipcode'}, + phone => $data->{'phone'}, + phonepro => $data->{'phonepro'}, + email => $data->{'email'}, + branchcode => $data->{'branchcode'}, + branchname => GetBranchName($data->{'branchcode'}), + RoutingSerials => C4::Context->preference('RoutingSerials'), ); } $template->param( - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), - dateformat => C4::Dates->new()->format(), - debug => $debug, + debug => $debug, + C4::Search::enabled_staff_search_views, ); if ($do_it) { - my $results = GetLogs($datefrom,$dateto,$user,$module,$action,$object,$info); - my $total = scalar @$results; + my @data; + my ($results,$modules,$action); + if ($action[0] ne '') { $action = \@action; } # match All means no limit + if ($modules[0] ne '') { $modules = \@modules; } # match All means no limit + $results = GetLogs($datefrom,$dateto,$user,$modules,$action,$object,$info); + @data=@$results; + my $total = scalar @data; + foreach my $result (@data){ + if (substr($result->{'info'}, 0, 4) eq 'item' || $result->{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); + $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->{'firstname'}){ + $result->{'userfirstname'} = $userdetails->{'firstname'}; + } + if ($userdetails->{'surname'}){ + $result->{'usersurname'} = $userdetails->{'surname'}; + } + } + #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->{'firstname'}){ + $result->{'borrowerfirstname'} = $borrowerdetails->{'firstname'}; + } + if ($borrowerdetails->{'surname'}){ + $result->{'borrowersurname'} = $borrowerdetails->{'surname'}; + } + } + } + } if ( $output eq "screen" ) { # Printing results to screen $template->param ( + logview => 1, total => $total, - $module => 1, - looprow => $results, + looprow => \@data, do_it => 1, datefrom => $datefrom, dateto => $dateto, user => $user, - module => $module, object => $object, - action => $action, + action => \@action, info => $info, + src => $src, ); + #module => 'fix this', #this seems unused in actual code + foreach my $module (@modules) { + $template->param($module => 1); + } + output_html_with_http_headers $input, $cookie, $template->output; } else { # Printing to a csv file print $input->header( - -type => 'application/vnd.sun.xml.calc', + -type => 'text/csv', -attachment => "$basename.csv", -filename => "$basename.csv" ); my $sep = C4::Context->preference("delimiter"); - foreach my $line (@$results) { - ($module eq "catalogue") or next; - foreach (qw(timestamp firstname surname action info title author)) { - print $line->{$_} . $sep; - } - } + foreach my $line (@data) { + #next unless $modules[0] eq "catalogue"; + foreach (qw(timestamp firstname surname action info title author)) { + print $line->{$_} . $sep; + } + } } exit; } else { - my @values; - my %labels; - my %select; - my @mime = ( C4::Context->preference("MIME") ); - my $CGIextChoice = CGI::scrolling_list( - -name => 'MIME', - -id => 'MIME', - -values => \@mime, - -size => 1, - -multiple => 0 - ); - my @dels = ( C4::Context->preference("delimiter") ); - my $CGIsepChoice = CGI::scrolling_list( - -name => 'sep', - -id => 'sep', - -values => \@dels, - -size => 1, - -multiple => 0 - ); - $template->param( - total => 0, - CGIextChoice => $CGIextChoice, - CGIsepChoice => $CGIsepChoice, - ); - output_html_with_http_headers $input, $cookie, $template->output; + #my @values; + #my %labels; + #my %select; + #initialize some paramaters that might not be used in the template - it seems to evaluate EXPR even if a false TMPL_IF + $template->param( + total => 0, + module => "", + info => "" + ); + output_html_with_http_headers $input, $cookie, $template->output; }