[Koha-patches] [PATCH] Modified log reporting to allow multiple modules to be selected.

David Goldfein d.goldfein at lacrosse.lib.wi.us
Mon Apr 20 22:49:12 CEST 2009


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..99817ae 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>
 			    <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