use C4::Dates qw(format_date);
use C4::XSLT;
use C4::Branch;
+use C4::Reserves; # CheckReserves
use C4::Debug;
use YAML;
use URI::Escape;
'biblionumber',
'bio',
'biography',
- 'callnum',
+ 'callnum',
'cfn',
'Chronological-subdivision',
'cn-bib-source',
'Title-uniform-seealso',
'totalissues',
'yr',
-
+
# items indexes
'acqsource',
'barcode',
'holdingbranch',
'homebranch',
'issues',
+ 'item',
'itemnumber',
'itype',
'Local-classification',
'stack',
'uri',
'withdrawn',
-
+
# subject related
);
-
+
return \@indexes;
}
) = ( 0, 0, 0, 0, 0 );
}
-
+
if(not $index){
$index = 'kw';
}
-
+
# Set default structure attribute (word list)
my $struct_attr;
unless ( $indexes_set || !$index || $index =~ /(st-|phr|ext|wrdl)/ ) {
if ($auto_truncation){
unless ( $index =~ /(st-|phr|ext)/ ) {
#FIXME only valid with LTR scripts
- $operand=join(" ",map{
+ $operand=join(" ",map{
(index($_,"*")>0?"$_":"$_*")
}split (/\s+/,$operand));
warn $operand if $DEBUG;
# Normalize the query and limit strings
# This is flawed , means we can't search anything with : in it
# if user wants to do ccl or cql, start the query with that
- $query =~ s/:/=/g;
+# $query =~ s/:/=/g;
+ $query =~ s/(?<=(ti|au|pb|su|an|kw|mc)):/=/g;
+ $query =~ s/(?<=rtrn):/=/g;
$limit =~ s/:/=/g;
for ( $query, $query_desc, $limit, $limit_desc ) {
s/ / /g; # remove extra spaces
my $itemdamaged_count = 0;
my $item_in_transit_count = 0;
my $can_place_holds = 0;
+ my $item_onhold_count = 0;
my $items_count = scalar(@fields);
my $maxitems =
( C4::Context->preference('maxItemsinSearchResults') )
my $transfertwhen = '';
my ($transfertfrom, $transfertto);
+ # is item on the reserve shelf?
+ my $reservestatus = 0;
+ my $reserveitem;
+
unless ($item->{wthdrawn}
|| $item->{itemlost}
|| $item->{damaged}
# should map transit status to record indexed in Zebra.
#
($transfertwhen, $transfertfrom, $transfertto) = C4::Circulation::GetTransfers($item->{itemnumber});
+ ($reservestatus, $reserveitem) = C4::Reserves::CheckReserves($item->{itemnumber});
}
# item is withdrawn, lost or damaged
|| $item->{itemlost}
|| $item->{damaged}
|| $item->{notforloan}
+ || $reservestatus eq 'Waiting'
|| ($transfertwhen ne ''))
{
$wthdrawn_count++ if $item->{wthdrawn};
$itemlost_count++ if $item->{itemlost};
$itemdamaged_count++ if $item->{damaged};
$item_in_transit_count++ if $transfertwhen ne '';
+ $item_onhold_count++ if $reservestatus eq 'Waiting';
$item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan};
$other_count++;
$other_items->{$key}->{$_} = $item->{$_};
}
$other_items->{$key}->{intransit} = ($transfertwhen ne '') ? 1 : 0;
+ $other_items->{$key}->{onhold} = ($reservestatus) ? 1 : 0;
$other_items->{$key}->{notforloan} = GetAuthorisedValueDesc('','',$item->{notforloan},'','',$notforloan_authorised_value) if $notforloan_authorised_value;
$other_items->{$key}->{count}++ if $item->{$hbranch};
$other_items->{$key}->{location} = $shelflocations->{ $item->{location} };
}
# XSLT processing of some stuff
+ use C4::Charset;
+ SetUTF8Flag($marcrecord);
+ $debug && warn $marcrecord->as_formatted;
if (C4::Context->preference("XSLTResultsDisplay") && !$scan) {
$oldbiblio->{XSLTResultsRecord} = XSLTParse4Display(
$oldbiblio->{biblionumber}, $marcrecord, 'Results' );
$oldbiblio->{itemlostcount} = $itemlost_count;
$oldbiblio->{damagedcount} = $itemdamaged_count;
$oldbiblio->{intransitcount} = $item_in_transit_count;
+ $oldbiblio->{onholdcount} = $item_onhold_count;
$oldbiblio->{orderedcount} = $ordered_count;
$oldbiblio->{isbn} =~
s/-//g; # deleting - in isbn to enable amazon content
=item C<BUGS>
* I had to add this to Search.pm (instead of the logical Biblio.pm) because of a circular dependency (this sub uses SimpleSearch, and Search.pm uses Biblio.pm)
+
=back
=cut