From 09467b52cf1056ac159289ddc1b2c425f28d144a Mon Sep 17 00:00:00 2001 From: umherirrender Date: Sun, 5 Oct 2014 19:26:36 +0200 Subject: [PATCH] Tune Skin::preloadExistence 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 | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index e378278cd4..c8c4ba466b 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -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(); + } } /** -- 2.20.1