# we use IsAlpha unicode definition, to deal correctly with diacritics.
# otherwise, a French word like "leçon" woudl be split into "le" "çon", "le"
# is a stopword, we'd get "çon" and wouldn't find anything...
- foreach ( keys %{ C4::Context->stopwords } ) {
- next if ( $_ =~ /(and|or|not)/ ); # don't remove operators
- if ( $operand =~
- /(\P{IsAlpha}$_\P{IsAlpha}|^$_\P{IsAlpha}|\P{IsAlpha}$_$|^$_$)/ )
- {
- $operand =~ s/\P{IsAlpha}$_\P{IsAlpha}/ /gi;
- $operand =~ s/^$_\P{IsAlpha}/ /gi;
- $operand =~ s/\P{IsAlpha}$_$/ /gi;
- $operand =~ s/$1//gi;
- push @stopwords_removed, $_;
- }
- }
- }
+ foreach ( keys %{ C4::Context->stopwords } ) {
+ next if ( $_ =~ /(and|or|not)/ ); # don't remove operators
+ if ( my ($matched) = ($operand =~
+ /(\P{IsAlnum}\Q$_\E\P{IsAlnum}|^\Q$_\E\P{IsAlnum}|\P{IsAlnum}\Q$_\E$|^\Q$_\E$)/gi) )
+ {
+ $operand =~ s/\Q$matched\E/ /gi;
+ push @stopwords_removed, $_;
+ }
+ }
+ }
return ( $operand, \@stopwords_removed );
}
# Some helpful index variants
my $index_plus = $index . $struct_attr . ":" if $index;
my $index_plus_comma = $index . $struct_attr . "," if $index;
- if ($auto_truncation){
-# FIXME Auto Truncation is only valid for LTR languages
-# use C4::Output;
-# use C4::Languages qw(regex_lang_subtags get_bidi);
-# $lang = $query->cookie('KohaOpacLanguage') if (defined $query && $query->cookie('KohaOpacLanguage'));
-# my $current_lang = regex_lang_subtags($lang);
-# my $bidi;
-# $bidi = get_bidi($current_lang->{script}) if $current_lang->{script};
- $index_plus_comma .= "rtrn:";
- }
# Remove Stopwords
if ($remove_stopwords) {
if ( $stopwords_removed && $DEBUG );
}
+ if ($auto_truncation){
+ #FIXME only valid with LTR scripts
+ $operand=join(" ",map{
+ "$_*"
+ }split (/\s+/,$operand));
+ warn $operand if $DEBUG;
+ }
+
# Detect Truncation
my $truncated_operand;
my( $nontruncated, $righttruncated, $lefttruncated,
elsif ($item->{$otherbranch}) { # Last resort
$item->{'branchname'} = $branches{$item->{$otherbranch}};
}
-
+
+ ($item->{'reserved'}) = C4::Reserves::CheckReserves($item->{itemnumber});
+
my $prefix = $item->{$hbranch} . '--' . $item->{location} . $item->{itype} . $item->{itemcallnumber};
# For each grouping of items (onloan, available, unavailable), we build a key to store relevant info about that item
- if ( $item->{onloan} ) {
+ if ( $item->{onloan} or $item->{reserved} ) {
$onloan_count++;
my $key = $prefix . $item->{onloan} . $item->{barcode};
$onloan_items->{$key}->{due_date} = format_date($item->{onloan});
|| $item->{itemlost}
|| $item->{damaged}
|| $item->{notforloan}
+ || $item->{reserved}
|| ($transfertwhen ne ''))
{
$wthdrawn_count++ if $item->{wthdrawn};