]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 128437: correctly display default values for new preferences on the ...
authormyk%mozilla.org <>
Fri, 1 Mar 2002 21:59:59 +0000 (21:59 +0000)
committermyk%mozilla.org <>
Fri, 1 Mar 2002 21:59:59 +0000 (21:59 +0000)
Fix by Myk Melez <myk@mozilla.org>.
r=jake,justdave

userprefs.cgi

index fbac113a04cce9f8c6afd96612a3b0f450eb1a46..301b90b1e9e3dfc9313f4c1f0f7ded8e32319a41 100755 (executable)
@@ -141,28 +141,33 @@ sub DoEmail {
     # warnings. Any suitably large number would do.
     my %emailflags = split(/~/, $flagstring, 255);
 
-    $vars->{'excludeself'} = 0;
-
+    # Determine the value of the "excludeself" global email preference.
+    # Note that the value of "excludeself" is assumed to be off if the
+    # preference does not exist in the user's list, unlike other 
+    # preferences whose value is assumed to be on if they do not exist.
+    if (exists($emailflags{'excludeself'}) 
+        && $emailflags{'excludeself'} eq 'on')
+    {
+        $vars->{'excludeself'} = 1;
+    }
+    else {
+        $vars->{'excludeself'} = 0;
+    }
+    
     # Parse the info into a hash of hashes; the first hash keyed by role,
-    # the second by reason, and the value being 1 or 0 (undef).
-    foreach my $key (keys %emailflags) {
-        # ExcludeSelf is special.
-        if ($key eq 'ExcludeSelf' && $emailflags{$key} eq 'on') {
-            $vars->{'excludeself'} = 1;
-            next;
-        }
-
-        # All other keys match this regexp.
-        $key =~ /email([A-Z]+[a-z]+)([A-Z]+[a-z]*)/;
-        
-        # Create a new hash if we don't have one...
-        if (!defined($vars->{$1})) {
-            $vars->{$1} = {};
+    # the second by reason, and the value being 1 or 0 for (on or off).
+    # Preferences not existing in the user's list are assumed to be on.
+    foreach my $role (@roles) {
+        $vars->{$role} = {};
+        foreach my $reason (@reasons) {
+            my $key = "email$role$reason";
+            if (!exists($emailflags{$key}) || $emailflags{$key} eq 'on') {
+                $vars->{$role}{$reason} = 1;
+            }
+            else {
+                $vars->{$role}{$reason} = 0;
+            }
         }
-        
-        if ($emailflags{$key} eq "on") {
-            $vars->{$1}{$2} = 1;
-        }            
     }
 }