From b0361d948216e75bf330f22815f2989378aeb0e7 Mon Sep 17 00:00:00 2001 From: miker Date: Fri, 18 Jul 2008 01:50:29 +0000 Subject: [PATCH] add shelving location filter support git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_2@10064 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/sql/Pg/300.schema.staged_search.sql | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Open-ILS/src/sql/Pg/300.schema.staged_search.sql b/Open-ILS/src/sql/Pg/300.schema.staged_search.sql index 9aca3fbbe6..09513c235f 100644 --- a/Open-ILS/src/sql/Pg/300.schema.staged_search.sql +++ b/Open-ILS/src/sql/Pg/300.schema.staged_search.sql @@ -69,6 +69,7 @@ CREATE OR REPLACE FUNCTION search.staged_fts ( param_depth INT, param_searches TEXT, -- JSON hash, to be turned into a resultset via search.parse_search_args param_statuses INT[], + param_locations INT[], param_audience TEXT[], param_language TEXT[], param_lit_form TEXT[], @@ -438,6 +439,26 @@ BEGIN END IF; + IF param_locations IS NOT NULL AND array_upper(param_locations, 1) > 0 THEN + + PERFORM 1 + FROM asset.call_number cn + JOIN asset.copy cp ON (cp.call_number = cn.id) + WHERE NOT cn.deleted + AND NOT cp.deleted + AND cp.location IN ( SELECT * FROM search.explode_array( param_locations ) ) + AND cn.record IN ( SELECT * FROM search.explode_array( core_result.records ) ) + AND cp.circ_lib IN ( SELECT * FROM search.explode_array( search_org_list ) ) + LIMIT 1; + + IF NOT FOUND THEN + -- RAISE NOTICE ' % were all copy_location-excluded ... ', core_result.records; + excluded_count := excluded_count + 1; + CONTINUE; + END IF; + + END IF; + IF staff IS NULL OR NOT staff THEN PERFORM 1 -- 2.11.0