From: jocuri%softhome.net <> Date: Fri, 31 Dec 2004 16:01:17 +0000 (+0000) Subject: Patch for bug 275788: Provide a line of code that defines legal query formats for... X-Git-Tag: bugzilla-2.18~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d08b4fc7d70e2e625212e6abeef66b76e81c8ff0;p=thirdparty%2Fbugzilla.git 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. --- diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index 9570a709de..75307a0e32 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; @@ -1260,4 +1262,14 @@ sub getSQL { return $self->{'sql'}; } +# Define if the Query Type passed in is a valid query type that 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 628c731cc4..4a305c1905 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 @@ -423,7 +424,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 f8de9915d7..323c87d534 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; }