From 13c5c4d85e8aaf57e511f037cb4e5de32066eebf 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. Signed-off-by: Agustin Moyano Signed-off-by: Katrin Fischer Signed-off-by: Jonathan Druart (cherry picked from commit 720b69780c1f62c61f4b36df02d46d8c85c0d30a) Signed-off-by: Lucas Gass --- C4/Reserves.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index df0acc4c41..d2dd9f0efa 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.39.5