Index: trunk/extensions/Configure/Configure.obj.php
===================================================================
--- trunk/extensions/Configure/Configure.obj.php (revision 44067)
+++ trunk/extensions/Configure/Configure.obj.php (revision 44068)
@@ -89,6 +89,15 @@
// Include files before so that customized settings won't be overriden
// by the default ones
$this->includeFiles();
+
+ ## Snapshot current settings before overriding.
+ ## ialex tells me this weird contraption will work
+ $allSettings = array_keys( ConfigurationSettings::singleton( CONF_SETTINGS_BOTH )->getAllSettings() );
+
+ foreach( $allSettings as $setting ) {
+ if (isset($GLOBALS[$setting]))
+ $this->defaults[$setting] = $GLOBALS[$setting];
+ }
list( $site, $lang ) = $this->siteFromDB( $this->mWiki );
$rewrites = array( 'wiki' => $this->mWiki, 'site' => $site, 'lang' => $lang );
@@ -166,22 +175,13 @@
}
/**
- * Get the defalut values for all settings
- * Very, very hacky...
+ * Get the default values for all settings
+ * Works by recording any overridden values when extracting globals.
*
* @return array
*/
public function getDefaults() {
- if ( count( $this->mDefaults ) )
- return $this->mDefaults;
-
- global $IP;
- require( "$IP/includes/DefaultSettings.php" );
- foreach ( get_defined_vars() as $name => $var ) {
- if ( substr( $name, 0, 2 ) == 'wg' && $name != 'wgConf' )
- $this->mDefaults[$name] = $var;
- }
- return $this->mDefaults;
+ return $this->defaults;
}
/**
Index: trunk/extensions/Configure/Configure.page.php
===================================================================
--- trunk/extensions/Configure/Configure.page.php (revision 44067)
+++ trunk/extensions/Configure/Configure.page.php (revision 44068)
@@ -119,10 +119,17 @@
* @return mixed value of $setting
*/
protected function getSettingValue( $setting ) {
+ static $defaults;
+
+ if (!$defaults) {
+ global $wgConf;
+ $defaults = $wgConf->getDefaultsForWiki( $this->mWiki );
+ }
+
if ( isset( $this->conf[$setting] ) ) {
return $this->conf[$setting];
} else {
- return isset( $GLOBALS[$setting] ) ? $GLOBALS[$setting] : null;
+ return isset( $defaults[$setting] ) ? $defaults[$setting] : null;
}
}
@@ -439,7 +446,7 @@
$arrType = $this->getArrayType( $name );
switch( $arrType ) {
case 'simple':
- $text = $wgRequest->getText( 'wp' . $name );
+ $text = trim($wgRequest->getText( 'wp' . $name ));
if ( $text == '' )
$arr = array();
else
@@ -486,7 +493,7 @@
global $wgContLang;
$arr = array();
foreach ( $wgContLang->getNamespaces() as $ns => $unused ) {
- $arr[$ns] = $wgRequest->getVal( 'wp' . $name . '-ns' . strval( $ns ) );
+ $arr[$ns] = trim( $wgRequest->getVal( 'wp' . $name . '-ns' . strval( $ns ) ) );
}
$settings[$name] = $arr;
break;
@@ -505,7 +512,7 @@
foreach ( $wgContLang->getNamespaces() as $ns => $unused ) {
if ( $ns < 0 )
continue;
- $text = $wgRequest->getText( 'wp' . $name . '-ns' . strval( $ns ) );
+ $text = trim( $wgRequest->getText( 'wp' . $name . '-ns' . strval( $ns ) ) );
if ( $text == '' )
$nsProtection = array();
else
@@ -518,7 +525,7 @@
case 'group-array':
$all = array();
if ( isset( $_REQUEST['wp' . $name . '-vals'] ) ) {
- $iter = explode( "\n", $_REQUEST['wp' . $name . '-vals'] );
+ $iter = explode( "\n", trim($wgRequest->getText( 'wp' . $name . '-vals' ) ) );
foreach ( $iter as &$group ) {
// Our own Sanitizer::unescapeId() :)
$group = urldecode( str_replace( array( '.', "\r" ), array( '%', '' ),
@@ -556,7 +563,7 @@
case 'text':
case 'lang':
case 'image-url':
- $settings[$name] = $wgRequest->getVal( 'wp' . $name );
+ $settings[$name] = trim( $wgRequest->getVal( 'wp' . $name ) );
break;
case 'int':
$settings[$name] = $wgRequest->getInt( 'wp' . $name );
@@ -602,6 +609,15 @@
else
return $val;
}
+
+ /** Recursive doohicky for normalising variables so we can compare them. */
+ protected static function filterVar( $var ) {
+ if (is_array($var)) {
+ return array_filter( array_map( array( __CLASS__, 'filterVar' ), $var ) );
+ }
+
+ return $var;
+ }
/**
* Removes the defaults values from settings
@@ -613,8 +629,16 @@
global $wgConf;
$defaultValues = $wgConf->getDefaultsForWiki( $this->mWiki );
foreach ( $defaultValues as $name => $default ) {
+ ## Normalise the two, to avoid false "changes"
+ if (is_array($default))
+ $default = self::filterVar( $default );
+
if ( isset( $settings[$name] ) ) {
- if ( $settings[$name] === $default ) {
+ $settingCompare = $settings[$name];
+ if (is_array($settingCompare))
+ $settingCompare = self::filterVar($settingCompare);
+
+ if ( $settingCompare == $default ) {
unset( $settings[$name] );
} elseif ( $this->canBeMerged( $name, $default ) ) {
$value = $settings[$name];
Index: trunk/extensions/Configure/Configure.settings-core.php
===================================================================
--- trunk/extensions/Configure/Configure.settings-core.php (revision 44067)
+++ trunk/extensions/Configure/Configure.settings-core.php (revision 44068)
@@ -263,7 +263,6 @@
'wgDefaultSkin' => 'text',
'wgSkipSkin' => 'text',
'wgSkipSkins' => 'array',
- 'wgValidSkinNames' => 'array',
),
),
'category' => array(
@@ -750,7 +749,6 @@
'wgArticleRobotPolicies' => 'assoc',
# Skins
'wgSkipSkins' => 'simple',
- 'wgValidSkinNames' => 'assoc',
# Cache
'wgMemCachedServers' => 'simple',
# Interwiki
Index: trunk/extensions/Configure/Configure.css
===================================================================
--- trunk/extensions/Configure/Configure.css (revision 44067)
+++ trunk/extensions/Configure/Configure.css (revision 44068)
@@ -36,7 +36,6 @@
ul.configtoc {
vertical-align: top;
max-height: 500px;
- overflow: auto;
}
ul.configtoc, ul.configtoc > li > ul {