Kyle M Hall
dc5b944863
The acquisitions search is exhibiting the same behavior as bug 11410. Results are always fixed in order of biblionumber, among other possible issues ( including the ampersand issue ). Test Plan: 1) From an open basket, choose "Add to basket" 2) Run a search for "From an existing record" 3) Note the "View MARC" URLs are fixed in order of biblionumber 4) Apply this patch 5) Refresh the page 6) Note the results are no longer fixed in order of biblionumber Signed-off-by: David Cook <dcook@prosentient.com.au> Works as described. I think the code could be a bit tidier, but I think it makes sense to use buildQuery here. It'll detect CCL, CQL, and PQF queries, as well as parsing a regular keyword search as one would expect when searching the catalogue. It also has the added bonus of performing relevance searching, so long as QueryAutoTruncation is off, and so long as library staff avoid using the "*" truncation wildcard (see bug 12430). While there are simpler ways to fix this acq bug, I think this was probably the best move, as it adds a bit to the consistency of what librarians can expect from their search results. Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Same result with and without the patch but I agree with the changes. BuildQuery should be called before SimpleSearch if QP is not used. Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
155 lines
4.6 KiB
Perl
Executable file
155 lines
4.6 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
#origninally script to provide intranet (librarian) advanced search facility
|
|
#now script to do searching for acquisitions
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
# Copyright 2008-2009 BibLibre SARL
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# 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.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
=head1 NAME
|
|
|
|
neworderbiblio.pl
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
this script allows to perform a new order from an existing record.
|
|
|
|
=head1 CGI PARAMETERS
|
|
|
|
=over 4
|
|
|
|
=item search
|
|
the title the librarian has typed to search an existing record.
|
|
|
|
=item q
|
|
the keyword the librarian has typed to search an existing record.
|
|
|
|
=item author
|
|
the author of the new record.
|
|
|
|
=item num
|
|
the number of result per page to display
|
|
|
|
=item booksellerid
|
|
the id of the bookseller this script has to add an order.
|
|
|
|
=item basketno
|
|
the basket number to know on which basket this script have to add a new order.
|
|
|
|
=back
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
#use warnings; FIXME - Bug 2505
|
|
|
|
use C4::Search;
|
|
use CGI qw ( -utf8 );
|
|
use C4::Biblio;
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::Koha;
|
|
use C4::Members qw/ GetMember /;
|
|
use C4::Budgets qw/ GetBudgetHierarchy /;
|
|
|
|
use Koha::Acquisition::Bookseller;
|
|
|
|
my $input = new CGI;
|
|
|
|
#getting all CGI params into a hash.
|
|
my $params = $input->Vars;
|
|
|
|
my $page = $params->{'page'} || 1;
|
|
my $query = $params->{'q'};
|
|
my $results_per_page = $params->{'num'} || 20;
|
|
my $booksellerid = $params->{'booksellerid'};
|
|
my $basketno = $params->{'basketno'};
|
|
my $sub = $params->{'sub'};
|
|
my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
|
|
|
|
# getting the template
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "acqui/neworderbiblio.tt",
|
|
query => $input,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => { acquisition => 'order_manage' },
|
|
}
|
|
);
|
|
|
|
# Searching the catalog.
|
|
|
|
my @operands = $query;
|
|
my $QParser;
|
|
$QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser'));
|
|
my $builtquery;
|
|
if ($QParser) {
|
|
$builtquery = $query;
|
|
} else {
|
|
my ( $builterror,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$stopwords_removed,$query_type);
|
|
( $builterror,$builtquery,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$stopwords_removed,$query_type) = buildQuery(undef,\@operands);
|
|
}
|
|
my ( $error, $marcresults, $total_hits ) = SimpleSearch( $builtquery, $results_per_page * ( $page - 1 ), $results_per_page );
|
|
|
|
if (defined $error) {
|
|
$template->param(
|
|
query_error => $error,
|
|
basketno => $basketno,
|
|
booksellerid => $bookseller->{'id'},
|
|
name => $bookseller->{'name'},
|
|
);
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|
|
exit;
|
|
}
|
|
|
|
my @results;
|
|
|
|
foreach my $result ( @{$marcresults} ) {
|
|
my $marcrecord = C4::Search::new_record_from_zebra( 'biblioserver', $result );
|
|
my $biblio = TransformMarcToKoha( C4::Context->dbh, $marcrecord, '' );
|
|
|
|
$biblio->{booksellerid} = $booksellerid;
|
|
push @results, $biblio;
|
|
|
|
}
|
|
|
|
my $borrower= GetMember('borrowernumber' => $loggedinuser);
|
|
my $budgets = GetBudgetHierarchy(q{},$borrower->{branchcode},$borrower->{borrowernumber});
|
|
my $has_budgets = 0;
|
|
foreach my $r (@{$budgets}) {
|
|
if (!defined $r->{budget_amount} || $r->{budget_amount} == 0) {
|
|
next;
|
|
}
|
|
$has_budgets = 1;
|
|
last;
|
|
}
|
|
|
|
$template->param(
|
|
has_budgets => $has_budgets,
|
|
basketno => $basketno,
|
|
booksellerid => $bookseller->{'id'},
|
|
name => $bookseller->{'name'},
|
|
resultsloop => \@results,
|
|
total => $total_hits,
|
|
query => $query,
|
|
pagination_bar => pagination_bar( "$ENV{'SCRIPT_NAME'}?q=$query&booksellerid=$booksellerid&basketno=$basketno&", getnbpages( $total_hits, $results_per_page ), $page, 'page' ),
|
|
);
|
|
|
|
# BUILD THE TEMPLATE
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|