From 720b69780c1f62c61f4b36df02d46d8c85c0d30a 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 --- C4/Reserves.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 9d88339ef6..ee1a16936a 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1325,8 +1325,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 ); @@ -1334,7 +1332,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 @@ -1347,7 +1346,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