]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 128422: Fixes serious tree horkage where everyone gets email on all chang...
authormyk%mozilla.org <>
Fri, 1 Mar 2002 21:20:07 +0000 (21:20 +0000)
committermyk%mozilla.org <>
Fri, 1 Mar 2002 21:20:07 +0000 (21:20 +0000)
Fix by Myk Melez <myk@mozilla.org>.
r=gerv@mozilla.org, waiting on second review but checking in now due to severity of bug.

userprefs.cgi

index d86282d08e2162b929b2662ffa17245c787eb07a..fbac113a04cce9f8c6afd96612a3b0f450eb1a46 100755 (executable)
@@ -45,10 +45,12 @@ my $userid;
 # The default email flags leave all email on.
 my $defaultflagstring = "ExcludeSelf~on~";
 
-foreach my $role ("Owner", "Reporter", "QAcontact", "CClist", "Voter") {
-    foreach my $reason ("Removeme", "Comments", "Attachments", "Status", 
-                        "Resolved", "Keywords", "CC", "Other") 
-    {
+my @roles = ("Owner", "Reporter", "QAcontact", "CClist", "Voter");
+my @reasons = ("Removeme", "Comments", "Attachments", "Status", "Resolved", 
+               "Keywords", "CC", "Other");
+
+foreach my $role (@roles) {
+    foreach my $reason (@reasons) {
         $defaultflagstring .= "email$role$reason~on~";
     }
 }
@@ -174,9 +176,15 @@ sub SaveEmail {
         $updateString .= 'ExcludeSelf~';
     }
     
-    foreach my $key (keys %::FORM) {
-        if ($key =~ /email([A-Z]+[a-z]+)([A-Z]+[a-z]*)/) {
-            $updateString .= "~$key~on";    
+    foreach my $role (@roles) {
+        foreach my $reason (@reasons) {
+            # Add this preference to the list without giving it a value,
+            # which is the equivalent of setting the value to "off."
+            $updateString .= "~email$role$reason~";
+            
+            # If the form field for this preference is defined, then we
+            # know the checkbox was checked, so set the value to "on".
+            $updateString .= "on" if defined $::FORM{"email$role$reason"};
         }
     }