From 17923b97f60201583584a527b4038d5c13730ed4 Mon Sep 17 00:00:00 2001 From: David Goldfein Date: Fri, 24 Apr 2009 13:21:24 -0500 Subject: [PATCH] Modified log reporting to allow multiple modules to be selected. Reworked ViewLog.pl and the template. Eliminated html errors, cleaned up the template, change mime type to text/csv and other minor changes. Signed-off-by: Galen Charlton --- C4/Log.pm | 40 +- .../prog/en/modules/tools/viewlog.tmpl | 423 +++++++++--------- tools/viewlog.pl | 84 ++-- 3 files changed, 297 insertions(+), 250 deletions(-) diff --git a/C4/Log.pm b/C4/Log.pm index 8fb4488feb..9f4430cbb6 100644 --- a/C4/Log.pm +++ b/C4/Log.pm @@ -182,7 +182,7 @@ sub displaylog { =item GetLogs -$logs = GetLogs($datefrom,$dateto,$user,$module,$action,$object,$info); +$logs = GetLogs($datefrom,$dateto,$user,\@modules,$action,$object,$info); Return: C<$logs> is a ref to a hash which containts all columns from action_logs @@ -193,7 +193,7 @@ sub GetLogs { my $datefrom = shift; my $dateto = shift; my $user = shift; - my $module = shift; + my $modules = shift; my $action = shift; my $object = shift; my $info = shift; @@ -207,16 +207,38 @@ sub GetLogs { FROM action_logs WHERE 1 "; - $query .= " AND DATE_FORMAT(timestamp, '%Y-%m-%d') >= \"".$iso_datefrom."\" " if $iso_datefrom; + + my @parameters; + $query .= " AND DATE_FORMAT(timestamp, '%Y-%m-%d') >= \"".$iso_datefrom."\" " if $iso_datefrom; #fix me - mysql specific $query .= " AND DATE_FORMAT(timestamp, '%Y-%m-%d') <= \"".$iso_dateto."\" " if $iso_dateto; - $query .= " AND user LIKE \"%".$user."%\" " if $user; - $query .= " AND module LIKE \"%".$module."%\" " if $module; - $query .= " AND action LIKE \"%".$action."%\" " if $action; - $query .= " AND object LIKE \"%".$object."%\" " if $object; - $query .= " AND info LIKE \"%".$info."%\" " if $info; + if($user) { + $query .= " AND user LIKE ? "; + push(@parameters,"%".$user."%"); + } + if(scalar @$modules > 1 or @$modules[0] ne "") { + $query .= " AND (1 = 2"; #always false but used to build the query + foreach my $module (@$modules) { + next if $module eq ""; + $query .= " or module = ?"; + push(@parameters,$module); + } + $query .= ")"; + } + if($action) { + $query .= " AND action LIKE ? "; + push(@parameters,"%".$action."%"); + } + if($object) { + $query .= " AND object LIKE ? "; + push(@parameters,"%".$object."%"); + } + if($info) { + $query .= " AND info LIKE ? "; + push(@parameters,"%".$info."%"); + } my $sth = $dbh->prepare($query); - $sth->execute; + $sth->execute(@parameters); my @logs; while( my $row = $sth->fetchrow_hashref ) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tmpl index 84f0f49af4..d461b087c1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tmpl @@ -1,5 +1,12 @@ -Koha › Tools › <!-- TMPL_IF NAME="do_it" -->Logs › Results<!-- TMPL_ELSE -->Logs<!-- /TMPL_IF --> + + Koha › Tools › + <!-- TMPL_IF NAME="do_it" --> + Logs › Results + <!-- TMPL_ELSE --> + Logs + <!-- /TMPL_IF --> + @@ -7,210 +14,218 @@ - +
- -
-
-
- -

Browse system logs

- -
- - " /> -" /> - " /> - " /> ---> " /> -
-
    -
  1. - " /> -
  2. -
  3. - - -
  4. -
  5. - - -
  6. -
  7. - - " /> -
  8. -
  9. - - " /> -
  10. -
  11. - " /> - /lib/calendar/cal.gif" border="0" alt="Show Calendar" id="openCalendarFrom" style="cursor: pointer;" /> - " /> - /lib/calendar/cal.gif" id="openCalendarTo" alt="Show Calendar" style="cursor: pointer;" border="0" /> - -
  12. -
-
-
- Output -
    -
  1. -
  2. -
  3. - - - - - - - " /> -
  4. -
-
-
-
- - - -

lines found.

- -
No log found - for ">Bibliographic Record for "> () - .
- - - - - - - - - - - - - - - - - - - - - - - - - -
DateLibrarianModuleActionObjectInfo
- " title="display detail for this librarian."> - - - - - " title="Display member details."> - member - - - - " title="Display member details."> - member - - - - - &biblionumber=&bi=#item">Item - - " title="Display detail for this biblio">biblio - - - - "> - - - - - - - - - - - " title="Display detail for this biblio">biblio - - - -
- - -
-
-
-
- - - - - - -
+
+
+
+

Browse system logs

+
+ + " /> + + " /> +
+
    +
  1. + + " /> +
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
  7. + + " /> +
  8. +
  9. + + " /> +
  10. +
  11. + " /> + /lib/calendar/cal.gif" border="0" alt="Show Calendar" id="openCalendarFrom" style="cursor: pointer;" /> + " /> + /lib/calendar/cal.gif" id="openCalendarTo" alt="Show Calendar" style="cursor: pointer;" border="0" /> + +
  12. +
+
+
+ Output +
    +
  1. + +
  2. +
  3. + + + + + + + --> + " /> +
  4. +
+
+
+ + +
+ + +

lines found.

+ + + + + + + + + + + + + + + + + + + +
DateLibrarianModuleActionObjectInfo
+ " title="display detail for this librarian."> + + + " title="Display member details."> member + + + " title="Display member details."> + + member + + + + + + &biblionumber=&bi=#item">Item + + " title="Display detail for this biblio">biblio + + + + "> + + + + + + + + + " title="Display detail for this biblio">biblio + + + +
+ +
+ No log found + + for ">Bibliographic Record + + + for "> () + + . +
+ + +
+
+
+
+ + + + + + + + + +
+
diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 3c65b6a9a4..e3bdc73571 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -43,7 +43,7 @@ my $input = new CGI; $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 $object = $input->param("object"); @@ -52,7 +52,7 @@ 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 @@ -99,10 +99,32 @@ $template->param( dateformat => C4::Dates->new()->format(), debug => $debug, ); - +# +#### This code was never really used - maybe some day some will fix it ### +#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( +# CGIextChoice => $CGIextChoice, +# CGIsepChoice => $CGIsepChoice, +#); +# if ($do_it) { - my $results = GetLogs($datefrom,$dateto,$user,$module,$action,$object,$info); + my $results = GetLogs($datefrom,$dateto,$user,\@modules,$action,$object,$info); my $total = scalar @$results; foreach my $result (@$results){ if ($result->{'info'} eq 'item'){ @@ -118,59 +140,47 @@ if ($do_it) { $template->param ( logview => 1, total => $total, - $module => 1, looprow => $results, do_it => 1, datefrom => $datefrom, dateto => $dateto, user => $user, - module => $module, object => $object, 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; - } - } + #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; } -- 2.39.5