From a29a93ad5be63f8dff1b9696113cd18f8a713a87 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 11 Sep 2020 15:23:02 +0000 Subject: [PATCH] Bug 25375: (QA follow-up) Count available items rather than iterating --- Koha/SearchEngine/Elasticsearch.pm | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm index 3583172045..55d67675b2 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -710,21 +710,16 @@ sub marc_records_to_documents { my ($tag, $code) = GetMarcFromKohaField('biblio.biblionumber'); my $field = $record->field($tag); my $biblionumber = $field->is_control_field ? $field->data : $field->subfield($code); - my $biblio = Koha::Biblios->find($biblionumber); - my $items = $biblio->items; - my $available = 0; - while (my $item = $items->next) { - next if $item->onloan; - next if $item->notforloan; - next if $item->withdrawn; - next if $item->itemlost; - next if $item->damaged; - - $available = 1; - last; - } - - $record_document->{available} = $available ? \1 : \0; + my $avail_items = Koha::Items->search({ + biblionumber => $biblionumber, + onloan => undef, + notforloan => 0, + withdrawn => 0, + itemlost => 0, + damaged => 0 + })->count; + + $record_document->{available} = $avail_items ? \1 : \0; } push @record_documents, $record_document; -- 2.11.0