From 228b1cc1cecee88eb018d46d6b18ea83b0fc2a18 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 21 May 2008 05:45:00 +0000 Subject: [PATCH] * validateIntOrNull() returns null for empty input * NULL options become the defaults if saved (bug 14100) --- includes/SpecialPreferences.php | 2 +- includes/User.php | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/includes/SpecialPreferences.php b/includes/SpecialPreferences.php index 9f01ae2e92..be6d7fb69d 100644 --- a/includes/SpecialPreferences.php +++ b/includes/SpecialPreferences.php @@ -151,7 +151,7 @@ class PreferencesForm { function validateIntOrNull( &$val, $min=0, $max=0x7fffffff ) { $val = trim($val); if($val === '') { - return $val; + return null; } else { return $this->validateInt( $val, $min, $max ); } diff --git a/includes/User.php b/includes/User.php index ca88f5dc0c..1804127679 100644 --- a/includes/User.php +++ b/includes/User.php @@ -1730,9 +1730,16 @@ class User { } // Filter out any newlines that may have passed through input validation. // Newlines are used to separate items in the options blob. - $val = str_replace( "\r\n", "\n", $val ); - $val = str_replace( "\r", "\n", $val ); - $val = str_replace( "\n", " ", $val ); + if( $val ) { + $val = str_replace( "\r\n", "\n", $val ); + $val = str_replace( "\r", "\n", $val ); + $val = str_replace( "\n", " ", $val ); + } + // Explicitly NULL values should refer to defaults + global $wgDefaultUserOptions; + if( is_null($val) && isset($wgDefaultUserOptions[$oname]) ) { + $val = $wgDefaultUserOptions[$oname]; + } $this->mOptions[$oname] = $val; } -- 2.20.1