From: miker Date: Wed, 14 Mar 2007 07:16:50 +0000 (+0000) Subject: adding "available" filter to main search methods X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=396160e57c9b930a41929b1ca936575153cb0c34;p=Evergreen.git adding "available" filter to main search methods git-svn-id: svn://svn.open-ils.org/ILS/trunk@7068 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm index 0c675cb509..23fa5214ad 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm @@ -1430,12 +1430,16 @@ sub postfilter_search_multi_class_fts { $limit_clause = "LIMIT $outer_limit"; $offset_clause = "OFFSET $offset" if (defined $offset and int($offset) > 0); - my (@types,@forms,@lang,@aud,@lit_form,@vformats); + my ($avail_filter,@types,@forms,@lang,@aud,@lit_form,@vformats) = (''); my ($t_filter, $f_filter, $v_filter) = ('','',''); my ($a_filter, $l_filter, $lf_filter) = ('','',''); my ($ot_filter, $of_filter, $ov_filter) = ('','',''); my ($oa_filter, $ol_filter, $olf_filter) = ('','',''); + if ($args{available}) { + $avail_filter = ' AND cp.status IN (0,7)'; + } + if (my $a = $args{audience}) { $a = [$a] if (!ref($a)); @aud = @$a; @@ -1740,6 +1744,7 @@ sub postfilter_search_multi_class_fts { $oa_filter $ol_filter $olf_filter + $avail_filter LIMIT 1 ) OR EXISTS ( @@ -1774,6 +1779,7 @@ sub postfilter_search_multi_class_fts { AND ( EXISTS ( SELECT 1 FROM $asset_call_number_table cn, + $asset_copy_table cp, $descendants d, $br_table br WHERE br.id = omrs.source @@ -1781,6 +1787,8 @@ sub postfilter_search_multi_class_fts { AND cn.owning_lib = d.id AND br.deleted IS FALSE AND cn.deleted IS FALSE + AND cp.call_number = cn.id + $avail_filter LIMIT 1 ) OR NOT EXISTS ( @@ -1912,12 +1920,16 @@ sub biblio_search_multi_class_fts { $limit_clause = "LIMIT $outer_limit"; $offset_clause = "OFFSET $offset" if (defined $offset and int($offset) > 0); - my (@types,@forms,@lang,@aud,@lit_form,@vformats); + my ($avail_filter,@types,@forms,@lang,@aud,@lit_form,@vformats) = (''); my ($t_filter, $f_filter, $v_filter) = ('','',''); my ($a_filter, $l_filter, $lf_filter) = ('','',''); my ($ot_filter, $of_filter, $ov_filter) = ('','',''); my ($oa_filter, $ol_filter, $olf_filter) = ('','',''); + if ($args{available}) { + $avail_filter = ' AND cp.status IN (0,7)'; + } + if (my $a = $args{audience}) { $a = [$a] if (!ref($a)); @aud = @$a; @@ -2199,6 +2211,7 @@ sub biblio_search_multi_class_fts { AND d.opac_visible IS TRUE AND cp.deleted IS FALSE AND cn.deleted IS FALSE + $avail_filter LIMIT 1 ) OR src.transcendant IS TRUE @@ -2213,10 +2226,13 @@ sub biblio_search_multi_class_fts { WHERE EXISTS ( SELECT 1 FROM $asset_call_number_table cn, + $asset_copy_table cp, $descendants d WHERE cn.record = s.id AND cn.owning_lib = d.id + AND cp.call_number = cn.id AND cn.deleted IS FALSE + $avail_filter LIMIT 1 ) OR NOT EXISTS (