Patch for bug 277013: provides a fix for the SQL error that appears when a user's vote confirms a bug; patch by Frédéric Buclin <LpSolit@netscape.net>, r=wurblzap, a=justdave.
git-svn-id: svn://10.0.0.236/trunk@167420 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
e149a69487
commit
b8a7996c7b
@ -250,6 +250,7 @@ sub CheckIfVotedConfirmed {
|
||||
"FROM bugs, products " .
|
||||
"WHERE bugs.bug_id = $id AND products.id = bugs.product_id");
|
||||
my ($votes, $status, $votestoconfirm, $everconfirmed) = (FetchSQLData());
|
||||
my $ret = 0;
|
||||
if ($votes >= $votestoconfirm && $status eq $::unconfirmedstate) {
|
||||
SendSQL("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1 " .
|
||||
"WHERE bug_id = $id");
|
||||
@ -273,9 +274,10 @@ sub CheckIfVotedConfirmed {
|
||||
|
||||
$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) = @_;
|
||||
|
||||
@ -21,10 +21,12 @@
|
||||
|
||||
[% PROCESS global/variables.none.tmpl %]
|
||||
|
||||
[% h2 = voting_user.login FILTER html %]
|
||||
[% PROCESS global/header.html.tmpl
|
||||
title = "Show Votes"
|
||||
%]
|
||||
[% IF !header_done %]
|
||||
[% h2 = voting_user.login FILTER html %]
|
||||
[% PROCESS global/header.html.tmpl title = "Show Votes" %]
|
||||
[% ELSE %]
|
||||
<hr>
|
||||
[% END %]
|
||||
|
||||
[% canedit = 1 IF voting_user.login == user.login %]
|
||||
|
||||
|
||||
@ -312,8 +312,12 @@ sub record_votes {
|
||||
# for products that only allow one vote per bug). In that case, we still
|
||||
# need to clear the user's votes from the database.
|
||||
my %affected;
|
||||
SendSQL("LOCK TABLES bugs write, votes write, products read, cc read,
|
||||
fielddefs read, user_group_map read, bug_group_map read");
|
||||
SendSQL("LOCK TABLES bugs WRITE, bugs_activity WRITE, votes WRITE,
|
||||
longdescs WRITE, profiles READ, products READ, components READ,
|
||||
cc READ, 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");
|
||||
|
||||
# Take note of, and delete the user's old votes from the database.
|
||||
SendSQL("SELECT bug_id FROM votes WHERE who = $who");
|
||||
@ -330,18 +334,18 @@ sub record_votes {
|
||||
SendSQL("INSERT INTO votes (who, bug_id, vote_count)
|
||||
VALUES ($who, $id, ".$votes{$id}.")");
|
||||
}
|
||||
|
||||
$affected{$id} = 1;
|
||||
}
|
||||
|
||||
# Update the cached values in the bugs table
|
||||
print $cgi->header();
|
||||
foreach my $id (keys %affected) {
|
||||
SendSQL("SELECT sum(vote_count) FROM votes WHERE bug_id = $id");
|
||||
my $v = FetchOneColumn();
|
||||
$v ||= 0;
|
||||
my $v = FetchOneColumn() || 0;
|
||||
SendSQL("UPDATE bugs SET votes = $v, delta_ts=delta_ts
|
||||
WHERE bug_id = $id");
|
||||
CheckIfVotedConfirmed($id, $who);
|
||||
my $confirmed = CheckIfVotedConfirmed($id, $who);
|
||||
$vars->{'header_done'} = 1 if $confirmed;
|
||||
}
|
||||
|
||||
SendSQL("UNLOCK TABLES");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user