diff options
-rw-r--r-- | Bugzilla/Search.pm | 11 | ||||
-rwxr-xr-x | query.cgi | 3 | ||||
-rwxr-xr-x | userprefs.cgi | 18 |
3 files changed, 25 insertions, 7 deletions
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index aaa2a12b9..85f661e30 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -32,6 +32,8 @@ use strict; use vars qw($userid); package Bugzilla::Search; +use base qw(Exporter); +@Bugzilla::Search::EXPORT = qw(IsValidQueryType); use Bugzilla::Config; use Bugzilla::Error; @@ -1436,4 +1438,13 @@ sub ValidateGroupName { return $ret; } +# Validate that the query type is one we can deal with +sub IsValidQueryType +{ + my ($queryType) = @_; + if (grep { $_ eq $queryType } qw(specific advanced)) { + return 1; + } + return 0; +} 1; @@ -30,6 +30,7 @@ use lib "."; require "CGI.pl"; use Bugzilla::Constants; +use Bugzilla::Search; use vars qw( @CheckOptionValues @@ -439,7 +440,7 @@ if (!($cgi->param('query_format') || $cgi->param('format'))) { # Set cookie to current format as default, but only if the format # one that we should remember. -if (grep { $_ eq $vars->{'format'} } qw(specific advanced)) { +if (IsValidQueryType($vars->{'format'})) { $cgi->send_cookie(-name => 'DEFAULTFORMAT', -value => $vars->{'format'}, -expires => "Fri, 01-Jan-2038 00:00:00 GMT"); diff --git a/userprefs.cgi b/userprefs.cgi index f8de9915d..323c87d53 100755 --- a/userprefs.cgi +++ b/userprefs.cgi @@ -27,6 +27,7 @@ use lib qw(.); use Bugzilla; use Bugzilla::Constants; +use Bugzilla::Search; require "CGI.pl"; @@ -304,13 +305,18 @@ sub DoSavedSearches() { my @queries = @{Bugzilla->user->queries}; my @newqueries; foreach my $q (@queries) { - if ($q->{'query'} !~ /query_format=(advanced|specific)/) { - if ($q->{'query'} =~ /query_format=&/) { - $q->{'query'} =~ s/query_format=&/query_format=advanced&/; - } - else { - $q->{'query'} .= '&query_format=advanced'; + if ($q->{'query'} =~ /query_format=([^&]*)/) { + my $format = $1; + if (!IsValidQueryType($format)) { + if ($format eq "") { + $q->{'query'} =~ s/query_format=/query_format=advanced/; + } + else { + $q->{'query'} .= '&query_format=advanced'; + } } + } else { + $q->{'query'} .= '&query_format=advanced'; } push @newqueries, $q; } |