From: Kunal Mehta Date: Thu, 14 Aug 2014 20:47:24 +0000 (-0700) Subject: Normalize key before creating a Skin object X-Git-Tag: 1.31.0-rc.0~14426^2 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=fa46ef3f0caec00403368f9ba14a71cd5878b381;p=lhc%2Fweb%2Fwiklou.git Normalize key before creating a Skin object Bug: 69566 Change-Id: Id0af543cf206f47a3577019313597388ebc63b6a --- diff --git a/includes/context/RequestContext.php b/includes/context/RequestContext.php index 8ab1122e83..00733d8169 100644 --- a/includes/context/RequestContext.php +++ b/includes/context/RequestContext.php @@ -352,19 +352,15 @@ class RequestContext implements IContextSource { $skin = null; wfRunHooks( 'RequestContextCreateSkin', array( $this, &$skin ) ); - $fallback = $this->getConfig()->get( 'FallbackSkin' ); $factory = SkinFactory::getDefaultInstance(); // If the hook worked try to set a skin from it if ( $skin instanceof Skin ) { $this->skin = $skin; } elseif ( is_string( $skin ) ) { - try { - $this->skin = $factory->makeSkin( $skin ); - } catch ( SkinException $e ) { - $this->skin = $factory->makeSkin( $fallback ); - } - + // Normalize the key, just in case the hook did something weird. + $normalized = Skin::normalizeKey( $skin ); + $this->skin = $factory->makeSkin( $normalized ); } // If this is still null (the hook didn't run or didn't work) @@ -379,12 +375,13 @@ class RequestContext implements IContextSource { $userSkin = $this->getConfig()->get( 'DefaultSkin' ); } - try { - $this->skin = $factory->makeSkin( $userSkin ); - } catch ( SkinException $e ) { - $this->skin = $factory->makeSkin( $fallback ); - } + // Normalize the key in case the user is passing gibberish + // or has old preferences (bug 69566). + $normalized = Skin::normalizeKey( $userSkin ); + // Skin::normalizeKey will also validate it, so + // this won't throw an exception + $this->skin = $factory->makeSkin( $normalized ); } // After all that set a context on whatever skin got created