Georggi199 has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/332821 )
Change subject: Replaced all deprecated Linker methods with proper ones in core ...................................................................... Replaced all deprecated Linker methods with proper ones in core Only avoided a few methods in DummyLinker and Linker. Should be all that was in core. Extension are still to go. (Will go through them in coming days). Needs some testing, especially with new HTMLArmor ($msg(..)->parse()) as I am not sure that is 100% correct way to do it. Change-Id: Ie3a718dc1eae1507f8829fcf419c64c6846d2cb6 --- M includes/CategoryViewer.php M includes/EditPage.php M includes/FileDeleteForm.php M includes/Linker.php M includes/MWGrants.php M includes/OutputPage.php M includes/Preferences.php M includes/ProtectionForm.php M includes/RevisionList.php M includes/actions/InfoAction.php M includes/diff/DifferenceEngine.php M includes/gallery/TraditionalImageGallery.php M includes/logging/LogFormatter.php M includes/logging/LogPage.php M includes/logging/MergeLogFormatter.php M includes/logging/MoveLogFormatter.php M includes/logging/PatrolLogFormatter.php M includes/logging/ProtectLogFormatter.php M includes/page/Article.php M includes/page/ImageHistoryList.php M includes/page/ImagePage.php M includes/pager/IndexPager.php M includes/skins/Skin.php M includes/specialpage/PageQueryPage.php M includes/specialpage/WantedQueryPage.php M includes/specials/SpecialSearch.php M includes/user/User.php M tests/phpunit/includes/LinkerTest.php M tests/phpunit/includes/logging/LogFormatterTest.php 29 files changed, 231 insertions(+), 140 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/21/332821/1 diff --git a/includes/CategoryViewer.php b/includes/CategoryViewer.php index facf847..31369b0 100644 --- a/includes/CategoryViewer.php +++ b/includes/CategoryViewer.php @@ -632,11 +632,12 @@ private function pagingLinks( $first, $last, $type = '' ) { $prevLink = $this->msg( 'prev-page' )->text(); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $first != '' ) { $prevQuery = $this->query; $prevQuery["{$type}until"] = $first; unset( $prevQuery["{$type}from"] ); - $prevLink = Linker::linkKnown( + $prevLink = $linkRenderer->makeKnownLink( $this->addFragmentToTitle( $this->title, $type ), $prevLink, [], @@ -650,7 +651,7 @@ $lastQuery = $this->query; $lastQuery["{$type}from"] = $last; unset( $lastQuery["{$type}until"] ); - $nextLink = Linker::linkKnown( + $nextLink = $linkRenderer->makeKnownLink( $this->addFragmentToTitle( $this->title, $type ), $nextLink, [], diff --git a/includes/EditPage.php b/includes/EditPage.php index acbd130..1711cc8 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -3581,6 +3581,7 @@ */ public function getCancelLink() { $cancelParams = []; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( !$this->isConflict && $this->oldid > 0 ) { $cancelParams['oldid'] = $this->oldid; } elseif ( $this->getContextTitle()->isRedirect() ) { @@ -3588,9 +3589,9 @@ } $attrs = [ 'id' => 'mw-editform-cancel' ]; - return Linker::linkKnown( + return $linkRenderer->makeKnownLink( $this->getContextTitle(), - $this->context->msg( 'cancel' )->parse(), + new HTMLArmor( $this->context->msg( 'cancel' )->parse() ), Html::buttonAttributes( $attrs, [ 'mw-ui-quiet' ] ), $cancelParams ); diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php index f850152..82af081 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -21,6 +21,7 @@ * @author Rob Church <robc...@gmail.com> * @ingroup Media */ +use MediaWiki\MediaWikiServices; /** * File deletion user interface @@ -301,9 +302,10 @@ if ( $wgUser->isAllowed( 'editinterface' ) ) { $title = wfMessage( 'filedelete-reason-dropdown' )->inContentLanguage()->getTitle(); - $link = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( $title, - wfMessage( 'filedelete-edit-reasonlist' )->escaped(), + wfMessage( 'filedelete-edit-reasonlist' )->text(), [], [ 'action' => 'edit' ] ); diff --git a/includes/Linker.php b/includes/Linker.php index 794e2e9..5bd9b6e 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -329,7 +329,8 @@ if ( $file && !$file->allowInlineDisplay() ) { wfDebug( __METHOD__ . ': ' . $title->getPrefixedDBkey() . " does not allow inline display\n" ); - return self::link( $title ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + return $linkRenderer->makeLink( $title ); } // Clean up parameters @@ -696,6 +697,7 @@ } $encLabel = htmlspecialchars( $label ); $currentExists = $time ? ( wfFindFile( $title ) != false ) : false; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( ( $wgUploadMissingFileUrl || $wgUploadNavigationUrl || $wgEnableUploads ) && !$currentExists @@ -705,12 +707,11 @@ if ( $redir ) { // We already know it's a redirect, so mark it // accordingly - return self::link( + return $linkRenderer->makeKnownLink( $title, - $encLabel, + $label, [ 'class' => 'mw-redirect' ], - wfCgiToArray( $query ), - [ 'known', 'noclasses' ] + wfCgiToArray( $query ) ); } @@ -721,7 +722,7 @@ $encLabel . '</a>'; } - return self::link( $title, $encLabel, [], wfCgiToArray( $query ), [ 'known', 'noclasses' ] ); + return $linkRenderer->makeKnownLink( $title, $label, [], wfCgiToArray( $query ) ); } /** @@ -887,6 +888,7 @@ */ public static function userLink( $userId, $userName, $altUserName = false ) { $classes = 'mw-userlink'; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $userId == 0 ) { $page = SpecialPage::getTitleFor( 'Contributions', $userName ); if ( $altUserName === false ) { @@ -898,9 +900,9 @@ } // Wrap the output with <bdi> tags for directionality isolation - return self::link( + return $linkRenderer->makeLink( $page, - '<bdi>' . htmlspecialchars( $altUserName !== false ? $altUserName : $userName ) . '</bdi>', + '<bdi>' . ( $altUserName !== false ? $altUserName : $userName ) . '</bdi>', [ 'class' => $classes ] ); } @@ -925,6 +927,7 @@ $talkable = !( $wgDisableAnonTalk && 0 == $userId ); $blockable = !( $flags & self::TOOL_LINKS_NOBLOCK ); $addEmailLink = $flags & self::TOOL_LINKS_EMAIL && $userId; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $items = []; if ( $talkable ) { @@ -944,7 +947,7 @@ } $contribsPage = SpecialPage::getTitleFor( 'Contributions', $userText ); - $items[] = self::link( $contribsPage, wfMessage( 'contribslink' )->escaped(), $attribs ); + $items[] = $linkRenderer->makeLink( $contribsPage, wfMessage( 'contribslink' )->text(), $attribs ); } if ( $blockable && $wgUser->isAllowed( 'block' ) ) { $items[] = self::blockLink( $userId, $userText ); @@ -986,7 +989,8 @@ */ public static function userTalkLink( $userId, $userText ) { $userTalkPage = Title::makeTitle( NS_USER_TALK, $userText ); - $userTalkLink = self::link( $userTalkPage, wfMessage( 'talkpagelinktext' )->escaped() ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $userTalkLink = $linkRenderer->makeLink( $userTalkPage, wfMessage( 'talkpagelinktext' )->text() ); return $userTalkLink; } @@ -998,7 +1002,8 @@ */ public static function blockLink( $userId, $userText ) { $blockPage = SpecialPage::getTitleFor( 'Block', $userText ); - $blockLink = self::link( $blockPage, wfMessage( 'blocklink' )->escaped() ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $blockLink = $linkRenderer->makeLink( $blockPage, wfMessage( 'blocklink' )->text() ); return $blockLink; } @@ -1009,7 +1014,8 @@ */ public static function emailLink( $userId, $userText ) { $emailPage = SpecialPage::getTitleFor( 'Emailuser', $userText ); - $emailLink = self::link( $emailPage, wfMessage( 'emaillink' )->escaped() ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $emailLink = $linkRenderer->makeLink( $emailPage, wfMessage( 'emaillink' )->text() ); return $emailLink; } @@ -1328,7 +1334,9 @@ /* escape = */ false // Already escaped ); } else { - $link = Linker::link( $title, $text, [], [], $options ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRendererFactory()->createFromLegacyOptions( + $options ); + $link = $linkRenderer->makeLink( $title, $text, [], [] ); } return $link; @@ -1783,7 +1791,6 @@ 'data-mw' => 'interface', 'title' => $context->msg( 'tooltip-rollback' )->text(), ]; - $options = [ 'known', 'noclasses' ]; if ( $context->getRequest()->getBool( 'bot' ) ) { $query['bot'] = '1'; @@ -1800,6 +1807,7 @@ } } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( !$disableRollbackEditCount && is_int( $wgShowRollbackEditCount ) && $wgShowRollbackEditCount > 0 @@ -1815,10 +1823,10 @@ $html = $context->msg( 'rollbacklinkcount' )->numParams( $editCount )->parse(); } - return self::link( $title, $html, $attrs, $query, $options ); + return $linkRenderer->makeLink( $title, new HtmlArmor( $html ), $attrs, $query ); } else { $html = $context->msg( 'rollbacklink' )->escaped(); - return self::link( $title, $html, $attrs, $query, $options ); + return $linkRenderer->makeLink( $title, new HtmlArmor( $html ), $attrs, $query ); } } @@ -1880,10 +1888,11 @@ $outText .= wfMessage( 'hiddencategories' )->numParams( count( $hiddencats ) )->parseAsBlock(); $outText .= "</div><ul>\n"; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); foreach ( $hiddencats as $titleObj ) { # If it's hidden, it must exist - no need to check with a LinkBatch $outText .= '<li>' - . self::link( $titleObj, null, [], [], 'known' ) + . $linkRenderer->makeKnownLink( $titleObj, null, [], [] ) . "</li>\n"; } $outText .= '</ul>'; @@ -2046,9 +2055,10 @@ public static function revDeleteLink( $query = [], $restricted = false, $delete = true ) { $sp = SpecialPage::getTitleFor( 'Revisiondelete' ); $msgKey = $delete ? 'rev-delundel' : 'rev-showdeleted'; - $html = wfMessage( $msgKey )->escaped(); + $text = wfMessage( $msgKey )->text(); $tag = $restricted ? 'strong' : 'span'; - $link = self::link( $sp, $html, [], $query, [ 'known', 'noclasses' ] ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( $sp, $text, [], $query ); return Xml::tags( $tag, [ 'class' => 'mw-revdelundel-link' ], diff --git a/includes/MWGrants.php b/includes/MWGrants.php index 58efdc7..c7c54fd 100644 --- a/includes/MWGrants.php +++ b/includes/MWGrants.php @@ -17,6 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html */ +use MediaWiki\MediaWikiServices; /** * A collection of public static functions to deal with grants. @@ -178,9 +179,10 @@ * @return string (proto-relative) HTML link */ public static function getGrantsLink( $grant, $lang = null ) { - return \Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + return $linkRenderer->makeKnownLink( \SpecialPage::getTitleFor( 'Listgrants', false, $grant ), - htmlspecialchars( self::grantName( $grant, $lang ) ) + self::grantName( $grant, $lang ) ); } diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 211f44b..0937d2a 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -2515,9 +2515,10 @@ $query['returntoquery'] = wfArrayToCgi( $returntoquery ); } } - $loginLink = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $loginLink = $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( 'Userlogin' ), - $this->msg( 'loginreqlink' )->escaped(), + $this->msg( 'loginreqlink' )->text(), [], $query ); diff --git a/includes/Preferences.php b/includes/Preferences.php index 263ff5b..91768ec 100644 --- a/includes/Preferences.php +++ b/includes/Preferences.php @@ -495,9 +495,9 @@ } else { $disableEmailPrefs = true; $emailauthenticated = $context->msg( 'emailnotauthenticated' )->parse() . '<br />' . - Linker::linkKnown( + $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( 'Confirmemail' ), - $context->msg( 'emailconfirmlink' )->escaped() + $context->msg( 'emailconfirmlink' )->text() ) . '<br />'; $emailauthenticationclass = "mw-email-not-authenticated"; } @@ -956,11 +956,12 @@ 'raw' => [ 'EditWatchlist', 'raw' ], 'clear' => [ 'EditWatchlist', 'clear' ], ]; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); foreach ( $editWatchlistModes as $editWatchlistMode => $mode ) { // Messages: prefs-editwatchlist-edit, prefs-editwatchlist-raw, prefs-editwatchlist-clear - $editWatchlistLinks[] = Linker::linkKnown( + $editWatchlistLinks[] = $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( $mode[0], $mode[1] ), - $context->msg( "prefs-editwatchlist-{$editWatchlistMode}" )->parse() + new HtmlArmor( $context->msg( "prefs-editwatchlist-{$editWatchlistMode}" )->parse() ) ); } diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php index 454ffcc..a68c36f 100644 --- a/includes/ProtectionForm.php +++ b/includes/ProtectionForm.php @@ -22,6 +22,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; /** * Handles the page protection UI and backend @@ -543,9 +544,10 @@ $out .= Xml::closeElement( 'fieldset' ); if ( $user->isAllowed( 'editinterface' ) ) { - $link = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( $context->msg( 'protect-dropdown' )->inContentLanguage()->getTitle(), - $context->msg( 'protect-edit-reasonlist' )->escaped(), + $context->msg( 'protect-edit-reasonlist' )->text(), [], [ 'action' => 'edit' ] ); diff --git a/includes/RevisionList.php b/includes/RevisionList.php index 052fd16..53cf6998 100644 --- a/includes/RevisionList.php +++ b/includes/RevisionList.php @@ -363,13 +363,14 @@ * @return string */ protected function getRevisionLink() { - $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate( - $this->revision->getTimestamp(), $this->list->getUser() ) ); + $date = $this->list->getLanguage()->userTimeAndDate( + $this->revision->getTimestamp(), $this->list->getUser() ); if ( $this->isDeleted() && !$this->canViewContent() ) { - return $date; + return htmlspecialchars( $date ); } - return Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + return $linkRenderer->makeKnownLink( $this->list->title, $date, [], @@ -391,9 +392,10 @@ if ( $this->isDeleted() && !$this->canViewContent() ) { return $this->context->msg( 'diff' )->escaped(); } else { - return Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + return $linkRenderer->makeKnownLink( $this->list->title, - $this->list->msg( 'diff' )->escaped(), + $this->list->msg( 'diff' )->text(), [], [ 'diff' => $this->revision->getId(), diff --git a/includes/actions/InfoAction.php b/includes/actions/InfoAction.php index 5fb83b3..c66416a 100644 --- a/includes/actions/InfoAction.php +++ b/includes/actions/InfoAction.php @@ -388,7 +388,7 @@ $prefixIndex = SpecialPage::getTitleFor( 'Prefixindex', $title->getPrefixedText() . '/' ); $pageInfo['header-basic'][] = [ - Linker::link( $prefixIndex, $this->msg( 'pageinfo-subpages-name' )->escaped() ), + $linkRenderer->makeLink( $prefixIndex, $this->msg( 'pageinfo-subpages-name' )->text() ), $this->msg( 'pageinfo-subpages-value' ) ->numParams( $pageCounts['subpages']['total'], diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 559a5ec..7c4e862 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -20,6 +20,7 @@ * @file * @ingroup DifferenceEngine */ +use MediaWiki\MediaWikiServices; /** @deprecated use class constant instead */ define( 'MW_DIFF_VERSION', '1.11a' ); @@ -242,6 +243,7 @@ $out = $this->getOutput(); $out->allowClickjacking(); $out->setRobotPolicy( 'noindex,nofollow' ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); // Allow extensions to add any extra output here Hooks::run( 'DifferenceEngineShowDiffPage', [ $out ] ); @@ -331,9 +333,9 @@ # Make "previous revision link" if ( $samePage && $this->mOldRev->getPrevious() ) { - $prevlink = Linker::linkKnown( + $prevlink = $linkRenderer->makeKnownLink( $this->mOldPage, - $this->msg( 'previousdiff' )->escaped(), + $this->msg( 'previousdiff' )->text(), [ 'id' => 'differences-prevlink' ], [ 'diff' => 'prev', 'oldid' => $this->mOldid ] + $query ); @@ -379,9 +381,9 @@ # Make "next revision link" # Skip next link on the top revision if ( $samePage && !$this->mNewRev->isCurrent() ) { - $nextlink = Linker::linkKnown( + $nextlink = $linkRenderer->makeKnownLink( $this->mNewPage, - $this->msg( 'nextdiff' )->escaped(), + $this->msg( 'nextdiff' )->text(), [ 'id' => 'differences-nextlink' ], [ 'diff' => 'next', 'oldid' => $this->mNewid ] + $query ); @@ -489,10 +491,11 @@ if ( !$linkInfo ) { $this->mMarkPatrolledLink = ''; } else { + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $this->mMarkPatrolledLink = ' <span class="patrollink" data-mw="interface">[' . - Linker::linkKnown( + $linkRenderer->makeKnownLink( $this->mNewPage, - $this->msg( 'markaspatrolleddiff' )->escaped(), + $this->msg( 'markaspatrolleddiff' )->text(), [], [ 'action' => 'markpatrolled', @@ -1072,6 +1075,7 @@ $timestamp = $lang->userTimeAndDate( $revtimestamp, $user ); $dateofrev = $lang->userDate( $revtimestamp, $user ); $timeofrev = $lang->userTime( $revtimestamp, $user ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $header = $this->msg( $rev->isCurrent() ? 'currentrev-asof' : 'revisionasof', @@ -1086,7 +1090,7 @@ $title = $rev->getTitle(); - $header = Linker::linkKnown( $title, $header, [], + $header = $linkRenderer->makeKnownLink( $title, new HtmlArmor( $header ), [], [ 'oldid' => $rev->getId() ] ); if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) { @@ -1096,9 +1100,9 @@ } $key = $title->quickUserCan( 'edit', $user ) ? 'editold' : 'viewsourceold'; - $msg = $this->msg( $key )->escaped(); + $msg = $this->msg( $key )->text(); $editLink = $this->msg( 'parentheses' )->rawParams( - Linker::linkKnown( $title, $msg, [], $editQuery ) )->escaped(); + $linkRenderer->makeKnownLink( $title, $msg, [], $editQuery ) )->escaped(); $header .= ' ' . Html::rawElement( 'span', [ 'class' => 'mw-diff-edit' ], diff --git a/includes/gallery/TraditionalImageGallery.php b/includes/gallery/TraditionalImageGallery.php index 1fd7b0a..66c7b8f 100644 --- a/includes/gallery/TraditionalImageGallery.php +++ b/includes/gallery/TraditionalImageGallery.php @@ -19,6 +19,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; class TraditionalImageGallery extends ImageGalleryBase { /** @@ -46,6 +47,7 @@ [ 'class' => 'gallery mw-gallery-' . $this->mMode ], $this->mAttribs ); $modules = $this->getModules(); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $this->mParser ) { $this->mParser->getOutput()->addModules( $modules ); @@ -116,9 +118,9 @@ # The image is blacklisted, just show it as a text link. $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">' . - Linker::linkKnown( + $linkRenderer->makeKnownLink( $nt, - htmlspecialchars( $nt->getText() ) + $nt->getText() ) . '</div>'; } else { @@ -187,9 +189,9 @@ $textlink = $this->mShowFilename ? // Preloaded into LinkCache above - Linker::linkKnown( + $linkRenderer->makeKnownLink( $nt, - htmlspecialchars( + ( $this->mCaptionLength !== true ? $lang->truncate( $nt->getText(), $this->mCaptionLength ) : $nt->getText() diff --git a/includes/logging/LogFormatter.php b/includes/logging/LogFormatter.php index a64fee1..9ef532a 100644 --- a/includes/logging/LogFormatter.php +++ b/includes/logging/LogFormatter.php @@ -22,6 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later * @since 1.19 */ +use MediaWiki\MediaWikiServices; /** * Implements the default log formatting. @@ -610,7 +611,8 @@ */ protected function makePageLink( Title $title = null, $parameters = [], $html = null ) { if ( !$this->plaintext ) { - $link = Linker::link( $title, $html, [], $parameters ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( $title, new HtmlArmor( $html ), [], $parameters ); } else { if ( !$title instanceof Title ) { throw new MWException( "Expected title, got null" ); diff --git a/includes/logging/LogPage.php b/includes/logging/LogPage.php index 64102b7..94dcc15 100644 --- a/includes/logging/LogPage.php +++ b/includes/logging/LogPage.php @@ -22,6 +22,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; /** * Class to simplify the use of log pages. @@ -297,22 +298,23 @@ return $title->getPrefixedText(); } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $title->isSpecialPage() ) { list( $name, $par ) = SpecialPageFactory::resolveAlias( $title->getDBkey() ); # Use the language name for log titles, rather than Log/X if ( $name == 'Log' ) { $logPage = new LogPage( $par ); - $titleLink = Linker::link( $title, $logPage->getName()->escaped() ); + $titleLink = $linkRenderer->makeLink( $title, $logPage->getName()->text() ); $titleLink = wfMessage( 'parentheses' ) ->inLanguage( $lang ) ->rawParams( $titleLink ) ->escaped(); } else { - $titleLink = Linker::link( $title ); + $titleLink = $linkRenderer->makeLink( $title ); } } else { - $titleLink = Linker::link( $title ); + $titleLink = $linkRenderer->makeLink( $title ); } return $titleLink; diff --git a/includes/logging/MergeLogFormatter.php b/includes/logging/MergeLogFormatter.php index b0edd4c..5687cb9 100644 --- a/includes/logging/MergeLogFormatter.php +++ b/includes/logging/MergeLogFormatter.php @@ -21,6 +21,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later * @since 1.25 */ +use MediaWiki\MediaWikiServices; /** * This class formats merge log entries. @@ -52,11 +53,12 @@ return ''; } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); // Show unmerge link $params = $this->extractParameters(); - $revert = Linker::linkKnown( + $revert = $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( 'MergeHistory' ), - $this->msg( 'revertmerge' )->escaped(), + $this->msg( 'revertmerge' )->text(), [], [ 'target' => $params[3], diff --git a/includes/logging/MoveLogFormatter.php b/includes/logging/MoveLogFormatter.php index afbf8e9..40fc787 100644 --- a/includes/logging/MoveLogFormatter.php +++ b/includes/logging/MoveLogFormatter.php @@ -22,6 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later * @since 1.22 */ +use MediaWiki\MediaWikiServices; /** * This class formats move log entries. @@ -71,9 +72,10 @@ return ''; } - $revert = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $revert = $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( 'Movepage' ), - $this->msg( 'revertmove' )->escaped(), + $this->msg( 'revertmove' )->text(), [], [ 'wpOldTitle' => $destTitle->getPrefixedDBkey(), diff --git a/includes/logging/PatrolLogFormatter.php b/includes/logging/PatrolLogFormatter.php index 5b933ce..70807e2 100644 --- a/includes/logging/PatrolLogFormatter.php +++ b/includes/logging/PatrolLogFormatter.php @@ -22,6 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later * @since 1.22 */ +use MediaWiki\MediaWikiServices; /** * This class formats patrol log entries. @@ -54,7 +55,8 @@ 'oldid' => $oldid, 'diff' => 'prev' ]; - $revlink = Linker::link( $target, htmlspecialchars( $revision ), [], $query ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $revlink = $linkRenderer->makeLink( $target, $revision, [], $query ); } else { $revlink = htmlspecialchars( $revision ); } diff --git a/includes/logging/ProtectLogFormatter.php b/includes/logging/ProtectLogFormatter.php index 0458297..1da96bf 100644 --- a/includes/logging/ProtectLogFormatter.php +++ b/includes/logging/ProtectLogFormatter.php @@ -21,6 +21,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later * @since 1.26 */ +use MediaWiki\MediaWikiServices; /** * This class formats protect log entries. @@ -84,11 +85,12 @@ return ''; } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); // Show history link for all changes after the protection $title = $this->entry->getTarget(); $links = [ - Linker::link( $title, - $this->msg( 'hist' )->escaped(), + $linkRenderer->makeLink( $title, + $this->msg( 'hist' )->text(), [], [ 'action' => 'history', @@ -99,9 +101,9 @@ // Show change protection link if ( $this->context->getUser()->isAllowed( 'protect' ) ) { - $links[] = Linker::linkKnown( + $links[] = $linkRenderer->makeKnownLink( $title, - $this->msg( 'protect_change' )->escaped(), + $this->msg( 'protect_change' )->text(), [], [ 'action' => 'protect' ] ); diff --git a/includes/page/Article.php b/includes/page/Article.php index 4bcb655..4e7ee5a 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -19,6 +19,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; /** * Class for viewing MediaWiki article and history. @@ -867,6 +868,7 @@ } $redirectTargetUrl = $this->getTitle()->getLinkURL( $query ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( isset( $this->mRedirectedFrom ) ) { // Avoid PHP 7.1 warning of passing $this by reference $articlePage = $this; @@ -874,7 +876,7 @@ // This is an internally redirected page view. // We'll need a backlink to the source page for navigation. if ( Hooks::run( 'ArticleViewRedirect', [ &$articlePage ] ) ) { - $redir = Linker::linkKnown( + $redir = $linkRenderer->makeKnownLink( $this->mRedirectedFrom, null, [], @@ -1103,9 +1105,10 @@ $outputPage->addModules( 'mediawiki.page.patrol.ajax' ); } - $link = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( $title, - $markPatrolledMsg->escaped(), + $markPatrolledMsg->text(), [], [ 'action' => 'markpatrolled', @@ -1351,19 +1354,20 @@ ->parse() . "</div>"; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $lnk = $current ? $context->msg( 'currentrevisionlink' )->escaped() - : Linker::linkKnown( + : $linkRenderer->makeKnownLink( $this->getTitle(), - $context->msg( 'currentrevisionlink' )->escaped(), + $context->msg( 'currentrevisionlink' )->text(), [], $extraParams ); $curdiff = $current ? $context->msg( 'diff' )->escaped() - : Linker::linkKnown( + : $linkRenderer->makeKnownLink( $this->getTitle(), - $context->msg( 'diff' )->escaped(), + $context->msg( 'diff' )->text(), [], [ 'diff' => 'cur', @@ -1372,9 +1376,9 @@ ); $prev = $this->getTitle()->getPreviousRevisionID( $oldid ); $prevlink = $prev - ? Linker::linkKnown( + ? $linkRenderer->makeKnownLink( $this->getTitle(), - $context->msg( 'previousrevision' )->escaped(), + $context->msg( 'previousrevision' )->text(), [], [ 'direction' => 'prev', @@ -1383,9 +1387,9 @@ ) : $context->msg( 'previousrevision' )->escaped(); $prevdiff = $prev - ? Linker::linkKnown( + ? $linkRenderer->makeKnownLink( $this->getTitle(), - $context->msg( 'diff' )->escaped(), + $context->msg( 'diff' )->text(), [], [ 'diff' => 'prev', @@ -1395,9 +1399,9 @@ : $context->msg( 'diff' )->escaped(); $nextlink = $current ? $context->msg( 'nextrevision' )->escaped() - : Linker::linkKnown( + : $linkRenderer->makeKnownLink( $this->getTitle(), - $context->msg( 'nextrevision' )->escaped(), + $context->msg( 'nextrevision' )->text(), [], [ 'direction' => 'next', @@ -1406,9 +1410,9 @@ ); $nextdiff = $current ? $context->msg( 'diff' )->escaped() - : Linker::linkKnown( + : $linkRenderer->makeKnownLink( $this->getTitle(), - $context->msg( 'diff' )->escaped(), + $context->msg( 'diff' )->text(), [], [ 'diff' => 'next', @@ -1468,16 +1472,27 @@ } $html = '<ul class="redirectText">'; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); /** @var Title $title */ foreach ( $target as $title ) { - $html .= '<li>' . Linker::link( - $title, - htmlspecialchars( $title->getFullText() ), - [], - // Make sure wiki page redirects are not followed - $title->isRedirect() ? [ 'redirect' => 'no' ] : [], - ( $forceKnown ? [ 'known', 'noclasses' ] : [] ) - ) . '</li>'; + if ( $forceKnown ) { + $html .= '<li>' . $linkRenderer->makeKnownLink( + $title, + $title->getFullText(), + [], + // Make sure wiki page redirects are not followed + $title->isRedirect() ? [ 'redirect' => 'no' ] : [] + ) . '</li>'; + } else { + $html .= '<li>' . $linkRenderer->makeLink( + $title, + $title->getFullText(), + [], + // Make sure wiki page redirects are not followed + $title->isRedirect() ? [ 'redirect' => 'no' ] : [] + ) . '</li>'; + } + } $html .= '</ul>'; @@ -1637,12 +1652,13 @@ __METHOD__ ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); // @todo FIXME: i18n issue/patchwork message $context->getOutput()->addHTML( '<strong class="mw-delete-warning-revisions">' . $context->msg( 'historywarning' )->numParams( $revisions )->parse() . - $context->msg( 'word-separator' )->escaped() . Linker::linkKnown( $title, - $context->msg( 'history' )->escaped(), + $context->msg( 'word-separator' )->escaped() . $linkRenderer->makeKnownLink( $title, + $context->msg( 'history' )->text(), [], [ 'action' => 'history' ] ) . '</strong>' @@ -1756,9 +1772,10 @@ Xml::closeElement( 'form' ); if ( $user->isAllowed( 'editinterface' ) ) { - $link = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $link = $linkRenderer->makeKnownLink( $ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->getTitle(), - wfMessage( 'delete-edit-reasonlist' )->escaped(), + wfMessage( 'delete-edit-reasonlist' )->text(), [], [ 'action' => 'edit' ] ); diff --git a/includes/page/ImageHistoryList.php b/includes/page/ImageHistoryList.php index bb8ed24..2f40f63 100644 --- a/includes/page/ImageHistoryList.php +++ b/includes/page/ImageHistoryList.php @@ -17,6 +17,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; /** * Builds the image revision log shown on image pages @@ -124,6 +125,7 @@ $local = $this->current->isLocal(); $row = $selected = ''; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); // Deletion link if ( $local && ( $user->isAllowedAny( 'delete', 'deletedhistory' ) ) ) { $row .= '<td>'; @@ -133,9 +135,9 @@ if ( !$iscur ) { $q['oldimage'] = $img; } - $row .= Linker::linkKnown( + $row .= $linkRenderer->makeKnownLink( $this->title, - $this->msg( $iscur ? 'filehist-deleteall' : 'filehist-deleteone' )->escaped(), + $this->msg( $iscur ? 'filehist-deleteall' : 'filehist-deleteone' )->text(), [], $q ); } @@ -173,9 +175,9 @@ if ( $file->isDeleted( File::DELETED_FILE ) ) { $row .= $this->msg( 'filehist-revert' )->escaped(); } else { - $row .= Linker::linkKnown( + $row .= $linkRenderer->makeKnownLink( $this->title, - $this->msg( 'filehist-revert' )->escaped(), + $this->msg( 'filehist-revert' )->text(), [], [ 'action' => 'revert', @@ -200,7 +202,7 @@ $this->preventClickjacking(); $revdel = SpecialPage::getTitleFor( 'Revisiondelete' ); # Make a link to review the image - $url = Linker::linkKnown( + $url = $linkRenderer->makeKnownLink( $revdel, $lang->userTimeAndDate( $timestamp, $user ), [], diff --git a/includes/page/ImagePage.php b/includes/page/ImagePage.php index b60b010..15138a0 100644 --- a/includes/page/ImagePage.php +++ b/includes/page/ImagePage.php @@ -19,6 +19,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; /** * Class for viewing MediaWiki file description pages @@ -308,6 +309,7 @@ $maxWidth = $max[0]; $maxHeight = $max[1]; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $this->displayImg->exists() ) { # image $page = $request->getIntOrNull( 'page' ); @@ -435,7 +437,7 @@ $label = $out->parse( $this->getContext()->msg( 'imgmultipageprev' )->text(), false ); // on the client side, this link is generated in ajaxifyPageNavigation() // in the mediawiki.page.image.pagination module - $link = Linker::linkKnown( + $link = $linkRenderer->makeKnownLink( $this->getTitle(), $label, [], @@ -455,7 +457,7 @@ if ( $page < $count ) { $label = $this->getContext()->msg( 'imgmultipagenext' )->text(); - $link = Linker::linkKnown( + $link = $linkRenderer->makeKnownLink( $this->getTitle(), $label, [], @@ -873,6 +875,7 @@ // Sort the list by namespace:title usort( $rows, [ $this, 'compare' ] ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); // Create links for every element $currentCount = 0; foreach ( $rows as $element ) { @@ -886,7 +889,7 @@ if ( isset( $redirects[$element->page_title] ) ) { $query['redirect'] = 'no'; } - $link = Linker::linkKnown( + $link = $linkRenderer->makeKnownLink( Title::makeTitle( $element->page_namespace, $element->page_title ), null, [], $query ); @@ -907,7 +910,7 @@ break; } - $link2 = Linker::linkKnown( Title::makeTitle( $row->page_namespace, $row->page_title ) ); + $link2 = $linkRenderer->makeKnownLink( Title::makeTitle( $row->page_namespace, $row->page_title ) ); $li .= Html::rawElement( 'li', [ 'class' => 'mw-imagepage-linkstoimage-ns' . $element->page_namespace ], @@ -956,13 +959,14 @@ ); $out->addHTML( "<ul class='mw-imagepage-duplicates'>\n" ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); /** * @var $file File */ foreach ( $dupes as $file ) { $fromSrc = ''; if ( $file->isLocal() ) { - $link = Linker::linkKnown( $file->getTitle() ); + $link = $linkRenderer->makeKnownLink( $file->getTitle() ); } else { $link = Linker::makeExternalLink( $file->getDescriptionUrl(), $file->getTitle()->getPrefixedText() ); diff --git a/includes/pager/IndexPager.php b/includes/pager/IndexPager.php index 395cee5..4507b34 100644 --- a/includes/pager/IndexPager.php +++ b/includes/pager/IndexPager.php @@ -20,6 +20,7 @@ * @file * @ingroup Pager */ +use MediaWiki\MediaWikiServices; /** * IndexPager is an efficient pager which uses a (roughly unique) index in the @@ -476,7 +477,8 @@ $attrs['class'] = "mw-{$type}link"; } - return Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + return $linkRenderer->makeKnownLink( $this->getTitle(), $text, $attrs, diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index 96812ea..782802d 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -19,6 +19,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; /** * @defgroup Skins Skins @@ -452,13 +453,14 @@ $s = ''; $colon = $this->msg( 'colon-separator' )->escaped(); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( !empty( $allCats['normal'] ) ) { $t = $embed . implode( "{$pop}{$embed}", $allCats['normal'] ) . $pop; - $msg = $this->msg( 'pagecategories' )->numParams( count( $allCats['normal'] ) )->escaped(); + $msg = $this->msg( 'pagecategories' )->numParams( count( $allCats['normal'] ) )->text(); $linkPage = wfMessage( 'pagecategorieslink' )->inContentLanguage()->text(); $title = Title::newFromText( $linkPage ); - $link = $title ? Linker::link( $title, $msg ) : $msg; + $link = $title ? $linkRenderer->makeLink( $title, $msg ) : $msg; $s .= '<div id="mw-normal-catlinks" class="mw-normal-catlinks">' . $link . $colon . '<ul>' . $t . '</ul>' . '</div>'; } @@ -507,6 +509,7 @@ function drawCategoryBrowser( $tree ) { $return = ''; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); foreach ( $tree as $element => $parent ) { if ( empty( $parent ) ) { # element start a new list @@ -518,7 +521,7 @@ # add our current element to the list $eltitle = Title::newFromText( $element ); - $return .= Linker::link( $eltitle, htmlspecialchars( $eltitle->getText() ) ); + $return .= $linkRenderer->makeLink( $eltitle, $eltitle->getText() ); } return $return; @@ -645,10 +648,11 @@ $msg = 'viewdeleted'; } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); return $this->msg( $msg )->rawParams( - Linker::linkKnown( + $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( 'Undelete', $this->getTitle()->getPrefixedDBkey() ), - $this->msg( 'restorelink' )->numParams( $n )->escaped() ) + $this->msg( 'restorelink' )->numParams( $n )->text() ) )->escaped(); } } @@ -671,6 +675,7 @@ return $subpages; } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $out->isArticle() && MWNamespace::hasSubpages( $title->getNamespace() ) ) { $ptext = $title->getPrefixedText(); if ( strpos( $ptext, '/' ) !== false ) { @@ -687,9 +692,9 @@ $linkObj = Title::newFromText( $growinglink ); if ( is_object( $linkObj ) && $linkObj->isKnown() ) { - $getlink = Linker::linkKnown( + $getlink = $linkRenderer->makeKnownLink( $linkObj, - htmlspecialchars( $display ) + $display ); $c++; @@ -760,9 +765,10 @@ $msg = 'copyright'; } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $wgRightsPage ) { $title = Title::newFromText( $wgRightsPage ); - $link = Linker::linkKnown( $title, $wgRightsText ); + $link = $linkRenderer->makeKnownLink( $title, $wgRightsText ); } elseif ( $wgRightsUrl ) { $link = Linker::makeExternalLink( $wgRightsUrl, $wgRightsText ); } elseif ( $wgRightsText ) { @@ -917,9 +923,10 @@ * @return string */ function mainPageLink() { - $s = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $s = $linkRenderer->makeKnownLink( Title::newMainPage(), - $this->msg( 'mainpage' )->escaped() + $this->msg( 'mainpage' )->text() ); return $s; @@ -937,9 +944,10 @@ return ''; } - return Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + return $linkRenderer->makeKnownLink( $title, - $this->msg( $desc )->escaped() + $this->msg( $desc )->text() ); } @@ -1385,16 +1393,17 @@ // 999 signifies "more than one revision". We don't know how many, and even if we did, // the number of revisions or authors is not necessarily the same as the number of // "messages". - $newMessagesLink = Linker::linkKnown( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $newMessagesLink = $linkRenderer->makeKnownLink( $uTalkTitle, - $this->msg( 'newmessageslinkplural' )->params( $plural )->escaped(), + $this->msg( 'newmessageslinkplural' )->params( $plural )->text(), [], [ 'redirect' => 'no' ] ); - $newMessagesDiffLink = Linker::linkKnown( + $newMessagesDiffLink = $linkRenderer->makeKnownLink( $uTalkTitle, - $this->msg( 'newmessagesdifflinkplural' )->params( $plural )->escaped(), + $this->msg( 'newmessagesdifflinkplural' )->params( $plural )->text(), [], $lastSeenRev !== null ? [ 'oldid' => $lastSeenRev->getId(), 'diff' => 'cur' ] @@ -1560,12 +1569,14 @@ $linksHtml = []; foreach ( $links as $k => $linkDetails ) { - $linksHtml[] = Linker::link( + $linkRenderer = MediaWikiServices::getInstance()->getLinkRendererFactory()->createFromLegacyOptions( + $linkDetails['options'] + ); + $linksHtml[] = $linkRenderer->makeLink( $linkDetails['targetTitle'], $linkDetails['text'], $linkDetails['attribs'], - $linkDetails['query'], - $linkDetails['options'] + $linkDetails['query'] ); } diff --git a/includes/specialpage/PageQueryPage.php b/includes/specialpage/PageQueryPage.php index 3bb3f85..dc95d34 100644 --- a/includes/specialpage/PageQueryPage.php +++ b/includes/specialpage/PageQueryPage.php @@ -52,8 +52,9 @@ $title = Title::makeTitleSafe( $row->namespace, $row->title ); if ( $title instanceof Title ) { + $linkRenderer = $this->getLinkRenderer(); $text = $wgContLang->convert( $title->getPrefixedText() ); - return Linker::link( $title, htmlspecialchars( $text ) ); + return $linkRenderer->makeLink( $title, $text ); } else { return Html::element( 'span', [ 'class' => 'mw-invalidtitle' ], Linker::getInvalidTitleDescription( $this->getContext(), $row->namespace, $row->title ) ); diff --git a/includes/specialpage/WantedQueryPage.php b/includes/specialpage/WantedQueryPage.php index 00fca12..ae06920 100644 --- a/includes/specialpage/WantedQueryPage.php +++ b/includes/specialpage/WantedQueryPage.php @@ -113,8 +113,9 @@ * @return string */ private function makeWlhLink( $title, $result ) { + $linkRenderer = $this->getLinkRenderer(); $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() ); - $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped(); - return Linker::link( $wlh, $label ); + $label = $this->msg( 'nlinks' )->numParams( $result->value )->text(); + return $linkRenderer->makeLink( $wlh, $label ); } } diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 255e618..f91a989 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -843,7 +843,8 @@ $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) ); $caption = $this->msg( 'search-interwiki-default', $parsed['host'] )->text(); } - $searchLink = Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + $searchLink = $linkRenderer->makeKnownLink( Title::newFromText( "$iwPrefix:Special:Search" ), $this->msg( 'search-interwiki-more' )->text(), [], diff --git a/includes/user/User.php b/includes/user/User.php index fed64c2..f1d9590 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -4833,7 +4833,8 @@ } $title = self::getGroupPage( $group ); if ( $title ) { - return Linker::link( $title, htmlspecialchars( $text ) ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + return $linkRenderer->makeLink( $title, $text ); } else { return htmlspecialchars( $text ); } diff --git a/tests/phpunit/includes/LinkerTest.php b/tests/phpunit/includes/LinkerTest.php index 3edf99f..41376e7 100644 --- a/tests/phpunit/includes/LinkerTest.php +++ b/tests/phpunit/includes/LinkerTest.php @@ -377,7 +377,8 @@ $this->setMwGlobals( 'wgHooks', [ 'LinkBegin' => [ $callback ] ] ); $title = SpecialPage::getTitleFor( 'Blankpage' ); - $out = Linker::link( $title ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $out = $linkRenderer->makeLink( $title ); $this->assertEquals( $expected, $out ); } @@ -420,8 +421,9 @@ $this->setMwGlobals( 'wgHooks', [ 'LinkEnd' => [ $callback ] ] ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $title = SpecialPage::getTitleFor( 'Blankpage' ); - $out = Linker::link( $title ); + $out = $linkRenderer->makeLink( $title ); $this->assertEquals( $expected, $out ); } @@ -454,24 +456,29 @@ 0 // redir ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $linkRenderer->setStubThreshold( 0 ); $this->assertEquals( '', - Linker::getLinkColour( $foobarTitle, 0 ) + $linkRenderer->getLinkClasses( $foobarTitle ) ); + $linkRenderer->setStubThreshold( 20 ); $this->assertEquals( 'stub', - Linker::getLinkColour( $foobarTitle, 20 ) + $linkRenderer->getLinkClasses( $foobarTitle ) ); + $linkRenderer->setStubThreshold( 0 ); $this->assertEquals( 'mw-redirect', - Linker::getLinkColour( $redirectTitle, 0 ) + $linkRenderer->getLinkClasses( $redirectTitle ) ); + $linkRenderer->setStubThreshold( 20 ); $this->assertEquals( '', - Linker::getLinkColour( $userTitle, 20 ) + $linkRenderer->getLinkClasses( $userTitle ) ); } } diff --git a/tests/phpunit/includes/logging/LogFormatterTest.php b/tests/phpunit/includes/logging/LogFormatterTest.php index a21a3ff..bca81cc 100644 --- a/tests/phpunit/includes/logging/LogFormatterTest.php +++ b/tests/phpunit/includes/logging/LogFormatterTest.php @@ -1,4 +1,5 @@ <?php +use MediaWiki\MediaWikiServices; /** * @group Database @@ -101,7 +102,8 @@ $this->user->getEditCount() ); - $titleLink = Linker::link( $this->title, null, [], [] ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $titleLink = $linkRenderer->makeLink( $this->title, null, [], [] ); // $paramsWithoutTools and $paramsWithTools should be only different // in index 0 @@ -121,8 +123,9 @@ * @covers LogFormatter::getActionText */ public function testLogParamsTypeRaw() { - $params = [ '4:raw:raw' => Linker::link( $this->title, null, [], [] ) ]; - $expected = Linker::link( $this->title, null, [], [] ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $params = [ '4:raw:raw' => $linkRenderer->makeLink( $this->title, null, [], [] ) ]; + $expected = $linkRenderer->makeLink( $this->title, null, [], [] ); $entry = $this->newLogEntry( 'param', $params ); $formatter = LogFormatter::newFromEntry( $entry ); @@ -211,8 +214,9 @@ * @covers LogFormatter::getActionText */ public function testLogParamsTypeTitleLink() { + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $params = [ '4:title-link:titleLink' => $this->title->getText() ]; - $expected = Linker::link( $this->title, null, [], [] ); + $expected = $linkRenderer->makeLink( $this->title, null, [], [] ); $entry = $this->newLogEntry( 'param', $params ); $formatter = LogFormatter::newFromEntry( $entry ); -- To view, visit https://gerrit.wikimedia.org/r/332821 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie3a718dc1eae1507f8829fcf419c64c6846d2cb6 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Georggi199 <bmp2...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits