"Fossies" - the Fresh Open Source Software Archive 
Member "koha-19.11.15/authorities/ysearch.pl" (23 Feb 2021, 3268 Bytes) of package /linux/misc/koha-19.11.15.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "ysearch.pl" see the
Fossies "Dox" file reference documentation and the last
Fossies "Diffs" side-by-side code changes report:
20.05.06_vs_20.11.00.
1 #!/usr/bin/perl
2
3 # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
4
5 # Copyright 2011 BibLibre
6 # Parts copyright 2012 Athens County Public Libraries
7 #
8 # This file is part of Koha.
9 #
10 # Koha is free software; you can redistribute it and/or modify it
11 # under the terms of the GNU General Public License as published by
12 # the Free Software Foundation; either version 3 of the License, or
13 # (at your option) any later version.
14 #
15 # Koha is distributed in the hope that it will be useful, but
16 # WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
19 #
20 # You should have received a copy of the GNU General Public License
21 # along with Koha; if not, see <http://www.gnu.org/licenses>.
22
23 =head1 ysearch.pl
24
25 This script allows ajax call for dynamic authorities search
26 (used in auth_finder.pl)
27
28 =cut
29
30 use CGI qw ( -utf8 );
31 use Modern::Perl;
32 use JSON;
33
34 use C4::Context;
35 use C4::Charset;
36 use C4::Auth qw/check_cookie_auth/;
37 use C4::Output;
38 use Koha::SearchEngine::Search;
39 use Koha::SearchEngine::QueryBuilder;
40
41 my $query = new CGI;
42
43 my ( $auth_status, $sessionID ) = check_cookie_auth( $query->cookie('CGISESSID'), { catalogue => 1 } );
44
45 if ( $auth_status ne "ok" ) {
46 # send empty response
47 my $reply = CGI->new("");
48 print $reply->header(-type => 'text/html');
49 exit 0;
50 }
51
52 my @value = $query->multi_param('term');
53 my $searchtype = $query->param('querytype');
54 my @marclist = ($searchtype);
55 my $authtypecode = $query->param('authtypecode');
56 my @and_or = $query->multi_param('and_or');
57 my @excluding = $query->multi_param('excluding');
58 my @operator = $query->multi_param('operator');
59 my $orderby = $query->param('orderby');
60
61 my $resultsperpage = 50;
62 my $startfrom = 0;
63
64 my $builder = Koha::SearchEngine::QueryBuilder->new(
65 { index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
66 my $searcher = Koha::SearchEngine::Search->new(
67 { index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
68 my $search_query = $builder->build_authorities_query_compat(
69 \@marclist, \@and_or, \@excluding, \@operator,
70 \@value, $authtypecode, $orderby
71 );
72 my $offset = $startfrom * $resultsperpage;
73 my ( $results, $total ) =
74 $searcher->search_auth_compat( $search_query, $offset,
75 $resultsperpage );
76
77 my %used_summaries; # hash to avoid duplicates
78 my @summaries;
79 foreach my $result (@$results) {
80 my $authorized = $result->{'summary'}->{'authorized'};
81 my $summary = join(
82 ' ',
83 map {
84 ( $searchtype eq 'mainmainentry' )
85 ? $_->{'hemain'}
86 : $_->{'heading'}
87 } @$authorized
88 );
89 $summary =~ s/^\s+//;
90 $summary =~ s/\s+$//;
91 $summary = nsb_clean($summary);
92 # test if already added ignoring case
93 unless ( exists $used_summaries{ lc($summary) } ) {
94 push @summaries, { 'summary' => $summary };
95 $used_summaries{ lc($summary) } = 1;
96 }
97 }
98
99 output_with_http_headers $query, undef, to_json(\@summaries, { utf8 => 1 }), 'json';