From 26f2c271d3b36972caf9cac689c586d05f5084a3 Mon Sep 17 00:00:00 2001 From: Andrew Nugged Date: Fri, 17 Jul 2020 14:59:19 +0300 Subject: [PATCH] Bug 24683: Optimize loop in ItemsAnyAvailableAndNotRestricted Add cut-off shortcut (return from inside the loop) when first "Any Available And Not Restricted" item found, because one is enough for "Any". Testing: no change visible for code behavior/results, it is just faster because won't loop over the whole set. --- C4/Reserves.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 9054e4fddb..4ddd443959 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1322,8 +1322,6 @@ sub ItemsAnyAvailableAndNotRestricted { my @items = Koha::Items->search( { biblionumber => $param->{biblionumber} } ); - my $any_available = 0; - foreach my $i (@items) { my $reserves_control_branch = GetReservesControlBranch( $i->unblessed(), $param->{patron}->unblessed ); @@ -1331,7 +1329,8 @@ sub ItemsAnyAvailableAndNotRestricted { C4::Circulation::GetBranchItemRule( $reserves_control_branch, $i->itype ); my $item_library = Koha::Libraries->find( { branchcode => $i->homebranch } ); - $any_available = 1 + # we can return (end the loop) when first one found: + return 1 unless $i->itemlost || $i->notforloan > 0 || $i->withdrawn @@ -1344,7 +1343,7 @@ sub ItemsAnyAvailableAndNotRestricted { || $branchitemrule->{holdallowed} == 3 && ! $item_library->validate_hold_sibling( { branchcode => $param->{patron}->branchcode } ); } - return $any_available; + return 0; } =head2 AlterPriority -- 2.17.1