X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-search.pl;h=e0d3dd6229245268d8d469629136005419ccf739;hb=8082caa2f9068e93854380de58c5aa6f1bb7820b;hp=b36aaafacccaeba810f8e5d15f66ebbc49d60701;hpb=2b0e73b9e1b7f19a55510521a990fa00411157c5;p=koha.git diff --git a/opac/opac-search.pl b/opac/opac-search.pl index b36aaafacc..e0d3dd6229 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -52,11 +52,13 @@ use C4::Tags qw(get_tags); use C4::SocialData; use C4::External::OverDrive; +use Koha::Libraries; use Koha::ItemTypes; use Koha::Ratings; use Koha::Virtualshelves; use Koha::Library::Groups; use Koha::Patrons; +use Koha::SearchFields; use POSIX qw(ceil floor strftime); use URI::Escape; @@ -124,6 +126,7 @@ else { authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ), } ); +my $patron = Koha::Patrons->find( $borrowernumber ); my $lang = C4::Languages::getlanguage($cgi); @@ -326,7 +329,7 @@ if ( $template_type && $template_type eq 'advsearch' ) { # shouldn't appear on the first one, scan indexes should, adding a new # box should only appear on the last, etc. my @search_boxes_array; - my $search_boxes_count = 3; # begin whith 3 boxes + my $search_boxes_count = 3; # begin with 3 boxes $template->param( search_boxes_count => $search_boxes_count ); if ($cgi->cookie("num_paragraph")){ @@ -546,18 +549,19 @@ if (C4::Context->preference('OpacSuppression')) { } } +my $build_params = { + expanded_facet => $expanded_facet, + suppress => $suppress +}; + +unless ( $cgi->param('advsearch') ) { + $build_params->{weighted_fields} = 1; +} + ## I. BUILD THE QUERY ( $error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$query_type) - = $builder->build_query_compat( - \@operators, - \@operands, - \@indexes, - \@limits, - \@sort_by, - 0, - $lang, - { expanded_facet => $expanded_facet, suppress => $suppress } - ); + = $builder->build_query_compat( \@operators, \@operands, + \@indexes, \@limits, \@sort_by, 0, $lang, $build_params); sub _input_cgi_parse { my @elements; @@ -595,6 +599,8 @@ if ($tag) { $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 + # displays search results which should be hidden. # FIXME: No facets for tags search. } elsif ($build_grouped_results) { eval { @@ -621,6 +627,12 @@ if (not $tag and ( $@ || $error)) { # At this point, each server has given us a result set # now we build that set for template display my @sup_results_array; +my $search_context = {}; +$search_context->{'interface'} = 'opac'; +if (C4::Context->preference('OpacHiddenItemsExceptions')){ + $search_context->{'category'} = $patron ? $patron->categorycode : q{}; +} + for (my $i=0;$i<@servers;$i++) { my $server = $servers[$i]; if ($server && $server =~/biblioserver/) { # this is the local bibliographic server @@ -632,20 +644,19 @@ for (my $i=0;$i<@servers;$i++) { # because pazGetRecords handles retieving only the records # we want as specified by $offset and $results_per_page, # we need to set the offset parameter of searchResults to 0 - my @group_results = searchResults( 'opac', $query_desc, $group->{'group_count'},$results_per_page, 0, $scan, + my @group_results = searchResults( $search_context, $query_desc, $group->{'group_count'},$results_per_page, 0, $scan, $group->{"RECORDS"}); push @newresults, { group_label => $group->{'group_label'}, GROUP_RESULTS => \@group_results }; } } else { - @newresults = searchResults('opac', $query_desc, $hits, $results_per_page, $offset, $scan, + @newresults = searchResults( $search_context, $query_desc, $hits, $results_per_page, $offset, $scan, $results_hashref->{$server}->{"RECORDS"}); } $hits = 0 unless @newresults; - my $categorycode; # needed for may_article_request - if( $borrowernumber && C4::Context->preference('ArticleRequests') ) { - my $patron = Koha::Patrons->find( $borrowernumber ); - $categorycode = $patron ? $patron->categorycode : undef; + my $art_req_itypes; + if( C4::Context->preference('ArticleRequests') ) { + $art_req_itypes = Koha::IssuingRules->guess_article_requestable_itemtypes({ $patron ? ( categorycode => $patron->categorycode ) : () }); } foreach my $res (@newresults) { @@ -705,10 +716,7 @@ for (my $i=0;$i<@servers;$i++) { } # BZ17530: 'Intelligent' guess if result can be article requested - $res->{artreqpossible} = Koha::Biblio->may_article_request({ - categorycode => $categorycode, - itemtype => $res->{itemtype}, - }); + $res->{artreqpossible} = ( $art_req_itypes->{ $res->{itemtype} // q{} } || $art_req_itypes->{ '*' } ) ? 1 : q{}; } if ($results_hashref->{$server}->{"hits"}){ @@ -1001,9 +1009,12 @@ $template->{VARS}->{IDreamBooksReviews} = C4::Context->preference('IDreamBooksRe $template->{VARS}->{IDreamBooksReadometer} = C4::Context->preference('IDreamBooksReadometer'); $template->{VARS}->{IDreamBooksResults} = C4::Context->preference('IDreamBooksResults'); -if ($offset == 0 && IsOverDriveEnabled()) { - $template->param(OverDriveEnabled => 1); - $template->param(OverDriveLibraryID => C4::Context->preference('OverDriveLibraryID')); +if ($offset == 0) { + if (IsOverDriveEnabled()) { + $template->param(OverDriveEnabled => 1); + $template->param(OverDriveLibraryID => C4::Context->preference('OverDriveLibraryID')); + } + $template->param(RecordedBooksEnabled => C4::Context->preference( 'RecordedBooksClientSecret' ) && C4::Context->preference( 'RecordedBooksLibraryID' )); } $template->param( borrowernumber => $borrowernumber);