diff options
author | justdave%syndicomm.com <> | 2001-06-02 13:02:13 +0200 |
---|---|---|
committer | justdave%syndicomm.com <> | 2001-06-02 13:02:13 +0200 |
commit | b0aff47d71d587a512673fe78c910024fc675f9d (patch) | |
tree | acd168f006aec0c994e14ffa495171b7cdc94b9b | |
parent | a05fe5024513bf2772682437311bd80b6675fb2d (diff) | |
download | bugzilla-b0aff47d71d587a512673fe78c910024fc675f9d.tar.gz bugzilla-b0aff47d71d587a512673fe78c910024fc675f9d.tar.xz |
Fix for bug 65190: add comparison type "all words as substrings" and "any words as substrings" to the text fields in query.cgi
Patch by Andreas Franke <afranke@ags.uni-sb.de>
r= justdave@syndicomm.com
-rwxr-xr-x | buglist.cgi | 28 | ||||
-rwxr-xr-x | query.cgi | 6 |
2 files changed, 33 insertions, 1 deletions
diff --git a/buglist.cgi b/buglist.cgi index 8bc12b72e..b99afefe9 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -21,6 +21,7 @@ # Contributor(s): Terry Weissman <terry@mozilla.org> # Dan Mosedale <dmose@mozilla.org> # Stephan Niemz <st.n@gmx.net> +# Andreas Franke <afranke@mathweb.org> use diagnostics; use strict; @@ -107,6 +108,21 @@ sub GetByWordList { return \@list; } +# +# support for "any/all/nowordssubstr" comparison type ("words as substrings") +# +sub GetByWordListSubstr { + my ($field, $strs) = (@_); + my @list; + + foreach my $word (split(/[\s,]+/, $strs)) { + if ($word ne "") { + push(@list, "INSTR(LOWER($field), " . lc(SqlQuote($word)) . ")"); + } + } + + return \@list; +} sub Error { @@ -491,6 +507,18 @@ sub GenerateSQL { } $term = join(" OR ", @list); }, + ",anywordssubstr" => sub { + $term = join(" OR ", @{GetByWordListSubstr($ff, $v)}); + }, + ",allwordssubstr" => sub { + $term = join(" AND ", @{GetByWordListSubstr($ff, $v)}); + }, + ",nowordssubstr" => sub { + my @list = @{GetByWordListSubstr($ff, $v)}; + if (@list) { + $term = "NOT (" . join(" OR ", @list) . ")"; + } + }, ",anywords" => sub { $term = join(" OR ", @{GetByWordList($ff, $v)}); }, @@ -703,10 +703,12 @@ sub StringSearch { <td><SELECT NAME=$type> }; if ($default{$type} eq "") { - $default{$type} = "substring"; + $default{$type} = "allwordssubstr"; } foreach my $i (["substring", "case-insensitive substring"], ["casesubstring", "case-sensitive substring"], + ["allwordssubstr", "all words as substrings"], + ["anywordssubstr", "any words as substrings"], ["allwords", "all words"], ["anywords", "any words"], ["regexp", "regular expression"], @@ -780,6 +782,8 @@ my @types = ( ["casesubstring", "contains (case-sensitive) substring"], ["substring", "contains (case-insensitive) substring"], ["notsubstring", "does not contain (case-insensitive) substring"], + ["allwordssubstr", "all words as (case-insensitive) substrings"], + ["anywordssubstr", "any words as (case-insensitive) substrings"], ["regexp", "contains regexp"], ["notregexp", "does not contain regexp"], ["lessthan", "less than"], |