From 57394ff026769d28ef6b5d077cb4655adf032936 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Wed, 20 Apr 2005 06:42:56 +0000 Subject: Bug 290513: Move CheckIfVotedConfirmed() out of CGI.pl - Patch by Frédéric Buclin r=wicked a=myk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Bug.pm | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) (limited to 'Bugzilla/Bug.pm') diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 962b1de42..7d93139a1 100755 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -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; -- cgit v1.2.3-24-g4f1b