X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-search.pl;h=216de2fa2f9f9c5aaf4b220b7f03a0288dfd54ab;hb=223bf0099fcb837fb6bc1c719517e175c43f6ffc;hp=176bc127a4409a0f5443490a7bdb274fe810b88b;hpb=b20c2d6857629eed3f3eaf44cdca68dda36f4216;p=koha.git diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 176bc127a4..216de2fa2f 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -21,14 +21,26 @@ # Script to perform searching # Mostly copied from search.pl, see POD there -use strict; # always use -use warnings; +use Modern::Perl; ## STEP 1. Load things that are used in both search page and # results page and decide which template to load, operations # to perform, etc. ## load Koha modules use C4::Context; + +my $searchengine = C4::Context->preference("SearchEngine"); +for ( $searchengine ) { + when ( /^Solr$/ ) { + warn "We use Solr"; + require 'opac/search.pl'; + exit; + } + when ( /^Zebra$/ ) { + + } +} + use C4::Output; use C4::Auth qw(:DEFAULT get_session); use C4::Languages qw(getAllLanguages); @@ -357,6 +369,8 @@ if ($indexes[0] && !$indexes[1]) { my @operands; @operands = split("\0",$params->{'q'}) if $params->{'q'}; +$template->{VARS}->{querystring} = join(' ', @operands); + # if a simple search, display the value in the search box if ($operands[0] && !$operands[1]) { $template->param(ms_value => $operands[0]); @@ -437,7 +451,17 @@ my @limit_inputs = $limit_cgi ? _input_cgi_parse($limit_cgi) : (); # # add OPAC suppression - requires at least one item indexed with Suppress if (C4::Context->preference('OpacSuppression')) { - $query = "($query) not Suppress=1"; + # OPAC suppression by IP address + if (C4::Context->preference('OpacSuppressionByIPRange')) { + my $IPAddress = $ENV{'REMOTE_ADDR'}; + my $IPRange = C4::Context->preference('OpacSuppressionByIPRange'); + if ($IPAddress !~ /^$IPRange/) { + $query = "($query) not Suppress=1"; + } + } + else { + $query = "($query) not Suppress=1"; + } } $template->param ( LIMIT_INPUTS => \@limit_inputs ); @@ -475,7 +499,7 @@ elsif (C4::Context->preference('NoZebra')) { $pasarParams .= '&simple_query=' . $simple_query; $pasarParams .= '&query_type=' . $query_type if ($query_type); eval { - ($error, $results_hashref, $facets) = getRecords($query,$simple_query,\@sort_by,\@servers,$results_per_page,$offset,$expanded_facet,$branches,$query_type,$scan); + ($error, $results_hashref, $facets) = getRecords($query,$simple_query,\@sort_by,\@servers,$results_per_page,$offset,$expanded_facet,$branches,$itemtypes,$query_type,$scan); }; } # This sorts the facets into alphabetical order @@ -589,12 +613,18 @@ for (my $i=0;$i<@servers;$i++) { } # Adding the new search if needed + my $path_info = $cgi->url(-path_info=>1); + my $query_cgi_history = $cgi->url(-query=>1); + $query_cgi_history =~ s/^$path_info\?//; + $query_cgi_history =~ s/;/&/g; + my $query_desc_history = "$query_desc, $limit_desc"; + if (!$borrowernumber || $borrowernumber eq '') { # To a cookie (the user is not logged in) - if (($params->{'offset'}||'') eq '') { + if (!$offset) { push @recentSearches, { - "query_desc" => $query_desc || "unknown", - "query_cgi" => $query_cgi || "unknown", + "query_desc" => $query_desc_history || "unknown", + "query_cgi" => $query_cgi_history || "unknown", "time" => time(), "total" => $total }; @@ -613,8 +643,8 @@ for (my $i=0;$i<@servers;$i++) { } else { # To the session (the user is logged in) - if (($params->{'offset'}||'') eq '') { - AddSearchHistory($borrowernumber, $cgi->cookie("CGISESSID"), $query_desc, $query_cgi, $total); + if (!$offset) { + AddSearchHistory($borrowernumber, $cgi->cookie("CGISESSID"), $query_desc_history, $query_cgi_history, $total); $template->param(ShowOpacRecentSearchLink => 1); } } @@ -737,7 +767,13 @@ for (my $i=0;$i<@servers;$i++) { } # no hits else { - $template->param(searchdesc => 1,query_desc => $query_desc,limit_desc => $limit_desc); + $template->param( + searchdesc => 1, + query_desc => $query_desc, + limit_desc => $limit_desc, + query_cgi => $query_cgi, + limit_cgi => $limit_cgi + ); } } # end of the if local # asynchronously search the authority server @@ -792,5 +828,7 @@ if (C4::Context->preference('GoogleIndicTransliteration')) { $template->param('GoogleIndicTransliteration' => 1); } +$template->{VARS}->{DidYouMeanFromAuthorities} = C4::Context->preference('DidYouMeanFromAuthorities'); + $template->param( borrowernumber => $borrowernumber); output_with_http_headers $cgi, $cookie, $template->output, $content_type;