]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 302511: Remove QuickSearch's dependency on default priority values
authormkanat%bugzilla.org <>
Wed, 20 May 2009 20:55:08 +0000 (20:55 +0000)
committermkanat%bugzilla.org <>
Wed, 20 May 2009 20:55:08 +0000 (20:55 +0000)
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=wurblzap, a=mkanat

Bugzilla/Search/Quicksearch.pm

index 54f6c93664e9e41376bce5c70473156d857350fe..70b5e2f2cc88034c35f1af9dff73531cfc84de78 100644 (file)
@@ -159,6 +159,7 @@ sub quicksearch {
         # It's no alias either, so it's a more complex query.
         my $legal_statuses = get_legal_field_values('bug_status');
         my $legal_resolutions = get_legal_field_values('resolution');
+        my $legal_priorities = get_legal_field_values('priority');
 
         # Globally translate " AND ", " OR ", " NOT " to space, pipe, dash.
         $searchstring =~ s/\s+AND\s+/ /g;
@@ -313,9 +314,24 @@ sub quicksearch {
                                          $word, $negate);
                             }
                             # Priority
-                            elsif ($word =~ m/^[pP]([1-5](-[1-5])?)$/) {
-                                addChart('priority', 'regexp',
-                                         "[$1]", $negate);
+                            elsif (grep { lc($_) eq lc($word) } 
+                                        @$legal_priorities) 
+                            {
+                                addChart('priority', 'equals', $word, $negate);
+                            }
+                            # P1-5 Syntax
+                            elsif ($word =~ m/^P(\d+)(?:-(\d+))?$/i) {
+                                my $start = $1 - 1;
+                                $start = 0 if $start < 0;
+                                my $end = $2 - 1;
+                                $end = scalar(@$legal_priorities) - 1
+                                    if $end > (scalar @$legal_priorities - 1);
+                                my $prios = $legal_priorities->[$start];
+                                if ($end) {
+                                    $prios = join(',', @$legal_priorities[$start..$end])
+                                }
+                                addChart('priority', 'anyexact', $prios, 
+                                         $negate);
                             }
                             # Severity
                             elsif (grep({lc($word) eq substr($_, 0, 3)}