Bug 10572: Add phone to message_transport_types table for new installs
[koha.git] / authorities / auth_finder.pl
index fef6cbf..8182299 100755 (executable)
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 use strict;
+use warnings;
 
 use CGI;
 use C4::Output;
@@ -34,6 +35,7 @@ my $authtypecode = $query->param('authtypecode');
 my $index        = $query->param('index');
 my $tagid        = $query->param('tagid');
 my $resultstring = $query->param('result');
+my $relationship = $query->param('relationship');
 my $dbh          = C4::Context->dbh;
 
 my $startfrom = $query->param('startfrom');
@@ -44,22 +46,22 @@ my $resultsperpage;
 my $authtypes = getauthtypes;
 my @authtypesloop;
 foreach my $thisauthtype ( keys %$authtypes ) {
-    my $selected = 1 if $thisauthtype eq $authtypecode;
     my %row = (
         value        => $thisauthtype,
-        selected     => $selected,
+        selected     => ($thisauthtype eq $authtypecode),
         authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
         index        => $index,
     );
     push @authtypesloop, \%row;
 }
 
+$op ||= q{};
 if ( $op eq "do_search" ) {
     my @marclist  = $query->param('marclist');
     my @and_or    = $query->param('and_or');
     my @excluding = $query->param('excluding');
     my @operator  = $query->param('operator');
-    my @value     = $query->param('value');
+    my @value     = ($query->param('value_mainstr')||undef, $query->param('value_main')||undef, $query->param('value_any')||undef, $query->param('value_match')||undef);
     my $orderby   = $query->param('orderby');
 
     $resultsperpage = $query->param('resultsperpage');
@@ -69,6 +71,20 @@ if ( $op eq "do_search" ) {
       SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value,
         $startfrom * $resultsperpage,
         $resultsperpage, $authtypecode, $orderby);
+
+    # If an authority heading is repeated, add an arrayref to those repetions
+    # First heading -- Second heading
+    for my $heading ( @$results ) {
+        my @repets = split / -- /, $heading->{summary};
+        if ( @repets > 1 ) {
+            my @repets_loop;
+            for (my $i = 0; $i < @repets; $i++) {
+                push @repets_loop,
+                    { index => $index, repet => $i+1, value => $repets[$i] };
+            }
+            $heading->{repets} = \@repets_loop;
+        }
+    }
     # multi page display gestion
     my $displaynext = 0;
     my $displayprev = $startfrom;
@@ -86,9 +102,13 @@ if ( $op eq "do_search" ) {
         push @field_data, { term => "and_or",    val => $and_or[$i] };
         push @field_data, { term => "excluding", val => $excluding[$i] };
         push @field_data, { term => "operator",  val => $operator[$i] };
-        push @field_data, { term => "value",     val => $value[$i] };
     }
 
+    push @field_data, { term => "value_mainstr", val => $query->param('value_mainstr') || "" };
+    push @field_data, { term => "value_main",    val => $query->param('value_main')    || "" };
+    push @field_data, { term => "value_any",     val => $query->param('value_any')     || ""};
+    push @field_data, { term => "value_match",   val => $query->param('value_match')   || ""};
+
     my @numbers = ();
 
     if ( $total > $resultsperpage ) {
@@ -118,7 +138,7 @@ if ( $op eq "do_search" ) {
     }
     ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         {
-            template_name   => "authorities/searchresultlist-auth.tmpl",
+            template_name   => "authorities/searchresultlist-auth.tt",
             query           => $query,
             type            => 'intranet',
             authnotrequired => 0,
@@ -141,14 +161,15 @@ if ( $op eq "do_search" ) {
         to             => $to,
         numbers        => \@numbers,
         authtypecode   => $authtypecode,
-        mainmainstring => $value[0],
-        mainstring     => $value[1],
-        anystring      => $value[2],
+        value_mainstr  => $query->param('value_mainstr') || "", 
+        value_main     => $query->param('value_main') || "",
+        value_any      => $query->param('value_any') || "",
+        value_match    => $query->param('value_match') || "",
     );
 } else {
     ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         {
-            template_name   => "authorities/auth_finder.tmpl",
+            template_name   => "authorities/auth_finder.tt",
             query           => $query,
             type            => 'intranet',
             authnotrequired => 0,
@@ -162,12 +183,19 @@ if ( $op eq "do_search" ) {
 }
 
 $template->param(
+    value_mainstr => $query->param('value_mainstr') || "", 
+    value_main    => $query->param('value_main') || "",
+    value_any     => $query->param('value_any') || "",
+    value_match   => $query->param('value_match') || "",
     tagid         => $tagid,
     index         => $index,
     authtypesloop => \@authtypesloop,
     authtypecode  => $authtypecode,
 );
 
+$template->{VARS}->{source} = $query->param('source') || '';
+$template->{VARS}->{relationship} = $query->param('relationship') || '';
+
 # Print the page
 output_html_with_http_headers $query, $cookie, $template->output;