elsif ( $sort eq "title_za" || $sort eq "title_dsc" ) {
$sort_by .= "1=4 >i ";
}
+ elsif ( $sort eq "biblionumber_az" || $sort eq "biblionumber_asc" ) {
+ $sort_by .= "1=12 <i ";
+ }
+ elsif ( $sort eq "biblionumber_za" || $sort eq "biblionumber_dsc" ) {
+ $sort_by .= "1=12 >i ";
+ }
else {
warn "Ignoring unrecognized sort '$sort' requested" if $sort_by;
}
my $query_cgi;
my $query_type;
- my $limit;
+ my $limit = q{};
my $limit_cgi;
my $limit_desc;
# This is needed otherwise ccl= and &limit won't work together, and
# this happens when selecting a subject on the opac-detail page
my $original_q = $q; # without available part
- $q .= $limit;
+ $q .= $limit if $limit;
return ( undef, $q, $q, "q=ccl=".uri_escape_utf8($q), $original_q, '', '', '', 'ccl' );
}
if ( $query =~ /^cql=/ ) {
if ( $index eq 'nb' ) {
if ( C4::Context->preference("SearchWithISBNVariations") ) {
my @isbns = C4::Koha::GetVariationsOfISBN( $operand );
- $operands[$i] = $operand = '(nb=' . join(' OR nb=', @isbns) . ')';
+ $operands[$i] = $operand = '(' . join( ' OR ', map { 'nb=' . $_ } @isbns ) . ')';
+ $indexes[$i] = $index = 'kw';
+ }
+ }
+ if ( $index eq 'ns' ) {
+ if ( C4::Context->preference("SearchWithISSNVariations") ) {
+ my @issns = C4::Koha::GetVariationsOfISSN( $operand );
+ $operands[$i] = $operand = '(' . join( ' OR ', map { 'ns=' . $_ } @issns ) . ')';
$indexes[$i] = $index = 'kw';
}
}
foreach my $code ( keys %subfieldstosearch ) {
$item->{$code} = $field->subfield( $subfieldstosearch{$code} );
}
+
+ unless ( $item->{itemnumber} ) {
+ warn "MARC item without itemnumber retrieved for biblio ($oldbiblio->{biblionumber})";
+ next;
+ }
+
$item->{description} = $itemtypes{ $item->{itype} }{translated_description} if $item->{itype};
- # OPAC hidden items
+ # OPAC hidden items
if ($is_opac) {
- # hidden because lost
- if ($hidelostitems && $item->{itemlost}) {
+ # hidden based on OpacHiddenItems syspref or because lost
+ my $hi = Koha::Items->search( { itemnumber => $item->{itemnumber} } )
+ ->filter_by_visible_in_opac({ patron => $search_context->{patron} });
+ unless ( $hi->count ) {
push @hiddenitems, $item->{itemnumber};
$hideatopac_count++;
next;
}
- # hidden based on OpacHiddenItems syspref
- my @hi = C4::Items::GetHiddenItemnumbers({ items=> [ $item ], borcat => $search_context->{category} });
- if (scalar @hi) {
- push @hiddenitems, @hi;
- $hideatopac_count++;
- next;
- }
}
my $hbranch = C4::Context->preference('StaffSearchResultsDisplayBranch');
# FIXME: to avoid having the query the database like this, and to make
# the in transit status count as unavailable for search limiting,
# should map transit status to record indexed in Zebra.
- #
- ($transfertwhen, $transfertfrom, $transfertto) = C4::Circulation::GetTransfers($item->{itemnumber});
+
+ my $item_object = Koha::Items->find($item->{itemnumber});
+ my $transfer = defined($item_object) ? $item_object->get_transfer : undef;
+ ( $transfertwhen, $transfertfrom, $transfertto ) =
+ defined($transfer)
+ ? (
+ $transfer->datesent, $transfer->frombranch,
+ $transfer->tobranch
+ )
+ : ( '', '', '' );
$reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber} );
if ( C4::Context->preference('UseRecalls') ) {
if ( Koha::Recalls->search({ item_id => $item->{itemnumber}, status => 'waiting' })->count ) {