Tune Skin::preloadExistence
authorumherirrender <umherirrender_de.wp@web.de>
Sun, 5 Oct 2014 17:26:36 +0000 (19:26 +0200)
committerumherirrender <umherirrender_de.wp@web.de>
Sun, 5 Oct 2014 17:28:51 +0000 (19:28 +0200)
Just preload user page and talk, when the personal bar is shown.
Use Skin::getRelevantTitle for the title to have the correct title
preloaded, when using for example [[Special:WhatLinksHere]].

Change-Id: I4363a9f3fd909cfdc341dc1a8c6c0189efd9b736

includes/skins/Skin.php

index e378278..c8c4ba4 100644 (file)
@@ -239,25 +239,33 @@ abstract class Skin extends ContextSource {
         * Preload the existence of three commonly-requested pages in a single query
         */
        function preloadExistence() {
+               $titles = array();
+
                $user = $this->getUser();
+               $title = $this->getRelevantTitle();
 
                // User/talk link
-               $titles = array( $user->getUserPage(), $user->getTalkPage() );
+               if ( $user->isLoggedIn() || $this->showIPinHeader() ) {
+                       $titles[] = $user->getUserPage();
+                       $titles[] = $user->getTalkPage();
+               }
 
                // Other tab link
-               if ( $this->getTitle()->isSpecialPage() ) {
+               if ( $title->isSpecialPage() ) {
                        // nothing
-               } elseif ( $this->getTitle()->isTalkPage() ) {
-                       $titles[] = $this->getTitle()->getSubjectPage();
+               } elseif ( $title->isTalkPage() ) {
+                       $titles[] = $title->getSubjectPage();
                } else {
-                       $titles[] = $this->getTitle()->getTalkPage();
+                       $titles[] = $title->getTalkPage();
                }
 
                wfRunHooks( 'SkinPreloadExistence', array( &$titles, $this ) );
 
-               $lb = new LinkBatch( $titles );
-               $lb->setCaller( __METHOD__ );
-               $lb->execute();
+               if ( count( $titles ) ) {
+                       $lb = new LinkBatch( $titles );
+                       $lb->setCaller( __METHOD__ );
+                       $lb->execute();
+               }
        }
 
        /**