From 8b6ff740a101487fd9f3aaa4c5bafd8e79dbe1d1 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Thu, 12 May 2016 23:28:06 -0700 Subject: [PATCH] Have Linker::getLinkColour() accept LinkTarget objects Change-Id: I7d7318099a822f9ddd88c538274511e6d8a8f1bc --- includes/Linker.php | 26 +++++++++++++++++--------- includes/linker/LinkRenderer.php | 3 +-- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/includes/Linker.php b/includes/Linker.php index c0d9358710..71cb4e48d8 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -138,22 +138,30 @@ class Linker { * Return the CSS colour of a known link * * @since 1.16.3 - * @param Title $t + * @param LinkTarget $t * @param int $threshold User defined threshold * @return string CSS class */ - public static function getLinkColour( $t, $threshold ) { - $colour = ''; - if ( $t->isRedirect() ) { + public static function getLinkColour( LinkTarget $t, $threshold ) { + $linkCache = MediaWikiServices::getInstance()->getLinkCache(); + // Make sure the target is in the cache + $id = $linkCache->addLinkObj( $t ); + if ( $id == 0 ) { + // Doesn't exist + return ''; + } + + if ( $linkCache->getGoodLinkFieldObj( $t, 'redirect' ) ) { # Page is a redirect - $colour = 'mw-redirect'; - } elseif ( $threshold > 0 && $t->isContentPage() && - $t->exists() && $t->getLength() < $threshold + return 'mw-redirect'; + } elseif ( $threshold > 0 && MWNamespace::isContent( $t->getNamespace() ) + && $linkCache->getGoodLinkFieldObj( $t, 'length' ) < $threshold ) { # Page is a stub - $colour = 'stub'; + return 'stub'; } - return $colour; + + return ''; } /** diff --git a/includes/linker/LinkRenderer.php b/includes/linker/LinkRenderer.php index 123790764c..432dcb23dc 100644 --- a/includes/linker/LinkRenderer.php +++ b/includes/linker/LinkRenderer.php @@ -276,8 +276,7 @@ class LinkRenderer { if ( $target->isExternal() ) { $classes[] = 'extiw'; } - $title = Title::newFromLinkTarget( $target ); - $colour = Linker::getLinkColour( $title, $this->stubThreshold ); + $colour = Linker::getLinkColour( $target, $this->stubThreshold ); if ( $colour !== '' ) { $classes[] = $colour; } -- 2.20.1