diff options
Diffstat (limited to 'buglist.cgi')
-rwxr-xr-x | buglist.cgi | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/buglist.cgi b/buglist.cgi index 6427180e9..5cae83b87 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -395,8 +395,24 @@ if ($::FORM{'keywords'}) { } if (@list) { $query =~ s/where/, keywords where/; - $query .= "and keywords.bug_id = bugs.bug_id and (" . - join(" $::FORM{'keywords_type'} ", @list) . ")\n"; + my $type = $::FORM{'keywords_type'}; + my $notopt = ""; + if ($type eq "nowords") { + # Ought to take advantage of keyword table somehow! ### + my $extra = GetByWordList("bugs.keywords", $::FORM{'keywords'}, + "or"); + $extra =~ s/AND/AND NOT/i; + $query .= $extra; + } else { + $query .= "and keywords.bug_id = bugs.bug_id and $notopt (" . + join(" or ", @list) . ")\n"; + if ($type eq "allwords") { + # This needs to be tuned to take better advantage of the + # keyword table! + $query .= GetByWordList("bugs.keywords", $::FORM{'keywords'}, + "and"); + } + } } } |