summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--defparams.pl12
-rw-r--r--globals.pl43
2 files changed, 40 insertions, 15 deletions
diff --git a/defparams.pl b/defparams.pl
index 418f56cae..46a00b78f 100644
--- a/defparams.pl
+++ b/defparams.pl
@@ -555,17 +555,19 @@ DefParam("emailsuffix",
DefParam("voteremovedmail",
-q{This is a mail message to send to anyone who gets a vote removed from a bug for any reason. %to% gets replaced by a comma-separated list of people who used to be voting for this bug. %bugid% gets replaced by the bug number. %reason% gets replaced by a short reason describing why the vote was removed. %count% is how many votes got removed.%<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).},
+q{This is a mail message to send to anyone who gets a vote removed from a bug for any reason. %to% gets replaced by the person who used to be voting for this bug. %bugid% gets replaced by the bug number. %reason% gets replaced by a short reason describing why the vote(s) were removed. %votesremoved%, %votesold% and %votesnew% is the number of votes removed, before and after respectively. %votesremovedtext%, %votesoldtext% and %votesnewtext% are these as sentences, eg "You had 2 votes on this bug." %count% is also supported for backwards compatibility. %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).},
"l",
"From: bugzilla-daemon
To: %to%
-Subject: [Bug %bugid%] Your vote has been removed from this bug
+Subject: [Bug %bugid%] Some or all of your votes have been removed.
-You used to have a vote on bug %bugid%, but it has been removed.
+Some or all of your votes have been removed from bug %bugid%.
-Reason: %reason%
+%votesoldtext%
+
+%votesnewtext%
-Votes removed: %count%
+Reason: %reason%
%urlbase%show_bug.cgi?id=%bugid%
");
diff --git a/globals.pl b/globals.pl
index a3ea97c40..f4dc31419 100644
--- a/globals.pl
+++ b/globals.pl
@@ -1195,33 +1195,45 @@ sub RemoveVotes {
$whopart);
my @list;
while (MoreSQLData()) {
- my ($name, $userid, $count, $votesperuser, $maxvotesperbug) = (FetchSQLData());
- push(@list, [$name, $userid, $count, $votesperuser, $maxvotesperbug]);
+ my ($name, $userid, $oldvotes, $votesperuser, $maxvotesperbug) = (FetchSQLData());
+ push(@list, [$name, $userid, $oldvotes, $votesperuser, $maxvotesperbug]);
}
if (0 < @list) {
foreach my $ref (@list) {
- my ($name, $userid, $count, $votesperuser, $maxvotesperbug) = (@$ref);
+ my ($name, $userid, $oldvotes, $votesperuser, $maxvotesperbug) = (@$ref);
+ my $s;
+
+ $maxvotesperbug = $votesperuser if ($votesperuser < $maxvotesperbug);
# If this product allows voting and the user's votes are in
# the acceptable range, then don't do anything.
- next if $votesperuser && $count <= $maxvotesperbug;
+ next if $votesperuser && $oldvotes <= $maxvotesperbug;
# If the user has more votes on this bug than this product
# allows, then reduce the number of votes so it fits
my $newvotes = $votesperuser ? $maxvotesperbug : 0;
+
+ my $removedvotes = $oldvotes - $newvotes;
+
+ $s = $oldvotes == 1 ? "" : "s";
+ my $oldvotestext = "You had $oldvotes vote$s on this bug.";
+
+ $s = $removedvotes == 1 ? "" : "s";
+ my $removedvotestext = "You had $removedvotes vote$s removed from this bug.";
+
+ my $newvotestext;
if ($newvotes) {
SendSQL("UPDATE votes SET count = $newvotes " .
"WHERE bug_id = $id AND who = $userid");
- my $s = $newvotes == 1 ? "" : "s";
- $count = ($count - $newvotes) .
- "\n You still have $newvotes vote$s on this bug";
+ $s = $newvotes == 1 ? "" : "s";
+ $newvotestext = "You still have $newvotes vote$s on this bug."
} else {
SendSQL("DELETE FROM votes WHERE bug_id = $id AND who = $userid");
- $count = "$count\n You have no more votes remaining on this bug";
+ $newvotestext = "You have no more votes remaining on this bug.";
}
# Notice that we did not make sure that the user fit within the $votesperuser
- # range. This is considered to be an acceptable alternative to loosing votes
+ # range. This is considered to be an acceptable alternative to losing votes
# during product moves. Then next time the user attempts to change their votes,
# they will be forced to fit within the $votesperuser limit.
@@ -1233,10 +1245,21 @@ sub RemoveVotes {
}
if (open(SENDMAIL, "|/usr/lib/sendmail $sendmailparm -t")) {
my %substs;
+
$substs{"to"} = $name;
$substs{"bugid"} = $id;
$substs{"reason"} = $reason;
- $substs{"count"} = $count;
+
+ $substs{"votesremoved"} = $removedvotes;
+ $substs{"votesold"} = $oldvotes;
+ $substs{"votesnew"} = $newvotes;
+
+ $substs{"votesremovedtext"} = $removedvotestext;
+ $substs{"votesoldtext"} = $oldvotestext;
+ $substs{"votesnewtext"} = $newvotestext;
+
+ $substs{"count"} = $removedvotes . "\n " . $newvotestext;
+
my $msg = PerformSubsts(Param("voteremovedmail"),
\%substs);
print SENDMAIL $msg;