diff options
author | lpsolit%gmail.com <> | 2005-08-23 21:17:16 +0200 |
---|---|---|
committer | lpsolit%gmail.com <> | 2005-08-23 21:17:16 +0200 |
commit | c48c345eb62acb75a46db84f5d6ab53d164d01ef (patch) | |
tree | ce3b13167cb1647aa23d15535678338d37ae795c /editproducts.cgi | |
parent | ec1a877642aca183d748e88a08a63f4568e3d357 (diff) | |
download | bugzilla-c48c345eb62acb75a46db84f5d6ab53d164d01ef.tar.gz bugzilla-c48c345eb62acb75a46db84f5d6ab53d164d01ef.tar.xz |
Bug 303366: Possible locking tables conflict when voting for bugs - Patch by Frédéric Buclin <LpSolit@gmail.com> r=wurblzap a=justdave
Diffstat (limited to 'editproducts.cgi')
-rwxr-xr-x | editproducts.cgi | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/editproducts.cgi b/editproducts.cgi index d6d909360..59ff7bdec 100755 --- a/editproducts.cgi +++ b/editproducts.cgi @@ -1369,16 +1369,28 @@ if ($action eq 'update') { } } # 3. enough votes to confirm - SendSQL("SELECT bug_id FROM bugs " . - "WHERE product_id = $product_id " . - " AND bug_status = 'UNCONFIRMED' " . - " AND votes >= $votestoconfirm"); - if (MoreSQLData()) { + my $bug_list = $dbh->selectcol_arrayref("SELECT bug_id FROM bugs + WHERE product_id = ? + AND bug_status = 'UNCONFIRMED' + AND votes >= ?", + undef, ($product_id, $votestoconfirm)); + if (scalar(@$bug_list)) { print "<br>Checking unconfirmed bugs in this product for any which now have sufficient votes."; } - while (MoreSQLData()) { - # The user id below is used for activity log purposes - CheckIfVotedConfirmed(FetchOneColumn(), Bugzilla->user->id); + my @updated_bugs = (); + foreach my $bug_id (@$bug_list) { + my $confirmed = CheckIfVotedConfirmed($bug_id, $whoid); + push (@updated_bugs, $bug_id) if $confirmed; + } + + $vars->{'type'} = "votes"; + $vars->{'mailrecipients'} = { 'changer' => $whoid }; + $vars->{'header_done'} = 1; + + foreach my $bug_id (@updated_bugs) { + $vars->{'id'} = $bug_id; + $template->process("bug/process/results.html.tmpl", $vars) + || ThrowTemplateError($template->error()); } } |