Bug 191020 - buglist.cgi doesn't always get query names right for filename to save. Patch by gerv; r=bbaetz, a=justdave.

This commit is contained in:
gerv%gerv.net 2003-02-07 08:07:40 +00:00
Родитель 8b73cba208
Коммит c90f937bc3
1 изменённых файлов: 36 добавлений и 16 удалений

Просмотреть файл

@ -141,22 +141,6 @@ if ($::buffer =~ /&cmd-/) {
exit;
}
# Generate a reasonable filename for the user agent to suggest to the user
# when the user saves the bug list. Uses the name of the remembered query
# if available. We have to do this now, even though we return HTTP headers
# at the end, because the fact that there is a remembered query gets
# forgotten in the process of retrieving it.
my @time = localtime(time());
my $date = sprintf "%04d-%02d-%02d", 1900+$time[5],$time[4]+1,$time[3];
my $filename = "bugs-$date.$format->{extension}";
$::FORM{'cmdtype'} ||= "";
if ($::FORM{'cmdtype'} eq 'runnamed') {
$filename = "$::FORM{'namedcmd'}-$date.$format->{extension}";
# Remove white-space from the filename so the user cannot tamper
# with the HTTP headers.
$filename =~ s/\s//;
}
################################################################################
# Utilities
################################################################################
@ -188,6 +172,18 @@ sub LookupNamedQuery {
return $result;
}
sub LookupSeries {
my ($series_id) = @_;
detaint_natural($series_id) || ThrowCodeError("invalid_series_id");
my $dbh = Bugzilla->instance->dbh;
my $result = $dbh->selectrow_array("SELECT query FROM series " .
"WHERE series_id = $series_id");
$result
|| ThrowCodeError("invalid_series_id", {'series_id' => $series_id});
return $result;
}
sub GetQuip {
my $quip;
@ -231,6 +227,9 @@ sub GetGroupsByUserId {
# Command Execution
################################################################################
$::FORM{'cmdtype'} ||= "";
$::FORM{'remaction'} ||= "";
# Backwards-compatibility - the old interface had cmdtype="runnamed" to run
# a named command, and we can't break this because it's in bookmarks.
if ($::FORM{'cmdtype'} eq "runnamed") {
@ -245,6 +244,21 @@ if ($::FORM{'cmdtype'} eq "runnamed") {
# This will be modified, so make a copy.
$params ||= new Bugzilla::CGI($cgi);
# Generate a reasonable filename for the user agent to suggest to the user
# when the user saves the bug list. Uses the name of the remembered query
# if available. We have to do this now, even though we return HTTP headers
# at the end, because the fact that there is a remembered query gets
# forgotten in the process of retrieving it.
my @time = localtime(time());
my $date = sprintf "%04d-%02d-%02d", 1900+$time[5],$time[4]+1,$time[3];
my $filename = "bugs-$date.$format->{extension}";
if ($::FORM{'cmdtype'} eq "dorem" && $::FORM{'remaction'} =~ /^run/) {
$filename = "$::FORM{'namedcmd'}-$date.$format->{extension}";
# Remove white-space from the filename so the user cannot tamper
# with the HTTP headers.
$filename =~ s/\s/_/g;
}
# Take appropriate action based on user's request.
if ($::FORM{'cmdtype'} eq "dorem") {
if ($::FORM{'remaction'} eq "run") {
@ -253,6 +267,12 @@ if ($::FORM{'cmdtype'} eq "dorem") {
$params = new Bugzilla::CGI($::buffer);
$order = $params->param('order') || $order;
}
elsif ($::FORM{'remaction'} eq "runseries") {
$::buffer = LookupSeries($::FORM{"series_id"});
$vars->{'title'} = "Bug List: $::FORM{'namedcmd'}";
$params = new Bugzilla::CGI($::buffer);
$order = $params->param('order') || $order;
}
elsif ($::FORM{'remaction'} eq "load") {
my $url = "query.cgi?" . LookupNamedQuery($::FORM{"namedcmd"});
print "Refresh: 0; URL=$url\n";