From 28055c618d39d62ea81e33c3d30cde91eb7117b7 Mon Sep 17 00:00:00 2001 From: "jocuri%softhome.net" <> Date: Fri, 31 Dec 2004 16:00:50 +0000 Subject: Patch for bug 275788: Provide a line of code that defines legal query formats for other scripts to use; patch by Colin S. Ogilvie , r=vladd, a=justdave. --- Bugzilla/Search.pm | 11 +++++++++++ query.cgi | 3 ++- 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; diff --git a/query.cgi b/query.cgi index 6f008e9b6..0faf156cb 100755 --- a/query.cgi +++ b/query.cgi @@ -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; } -- cgit v1.2.3-24-g4f1b