Bug 30194: (follow-up) Remove invalid tests
[koha-ffzg.git] / C4 / Search.pm
index 6cf40b6..85a02bf 100644 (file)
@@ -31,6 +31,7 @@ use Koha::ItemTypes;
 use Koha::Libraries;
 use Koha::Logger;
 use Koha::Patrons;
+use Koha::Recalls;
 use Koha::RecordProcessor;
 use URI::Escape;
 use Business::ISBN;
@@ -99,7 +100,7 @@ sub FindDuplicate {
 
         my $titleindex = 'ti,ext';
         my $authorindex = 'au,ext';
-        my $op = 'and';
+        my $op = 'AND';
 
         $result->{title} =~ s /\\//g;
         $result->{title} =~ s /\"//g;
@@ -888,7 +889,7 @@ sub _build_weighted_query {
     my $fuzzy_enabled = C4::Context->preference("QueryFuzzy")        || 0;
     $operand =~ s/"/ /g;    # Bug 7518: searches with quotation marks don't work
 
-    my $weighted_query .= "(rk=(";    # Specifies that we're applying rank
+    my $weighted_query = "(rk=(";    # Specifies that we're applying rank
 
     # Keyword, or, no index specified
     if ( ( $index eq 'kw' ) || ( !$index ) ) {
@@ -1585,7 +1586,7 @@ sub _build_initial_query {
     my $operator = "";
     if ($params->{previous_operand}){
         #If there is a previous operand, add a supplied operator or the default 'and'
-        $operator = ($params->{operator}) ? " ".($params->{operator})." " : ' AND ';
+        $operator = ($params->{operator}) ? ($params->{operator}) : 'AND';
     }
 
     #NOTE: indexes_set is typically set when doing truncation or field weighting
@@ -1593,14 +1594,14 @@ sub _build_initial_query {
 
     #e.g. "kw,wrdl:test"
     #e.g. " and kw,wrdl:test"
-    $params->{query} .= $operator . $operand;
+    $params->{query} .= " " . $operator . " " . $operand;
 
     $params->{query_cgi} .= "&op=".uri_escape_utf8($operator) if $operator;
     $params->{query_cgi} .= "&idx=".uri_escape_utf8($params->{index}) if $params->{index};
     $params->{query_cgi} .= "&q=".uri_escape_utf8($params->{original_operand}) if ( $params->{original_operand} ne '' );
 
     #e.g. " and kw,wrdl: test"
-    $params->{query_desc} .= $operator . ( $params->{index_plus} // q{} ) . " " . ( $params->{original_operand} // q{} );
+    $params->{query_desc} .= " " . $operator . " " . ( $params->{index_plus} // q{} ) . " " . ( $params->{original_operand} // q{} );
 
     $params->{previous_operand} = 1 unless $params->{previous_operand}; #If there is no previous operand, mark this as one
 
@@ -1785,6 +1786,7 @@ sub searchResults {
         my $item_in_transit_count = 0;
         my $item_onhold_count     = 0;
         my $notforloan_count      = 0;
+        my $item_recalled_count   = 0;
         my $items_count           = scalar(@fields);
         my $maxitems_pref = C4::Context->preference('maxItemsinSearchResults');
         my $maxitems = $maxitems_pref ? $maxitems_pref - 1 : 1;
@@ -1804,6 +1806,7 @@ sub searchResults {
             if ($is_opac) {
                 # hidden because lost
                 if ($hidelostitems && $item->{itemlost}) {
+                    push @hiddenitems, $item->{itemnumber};
                     $hideatopac_count++;
                     next;
                 }
@@ -1876,6 +1879,9 @@ sub searchResults {
                 # is item on the reserve shelf?
                 my $reservestatus = '';
 
+                # is item a waiting recall?
+                my $recallstatus = '';
+
                 unless ($item->{withdrawn}
                         || $item->{itemlost}
                         || $item->{damaged}
@@ -1897,6 +1903,11 @@ sub searchResults {
                     #
                     ($transfertwhen, $transfertfrom, $transfertto) = C4::Circulation::GetTransfers($item->{itemnumber});
                     $reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber} );
+                    if ( C4::Context->preference('UseRecalls') ) {
+                        if ( Koha::Recalls->search({ itemnumber => $item->{itemnumber}, status => 'waiting' })->count ) {
+                            $recallstatus = 'Waiting';
+                        }
+                    }
                 }
 
                 # item is withdrawn, lost, damaged, not for loan, reserved or in transit
@@ -1905,6 +1916,7 @@ sub searchResults {
                     || $item->{damaged}
                     || $item->{notforloan}
                     || $reservestatus eq 'Waiting'
+                    || $recallstatus eq 'Waiting'
                     || ($transfertwhen && $transfertwhen ne ''))
                 {
                     $withdrawn_count++        if $item->{withdrawn};
@@ -1912,6 +1924,7 @@ sub searchResults {
                     $itemdamaged_count++     if $item->{damaged};
                     $item_in_transit_count++ if $transfertwhen && $transfertwhen ne '';
                     $item_onhold_count++     if $reservestatus eq 'Waiting';
+                    $item_recalled_count++   if $recallstatus eq 'Waiting';
                     $item->{status} = ($item->{withdrawn}//q{}) . "-" . ($item->{itemlost}//q{}) . "-" . ($item->{damaged}//q{}) . "-" . ($item->{notforloan}//q{});
 
                     $other_count++;
@@ -1921,6 +1934,7 @@ sub searchResults {
                         $other_items->{$key}->{$_} = $item->{$_};
                     }
                     $other_items->{$key}->{intransit} = ( $transfertwhen ne '' ) ? 1 : 0;
+                    $other_items->{$key}->{recalled} = ($recallstatus) ? 1 : 0;
                     $other_items->{$key}->{onhold} = ($reservestatus) ? 1 : 0;
                     $other_items->{$key}->{notforloan} = GetAuthorisedValueDesc('','',$item->{notforloan},'','',$notforloan_authorised_value) if $notforloan_authorised_value and $item->{notforloan};
                     $other_items->{$key}->{count}++ if $item->{$hbranch};
@@ -2014,6 +2028,7 @@ sub searchResults {
         $oldbiblio->{damagedcount}         = $itemdamaged_count;
         $oldbiblio->{intransitcount}       = $item_in_transit_count;
         $oldbiblio->{onholdcount}          = $item_onhold_count;
+        $oldbiblio->{recalledcount}        = $item_recalled_count;
         $oldbiblio->{orderedcount}         = $ordered_count;
         $oldbiblio->{notforloancount}      = $notforloan_count;