From fed65df3c669e1337f187d533e9033a697d6b263 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Thu, 18 Aug 2016 09:52:20 -0400 Subject: [PATCH] LP#1464709: teach QP about is_available statuses We look them up, cache them, and use them for the #available modifier. Signed-off-by: Mike Rylander Signed-off-by: Bill Erickson --- .../Application/Storage/Publisher/metabib.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm index debc865b04..5fea5c7787 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm @@ -2818,6 +2818,14 @@ __PACKAGE__->register_method( } ); +my @available_statuses_cache; +sub available_statuses { + if (!scalar(@available_statuses_cache)) { + @available_statuses_cache = map { $_->id } config::copy_status->search_where({is_available => 't'}); + } + return @available_statuses_cache; +} + sub query_parser_fts { my $self = shift; my $client = shift; @@ -2992,10 +3000,11 @@ sub query_parser_fts { # gather statuses, and then forget those if we have an #available modifier my @statuses; - if (my ($filter) = $query->parse_tree->find_filter('statuses')) { + if ($query->parse_tree->find_modifier('available')) { + @statuses = available_statuses(); + } elsif (my ($filter) = $query->parse_tree->find_filter('statuses')) { @statuses = @{$filter->args} if (@{$filter->args}); } - @statuses = (0,7,12) if ($query->parse_tree->find_modifier('available')); # gather locations -- 2.43.2