зеркало из https://github.com/mozilla/gecko-dev.git
Bug 290513: Move CheckIfVotedConfirmed() out of CGI.pl - Patch by Fr�d�ric Buclin <LpSolit@gmail.com> r=wicked a=myk
This commit is contained in:
Родитель
b39659f690
Коммит
6becb0d488
|
@ -51,7 +51,7 @@ use base qw(Exporter);
|
|||
@Bugzilla::Bug::EXPORT = qw(
|
||||
AppendComment ValidateComment
|
||||
bug_alias_to_id
|
||||
RemoveVotes
|
||||
RemoveVotes CheckIfVotedConfirmed
|
||||
);
|
||||
|
||||
use constant MAX_COMMENT_LENGTH => 65535;
|
||||
|
@ -927,6 +927,61 @@ sub RemoveVotes {
|
|||
}
|
||||
}
|
||||
|
||||
# If a user votes for a bug, or the number of votes required to
|
||||
# confirm a bug has been reduced, check if the bug is now confirmed.
|
||||
sub CheckIfVotedConfirmed {
|
||||
my ($id, $who) = (@_);
|
||||
my $dbh = Bugzilla->dbh;
|
||||
|
||||
my ($votes, $status, $everconfirmed, $votestoconfirm, $timestamp) =
|
||||
$dbh->selectrow_array("SELECT votes, bug_status, everconfirmed, " .
|
||||
" votestoconfirm, NOW() " .
|
||||
"FROM bugs INNER JOIN products " .
|
||||
" ON products.id = bugs.product_id " .
|
||||
"WHERE bugs.bug_id = ?",
|
||||
undef, $id);
|
||||
|
||||
my $ret = 0;
|
||||
if ($votes >= $votestoconfirm && !$everconfirmed) {
|
||||
if ($status eq 'UNCONFIRMED') {
|
||||
my $fieldid = &::GetFieldID("bug_status");
|
||||
$dbh->do("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1, " .
|
||||
"delta_ts = ? WHERE bug_id = ?",
|
||||
undef, ($timestamp, $id));
|
||||
$dbh->do("INSERT INTO bugs_activity " .
|
||||
"(bug_id, who, bug_when, fieldid, removed, added) " .
|
||||
"VALUES (?, ?, ?, ?, ?, ?)",
|
||||
undef, ($id, $who, $timestamp, $fieldid, 'UNCONFIRMED', 'NEW'));
|
||||
}
|
||||
else {
|
||||
$dbh->do("UPDATE bugs SET everconfirmed = 1, delta_ts = ? " .
|
||||
"WHERE bug_id = ?", undef, ($timestamp, $id));
|
||||
}
|
||||
|
||||
my $fieldid = &::GetFieldID("everconfirmed");
|
||||
$dbh->do("INSERT INTO bugs_activity " .
|
||||
"(bug_id, who, bug_when, fieldid, removed, added) " .
|
||||
"VALUES (?, ?, ?, ?, ?, ?)",
|
||||
undef, ($id, $who, $timestamp, $fieldid, '0', '1'));
|
||||
|
||||
AppendComment($id, &::DBID_to_name($who),
|
||||
"*** This bug has been confirmed by popular vote. ***",
|
||||
0, $timestamp);
|
||||
|
||||
my $template = Bugzilla->template;
|
||||
my $vars = $::vars;
|
||||
|
||||
$vars->{'type'} = "votes";
|
||||
$vars->{'id'} = $id;
|
||||
$vars->{'mailrecipients'} = { 'changer' => $who };
|
||||
|
||||
$template->process("bug/process/results.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$ret = 1;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
sub AUTOLOAD {
|
||||
use vars qw($AUTOLOAD);
|
||||
my $attr = $AUTOLOAD;
|
||||
|
|
|
@ -211,45 +211,6 @@ sub PutFooter {
|
|||
|| ThrowTemplateError($::template->error());
|
||||
}
|
||||
|
||||
sub CheckIfVotedConfirmed {
|
||||
my ($id, $who) = (@_);
|
||||
PushGlobalSQLState();
|
||||
SendSQL("SELECT bugs.votes, bugs.bug_status, products.votestoconfirm, " .
|
||||
" bugs.everconfirmed, NOW() " .
|
||||
"FROM bugs INNER JOIN products ON products.id = bugs.product_id " .
|
||||
"WHERE bugs.bug_id = $id");
|
||||
my ($votes, $status, $votestoconfirm, $everconfirmed, $timestamp) = (FetchSQLData());
|
||||
my $sql_timestamp = SqlQuote($timestamp);
|
||||
my $ret = 0;
|
||||
if ($votes >= $votestoconfirm && $status eq 'UNCONFIRMED') {
|
||||
SendSQL("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1, " .
|
||||
"delta_ts = $sql_timestamp WHERE bug_id = $id");
|
||||
my $fieldid = GetFieldID("bug_status");
|
||||
SendSQL("INSERT INTO bugs_activity " .
|
||||
"(bug_id, who, bug_when, fieldid, removed, added) VALUES " .
|
||||
"($id, $who, $sql_timestamp, $fieldid, 'UNCONFIRMED', 'NEW')");
|
||||
if (!$everconfirmed) {
|
||||
$fieldid = GetFieldID("everconfirmed");
|
||||
SendSQL("INSERT INTO bugs_activity " .
|
||||
"(bug_id, who, bug_when, fieldid, removed, added) VALUES " .
|
||||
"($id, $who, $sql_timestamp, $fieldid, '0', '1')");
|
||||
}
|
||||
|
||||
AppendComment($id, DBID_to_name($who),
|
||||
"*** This bug has been confirmed by popular vote. ***",
|
||||
0, $timestamp);
|
||||
|
||||
$vars->{'type'} = "votes";
|
||||
$vars->{'id'} = $id;
|
||||
$vars->{'mailrecipients'} = { 'changer' => $who };
|
||||
|
||||
$template->process("bug/process/results.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$ret = 1;
|
||||
}
|
||||
PopGlobalSQLState();
|
||||
return $ret;
|
||||
}
|
||||
sub LogActivityEntry {
|
||||
my ($i,$col,$removed,$added,$whoid,$timestamp) = @_;
|
||||
# in the case of CCs, deps, and keywords, there's a possibility that someone
|
||||
|
|
|
@ -28,6 +28,7 @@ use lib ".";
|
|||
|
||||
use Bugzilla;
|
||||
use Bugzilla::Constants;
|
||||
use Bugzilla::Bug;
|
||||
|
||||
require "CGI.pl";
|
||||
|
||||
|
@ -323,7 +324,8 @@ sub record_votes {
|
|||
'dependencies READ', 'groups READ', 'fielddefs READ',
|
||||
'namedqueries READ', 'whine_queries READ', 'watch READ',
|
||||
'profiles AS watchers READ', 'profiles AS watched READ',
|
||||
'user_group_map READ', 'bug_group_map READ');
|
||||
'user_group_map READ', 'bug_group_map READ',
|
||||
'email_setting READ');
|
||||
|
||||
# Take note of, and delete the user's old votes from the database.
|
||||
SendSQL("SELECT bug_id FROM votes WHERE who = $who");
|
||||
|
|
Загрузка…
Ссылка в новой задаче