From 884a09ccedb57ead00936bbbae728f71168c57d5 Mon Sep 17 00:00:00 2001
From: Paul Poulain <paul.poulain@biblibre.com>
Date: Fri, 2 Sep 2011 18:39:53 +0200
Subject: [PATCH] Bug 6840 warning in logs

In staff interface, in search (catalogue/search.pl), there is a warning saying:
[Fri Sep  2 18:20:24 2011] search.pl: Use of uninitialized value $key in hash
element at /home/paul/koha.dev/koha-community/C4/Templates.pm line 227.

The problem happens when searching from the quick search toolbar, not when you
search from advanced search.
Investigating, it seems it's because the sort_by is not defined in this case.


This patch
* fixes the problem in Search.pl by setting the parameter only if there is a sort_by field
* modify te Template->param sub to get a better error message. Instead of having just "use of uninitia..." get the value you try to set to an empty key. Much easier to understand which line causes the problem
---
 C4/Templates.pm     |    6 +++++-
 catalogue/search.pl |    2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/C4/Templates.pm b/C4/Templates.pm
index 4368492..b7751f6 100644
--- a/C4/Templates.pm
+++ b/C4/Templates.pm
@@ -224,7 +224,11 @@ sub param {
         my $val = shift;
         if    ( ref($val) eq 'ARRAY' && !scalar @$val ) { $val = undef; }
         elsif ( ref($val) eq 'HASH'  && !scalar %$val ) { $val = undef; }
-        $self->{VARS}->{$key} = $val;
+        if ( $key ) {
+            $self->{VARS}->{$key} = $val;
+        } else {
+            warn "Problem = a value of $val has been passed to param without key";
+        }
     }
 }
 
diff --git a/catalogue/search.pl b/catalogue/search.pl
index b9f9ed3..ec97d81 100755
--- a/catalogue/search.pl
+++ b/catalogue/search.pl
@@ -369,7 +369,7 @@ if (   C4::Context->preference('defaultSortField')
 @sort_by = split("\0",$params->{'sort_by'}) if $params->{'sort_by'};
 $sort_by[0] = $default_sort_by unless $sort_by[0];
 foreach my $sort (@sort_by) {
-    $template->param($sort => 1);
+    $template->param($sort => 1) if $sort;
 }
 $template->param('sort_by' => $sort_by[0]);
 
-- 
1.7.4.1