[Koha-patches] [PATCH] Modified log reporting to allow multiple modules to be selected.
David Goldfein
d.goldfein at lacrosse.lib.wi.us
Thu Apr 23 20:43:01 CEST 2009
Change select to make it XHTML compliant
multiple changed to multiple="multiple"
---
C4/Log.pm | 40 +++++++++++++++----
.../prog/en/modules/tools/viewlog.tmpl | 14 +++---
tools/viewlog.pl | 13 ++++--
3 files changed, 46 insertions(+), 21 deletions(-)
diff --git a/C4/Log.pm b/C4/Log.pm
index 8fb4488..9f4430c 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 84f0f49..3a79c29 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tmpl
@@ -32,7 +32,7 @@
</li>
<li>
<label for="module">Module:</label>
- <select name="module" id="module">
+ <select name="modules" id="modules" multiple="multiple">
<option value="" selected="selected">All</option>
<option value ="CATALOGUING">Catalog</option>
<option value ="MEMBERS">Members</option>
@@ -133,7 +133,7 @@
<h4><!-- TMPL_VAR NAME="total" --> lines found.</h4>
<!-- TMPL_ELSE -->
<div class="dialog alert">No log found
- <!-- TMPL_IF EXPR="module eq 'CATALOGUING'" -->for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="object" -->">Bibliographic Record <!-- TMPL_VAR NAME="object" --></a><!-- /TMPL_IF --><!-- TMPL_IF EXPR="module eq 'MEMBERS'" -->for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="object" -->"><!-- TMPL_VAR NAME="firstname" --> <!-- TMPL_VAR NAME="surname" --> (<!-- TMPL_VAR NAME="cardnumber" -->)</a><!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CATALOGUING" -->for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="object" -->">Bibliographic Record <!-- TMPL_VAR NAME="object" --></a><!-- /TMPL_IF --><!-- TMPL_IF NAME="MEMBERS" -->for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="object" -->"><!-- TMPL_VAR NAME="firstname" --> <!-- TMPL_VAR NAME="surname" --> (<!-- TMPL_VAR NAME="cardnumber" -->)</a><!-- /TMPL_IF -->
.</div>
<!-- /TMPL_IF -->
<!-- /TMPL_IF -->
@@ -161,24 +161,24 @@
<td><!-- TMPL_VAR NAME="module" --></td>
<td><!-- TMPL_VAR NAME="action" --></td>
<td>
- <!-- TMPL_IF NAME="MEMBERS"-->
+ <!-- TMPL_IF EXPR="module eq 'MEMBERS'"-->
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="object" -->" title="Display member details.">
member <!-- TMPL_VAR NAME="object" -->
</a>
<!-- TMPL_ELSE -->
- <!-- TMPL_IF NAME="CIRCULATION" -->
+ <!-- TMPL_IF EXPR="module eq 'CIRCULATION'" -->
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="object" -->" title="Display member details.">
<!-- TMPL_IF NAME="object"-->member <!-- TMPL_VAR NAME="object" --><!-- /TMPL_IF -->
</a>
<!-- TMPL_ELSE -->
- <!-- TMPL_IF NAME="CATALOGUING" -->
+ <!-- TMPL_IF EXPR="module eq 'CATALOGUING'" -->
<!-- TMPL_IF EXPR="info eq 'item'" -->
<a href="/cgi-bin/koha/catalogue/moredetail.pl?item=<!-- TMPL_VAR NAME="object" -->&biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&bi=<!-- TMPL_VAR NAME="biblioitemnumber" -->#item<!-- TMPL_VAR NAME="object" -->">Item <!-- TMPL_VAR NAME="object" --></a>
<!-- TMPL_ELSE -->
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="object" -->" title="Display detail for this biblio">biblio <!-- TMPL_VAR NAME="object" --></a>
<!-- /TMPL_IF -->
<!-- TMPL_ELSE-->
- <!-- TMPL_IF NAME="SERIAL"-->
+ <!-- TMPL_IF EXPR='module eq 'SERIAL'"-->
<a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=<!-- TMPL_VAR NAME="object" -->">
<!-- TMPL_VAR NAME="object" -->
</a>
@@ -209,7 +209,7 @@
<!-- TMPL_INCLUDE NAME="circ-menu.inc" -->
<!-- TMPL_ELSE -->
- <!-- TMPL_IF EXPR="module eq 'CATALOGUING'" --><!-- TMPL_INCLUDE NAME="biblio-view-menu.inc" --><!-- TMPL_ELSE --><!-- TMPL_INCLUDE NAME="tools-menu.inc" --><!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME"CATALOGUING" --><!-- TMPL_INCLUDE NAME="biblio-view-menu.inc" --><!-- TMPL_ELSE --><!-- TMPL_INCLUDE NAME="tools-menu.inc" --><!-- /TMPL_IF -->
<!-- /TMPL_IF -->
</div>
</div>
diff --git a/tools/viewlog.pl b/tools/viewlog.pl
index 3c65b6a..1b05554 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");
@@ -102,7 +102,7 @@ $template->param(
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,18 +118,21 @@ 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
@@ -140,7 +143,7 @@ if ($do_it) {
);
my $sep = C4::Context->preference("delimiter");
foreach my $line (@$results) {
- ($module eq "catalogue") or next;
+ ($modules[0] eq "catalogue") or next;
foreach (qw(timestamp firstname surname action info title author)) {
print $line->{$_} . $sep;
}
--
1.5.4.3
More information about the Koha-patches
mailing list