From 6edec1137380075f989e4244943cb3586310bf75 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Mon, 9 Apr 2012 10:30:50 +0200 Subject: [PATCH] Check that the result of Title::makeTitleSafe() is an object before calling a method on it. Change-Id: If23fb3a5900cee6a5c4b3c24b44ce7f3da308bf3 Title::makeTitleSafe() does not always return a Title object, e.g. calling load.php?modules=user&user=| resulted in a fatal error. --- .../ResourceLoaderUserModule.php | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderUserModule.php b/includes/resourceloader/ResourceLoaderUserModule.php index 338b6322ee..9fa9bce851 100644 --- a/includes/resourceloader/ResourceLoaderUserModule.php +++ b/includes/resourceloader/ResourceLoaderUserModule.php @@ -33,33 +33,40 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule { * @return array */ protected function getPages( ResourceLoaderContext $context ) { - if ( $context->getUser() ) { - // Get the normalized title of the user's user page - $username = $context->getUser(); - $userpageTitle = Title::makeTitleSafe( NS_USER, $username ); - $userpage = $userpageTitle->getPrefixedDBkey(); // Needed so $excludepages works + $username = $context->getUser(); - $pages = array( - "$userpage/common.js" => array( 'type' => 'script' ), - "$userpage/" . $context->getSkin() . '.js' => - array( 'type' => 'script' ), - "$userpage/common.css" => array( 'type' => 'style' ), - "$userpage/" . $context->getSkin() . '.css' => - array( 'type' => 'style' ), - ); + if ( !$username ) { + return array(); + } + + // Get the normalized title of the user's user page + $userpageTitle = Title::makeTitleSafe( NS_USER, $username ); + + if ( !$userpageTitle instanceof Title ) { + return array(); + } + + $userpage = $userpageTitle->getPrefixedDBkey(); // Needed so $excludepages works + + $pages = array( + "$userpage/common.js" => array( 'type' => 'script' ), + "$userpage/" . $context->getSkin() . '.js' => + array( 'type' => 'script' ), + "$userpage/common.css" => array( 'type' => 'style' ), + "$userpage/" . $context->getSkin() . '.css' => + array( 'type' => 'style' ), + ); - // Hack for bug 26283: if we're on a preview page for a CSS/JS page, - // we need to exclude that page from this module. In that case, the excludepage - // parameter will be set to the name of the page we need to exclude. - $excludepage = $context->getRequest()->getVal( 'excludepage' ); - if ( isset( $pages[$excludepage] ) ) { - // This works because $excludepage is generated with getPrefixedDBkey(), - // just like the keys in $pages[] above - unset( $pages[$excludepage] ); - } - return $pages; + // Hack for bug 26283: if we're on a preview page for a CSS/JS page, + // we need to exclude that page from this module. In that case, the excludepage + // parameter will be set to the name of the page we need to exclude. + $excludepage = $context->getRequest()->getVal( 'excludepage' ); + if ( isset( $pages[$excludepage] ) ) { + // This works because $excludepage is generated with getPrefixedDBkey(), + // just like the keys in $pages[] above + unset( $pages[$excludepage] ); } - return array(); + return $pages; } /* Methods */ -- 2.20.1