Bug 20310: Redirect article record without items for article requests
[koha-ffzg.git] / opac / opac-search.pl
index 410f3f3..cde8b6e 100755 (executable)
@@ -105,7 +105,7 @@ my $format = $cgi->param("format") || '';
 if ($format =~ /(rss|atom|opensearchdescription)/) {
     $template_name = 'opac-opensearch.tt';
 }
-elsif ((@params>=1) || ($cgi->param("q")) || ($cgi->param('multibranchlimit')) || ($cgi->param('limit-yr')) || @searchCategories ) {
+elsif ((@params>=1) || (defined $cgi->param("q") && $cgi->param("q") ne "") || ($cgi->param('multibranchlimit')) || ($cgi->param('limit-yr')) || @searchCategories ) {
     $template_name = 'opac-results.tt';
 }
 else {
@@ -484,10 +484,8 @@ if (@searchCategories > 0) {
 
 @limits = map { uri_unescape($_) } @limits;
 
-my $branchfield = C4::Context->preference('AdvancedSearchBranchFieldToUse');
-
-if ( $params->{'multibranchlimit'} ) {
-    my $branchfield  = C4::Context->preference('AdvancedSearchBranchFieldToUse');
+if ( $params->{'multibranchlimit'} || ( $branch_group_limit && $branch_group_limit =~ /^multibranchlimit-/ ) ) {
+    my $branchfield  = C4::Context->preference('SearchLimitLibrary');
     my $search_group = Koha::Library::Groups->find( $params->{multibranchlimit} );
 
     my @branchcodes  = map { $_->branchcode } $search_group->all_libraries;
@@ -507,6 +505,25 @@ if ( $params->{'multibranchlimit'} ) {
     }
 }
 
+for ( my $i=0; $i<@limits; $i++ ) {
+    if ( $limits[$i] =~ /^branch:/ ) {
+        my $branchfield  = C4::Context->preference('SearchLimitLibrary');
+        if ( $branchfield eq "homebranch" ) {
+            $limits[$i] =~ s/branch/homebranch/;
+        }
+        elsif ( $branchfield eq "holdingbranch" ) {
+            $limits[$i] =~ s/branch/holdingbranch/;
+        }
+        else {
+            my $homebranchlimit = $limits[$i];
+            my $holdingbranchlimit = $limits[$i];
+            $homebranchlimit =~ s/branch/homebranch/;
+            $holdingbranchlimit =~ s/branch/holdingbranch/;
+            $limits[$i] = "($homebranchlimit or $holdingbranchlimit)";
+        }
+    }
+}
+
 my $available;
 foreach my $limit(@limits) {
     if ($limit =~/available/) {
@@ -615,7 +632,6 @@ if ($tag) {
     my $taglist = get_tags({term=>$tag, approved=>1});
     $results_hashref->{biblioserver}->{hits} = scalar (@$taglist);
     my @marclist = map { C4::Biblio::GetXmlBiblio( $_->{biblionumber} ) } @$taglist;
-    $DEBUG and printf STDERR "taglist (%s biblionumber)\nmarclist (%s records)\n", scalar(@$taglist), scalar(@marclist);
     $results_hashref->{biblioserver}->{RECORDS} = \@marclist;
     # FIXME: tag search and standard search should work together, not exclusively
     # FIXME: Because search and standard search don't work together OpacHiddenItems
@@ -885,7 +901,7 @@ for (my $i=0;$i<@servers;$i++) {
             if ($nohits and $nohits=~/{QUERY_KW}/){
                 # extracting keywords in case of relaunching search
                 (my $query_kw=$query_desc)=~s/ and|or / /g;
-                my @query_kw=($query_kw=~ /([-\w]+\b)(?:[^,:]|$)/g);
+                my @query_kw=($query_kw=~ /([-\w]+\b)(?:[^:]|$)/g);
                 $query_kw=join('+',@query_kw);
                 $nohits=~s/{QUERY_KW}/$query_kw/g;
                 $template->param('OPACNoResultsFound' =>$nohits);