Bug 199813 - Make all users of ThrowUserError pass $vars in explicitly.
r=gerv a=justdave git-svn-id: svn://10.0.0.236/trunk@140585 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
93
mozilla/webtools/bugzilla/Bugzilla/Error.pm
Normal file
93
mozilla/webtools/bugzilla/Bugzilla/Error.pm
Normal file
@@ -0,0 +1,93 @@
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Bugzilla Bug Tracking System.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape Communications
|
||||
# Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Bradley Baetz <bbaetz@acm.org>
|
||||
|
||||
use strict;
|
||||
|
||||
package Bugzilla::Error;
|
||||
|
||||
use base qw(Exporter);
|
||||
|
||||
@Bugzilla::Error::EXPORT = qw(ThrowUserError);
|
||||
|
||||
sub ThrowUserError {
|
||||
my ($error, $vars, $unlock_tables) = @_;
|
||||
|
||||
$vars ||= {};
|
||||
|
||||
$vars->{error} = $error;
|
||||
|
||||
# Need to do this until User.pm goes in, so that the footer is correct
|
||||
$vars->{user} = $::vars->{user};
|
||||
|
||||
Bugzilla->dbh->do("UNLOCK TABLES") if $unlock_tables;
|
||||
|
||||
# XXX - mod_perl
|
||||
print "Content-type: text/html\n\n" if !$::vars->{'header_done'};
|
||||
|
||||
my $template = Bugzilla->template;
|
||||
$template->process("global/user-error.html.tmpl", $vars)
|
||||
|| &::ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Bugzilla::Error - Error handling utilities for Bugzilla
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Bugzilla::Error;
|
||||
|
||||
ThrowUserError("error_tag",
|
||||
{ foo => 'bar' });
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Various places throughout the Bugzilla codebase need to report errors to the
|
||||
user. The C<Throw*Error> family of functions allow this to be done in a
|
||||
generic and localisable manner.
|
||||
|
||||
=head1 FUNCTIONS
|
||||
|
||||
=over 4
|
||||
|
||||
=item C<ThrowUserError>
|
||||
|
||||
This function takes an error tag as the first argument, and an optional hashref
|
||||
of variables as a second argument. These are used by the
|
||||
I<global/user-error.html.tmpl> template to format the error, using the passed
|
||||
in variables as required.
|
||||
|
||||
An optional third argument may be supplied. If present (and defined), then the
|
||||
error handling code will unlock the database tables. In the long term, this
|
||||
argument will go away, to be replaced by transactional C<rollback> calls. There
|
||||
is no timeframe for doing so, however.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Bugzilla|Bugzilla>
|
||||
@@ -103,8 +103,8 @@ sub init {
|
||||
my $c = trim($params->param('votes'));
|
||||
if ($c ne "") {
|
||||
if ($c !~ /^[0-9]*$/) {
|
||||
$::vars->{'value'} = $c;
|
||||
&::ThrowUserError("illegal_at_least_x_votes");
|
||||
&::ThrowUserError("illegal_at_least_x_votes",
|
||||
{ value => $c });
|
||||
}
|
||||
push(@specialchart, ["votes", "greaterthan", $c - 1]);
|
||||
}
|
||||
@@ -207,8 +207,8 @@ sub init {
|
||||
if (@clist) {
|
||||
push(@specialchart, \@clist);
|
||||
} else {
|
||||
$::vars->{'email'} = $email;
|
||||
&::ThrowUserError("missing_email_type");
|
||||
ThrowUserError("missing_email_type",
|
||||
{ email => $email });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,8 +217,8 @@ sub init {
|
||||
my $c = trim($params->param('changedin'));
|
||||
if ($c ne "") {
|
||||
if ($c !~ /^[0-9]*$/) {
|
||||
$::vars->{'value'} = $c;
|
||||
&::ThrowUserError("illegal_changed_in_last_x_days");
|
||||
&::ThrowUserError("illegal_changed_in_last_x_days",
|
||||
{ value => $c });
|
||||
}
|
||||
push(@specialchart, ["changedin",
|
||||
"lessthan", $c + 1]);
|
||||
@@ -558,8 +558,8 @@ sub init {
|
||||
push(@list, "$table.keywordid = $id");
|
||||
}
|
||||
else {
|
||||
$::vars->{'keyword'} = $v;
|
||||
&::ThrowUserError("unknown_keyword");
|
||||
ThrowUserError("unknown_keyword",
|
||||
{ keyword => $v });
|
||||
}
|
||||
}
|
||||
my $haveawordterm;
|
||||
@@ -992,8 +992,7 @@ sub SqlifyDate {
|
||||
}
|
||||
my $date = str2time($str);
|
||||
if (!defined($date)) {
|
||||
$::vars->{'date'} = $str;
|
||||
&::ThrowUserError("illegal_date");
|
||||
&::ThrowUserError("illegal_date", { date => $str });
|
||||
}
|
||||
return time2str("%Y-%m-%d %H:%M:%S", $date);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user