Check that the result of Title::makeTitleSafe() is an object before calling a method...
authorAlexandre Emsenhuber <ialex.wiki@gmail.com>
Mon, 9 Apr 2012 08:30:50 +0000 (10:30 +0200)
committerAlexandre Emsenhuber <ialex.wiki@gmail.com>
Mon, 9 Apr 2012 08:30:50 +0000 (10:30 +0200)
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.

includes/resourceloader/ResourceLoaderUserModule.php

index 338b632..9fa9bce 100644 (file)
@@ -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 */