Adding IndependantBranches Filter + adding some ordering on member list display.
authorPaul POULAIN <paul@koha-fr.org>
Wed, 3 Oct 2007 17:01:05 +0000 (19:01 +0200)
committerChris Cormack <crc@liblime.com>
Wed, 3 Oct 2007 19:58:51 +0000 (14:58 -0500)
Signed-off-by: Chris Cormack <crc@liblime.com>
C4/Members.pm
koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tmpl

index 8ba07a4..b2f57c9 100644 (file)
@@ -122,7 +122,7 @@ push @EXPORT, qw(
 
 =item SearchMember
 
-  ($count, $borrowers) = &SearchMember($searchstring, $type,$category_type);
+  ($count, $borrowers) = &SearchMember($searchstring, $type,$category_type,$filter,$showallbranches);
 
 Looks up patrons (borrowers) by name.
 
@@ -137,6 +137,10 @@ C<$searchstring> is a space-separated list of search terms. Each term
 must match the beginning a borrower's surname, first name, or other
 name.
 
+C<$filter> is assumed to be a list of elements to filter results on
+
+C<$showallbranches> is used in IndependantBranches Context to display all branches results.
+
 C<&SearchMember> returns a two-element list. C<$borrowers> is a
 reference-to-array; each element is a reference-to-hash, whose keys
 are the fields of the C<borrowers> table in the Koha database.
@@ -148,7 +152,7 @@ C<$count> is the number of elements in C<$borrowers>.
 #used by member enquiries from the intranet
 #called by member.pl
 sub SearchMember {
-    my ($searchstring, $orderby, $type,$category_type ) = @_;
+    my ($searchstring, $orderby, $type,$category_type,$filter,$showallbranches ) = @_;
     my $dbh   = C4::Context->dbh;
     my $query = "";
     my $count;
@@ -158,10 +162,18 @@ sub SearchMember {
     if ( $type eq "simple" )    # simple search for one letter only
     {
         $query =
-          "SELECT * FROM borrowers
-                  LEFT JOIN categories ON borrowers.categorycode=categories.categorycode ".
-                  ($category_type?" AND category_type = ".$dbh->quote($category_type):"").
-                  " WHERE surname LIKE ? OR cardnumber like ? ORDER BY $orderby";
+          "SELECT * 
+           FROM borrowers
+           LEFT JOIN categories ON borrowers.categorycode=categories.categorycode ".
+                  ($category_type?" AND category_type = ".$dbh->quote($category_type):"");
+        $query .=
+         " WHERE (surname LIKE ? OR cardnumber like ?) ";
+        if (C4::Context->preference("IndependantBranches") && !$showallbranches){
+          if (C4::Context->userenv && C4::Context->userenv->{flags}!=1 && C4::Context->userenv->{'branch'}){
+            $query.=" AND borrowers.branchcode =".$dbh->quote(C4::Context->userenv->{'branch'}) unless (C4::Context->userenv->{'branch'} eq "insecure");
+          }      
+        }     
+        $query.=" ORDER BY $orderby";
         @bind = ("$searchstring%","$searchstring");
     }
     else    # advanced search looking in surname, firstname and othernames
@@ -170,9 +182,15 @@ sub SearchMember {
         $count = @data;
         $query = "SELECT * FROM borrowers
                     LEFT JOIN categories ON borrowers.categorycode=categories.categorycode
-               WHERE ((surname LIKE ? OR surname LIKE ?
-               OR firstname  LIKE ? OR firstname LIKE ?
-               OR othernames LIKE ? OR othernames LIKE ?)
+                             WHERE ";
+        if (C4::Context->preference("IndependantBranches") && !$showallbranches){
+          if (C4::Context->userenv && C4::Context->userenv->{flags}!=1 && C4::Context->userenv->{'branch'}){
+            $query.=" borrowers.branchcode =".$dbh->quote(C4::Context->userenv->{'branch'})." AND " unless (C4::Context->userenv->{'branch'} eq "insecure");
+          }      
+        }     
+        $query.="((surname LIKE ? OR surname LIKE ?
+                             OR firstname  LIKE ? OR firstname LIKE ?
+                             OR othernames LIKE ? OR othernames LIKE ?)
                ".
                   ($category_type?" AND category_type = ".$dbh->quote($category_type):"");
         @bind = (
@@ -198,7 +216,7 @@ sub SearchMember {
 
     my $sth = $dbh->prepare($query);
 
-    #  warn "Q $orderby : $query";
+#     warn "Q $orderby : $query";
     $sth->execute(@bind);
     my @results;
     my $data = $sth->fetchall_arrayref({});
index e58e513..ee99887 100644 (file)
 <div class="searchresults">
     <table>
     <tr>
-    <th>Card</th>
-    <th>Name</th>
-    <th>Cat</th>
+    <th><a href="member.pl?member=<!--TMPL_VAR Name="member" -->&orderby=cardnumber">Card</a></th>
+    <th><a href="member.pl?member=<!--TMPL_VAR Name="member" -->&orderby=surname">Name</a></th>
+    <th><a href="member.pl?member=<!--TMPL_VAR Name="member" -->&orderby=borrowers.categorycode">Cat</a></th>
+    <th><a href="member.pl?member=<!--TMPL_VAR Name="member" -->&orderby=branchcode">Branch</a></th>
     <th>OD/Issues</th>
     <th>Fines</th>
     <th>Notes</th>
@@ -80,6 +81,7 @@
     <!-- TMPL_VAR NAME="streetaddress" --> <!-- TMPL_VAR NAME="city" -->
     </td>
     <td><!-- TMPL_VAR NAME="category_description" --> (<!-- TMPL_VAR name="category_type" -->)</td>
+    <td><!-- TMPL_VAR NAME="branchcode" --></td>
     <td><!-- TMPL_VAR NAME="odissue" --></td>
     <td><!-- TMPL_VAR NAME="fines" --></td>
     <td><!-- TMPL_VAR NAME="borrowernotes" --></td>