From b0bd03fb136d38e95e47c823d5b6dcf479abc242 Mon Sep 17 00:00:00 2001 From: Yuriy Shnitkovskiy Date: Wed, 30 Nov 2016 23:28:55 +0200 Subject: [PATCH] Replace Linker::link() with LinkRenderer in includes directory * CategoryViewer * OutputPage * Preferences Bug: T149346 Change-Id: I9f9bcd9b461884817e8ceefbc6757c436221e331 --- includes/CategoryViewer.php | 6 +++++- includes/OutputPage.php | 11 ++++++++--- includes/Preferences.php | 27 +++++++++++++++++---------- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/includes/CategoryViewer.php b/includes/CategoryViewer.php index b95f274406..4c4b8bbc87 100644 --- a/includes/CategoryViewer.php +++ b/includes/CategoryViewer.php @@ -197,7 +197,11 @@ class CategoryViewer extends ContextSource { $link = null; Hooks::run( 'CategoryViewer::generateLink', [ $type, $title, $html, &$link ] ); if ( $link === null ) { - $link = Linker::link( $title, $html ); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + if ( $html !== null ) { + $html = new HtmlArmor( $html ); + } + $link = $linkRenderer->makeLink( $title, $html ); } if ( $isRedirect ) { $link = '' . $link . ''; diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 43d71abca0..60701141a7 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -21,6 +21,7 @@ */ use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; use MediaWiki\Session\SessionManager; use WrappedString\WrappedString; use WrappedString\WrappedStringList; @@ -1010,8 +1011,9 @@ class OutputPage extends ContextSource { if ( $title->isRedirect() ) { $query['redirect'] = 'no'; } + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); return wfMessage( 'backlinksubtitle' ) - ->rawParams( Linker::link( $title, null, [], $query ) ); + ->rawParams( $linkRenderer->makeLink( $title, null, [], $query ) ); } /** @@ -1269,6 +1271,7 @@ class OutputPage extends ContextSource { 'OutputPageMakeCategoryLinks', [ &$this, $categories, &$this->mCategoryLinks ] ) ) { + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); foreach ( $categories as $category => $type ) { // array keys will cast numeric category names to ints, so cast back to string $category = (string)$category; @@ -1283,7 +1286,7 @@ class OutputPage extends ContextSource { } $text = $wgContLang->convertHtml( $title->getText() ); $this->mCategories[$type][] = $title->getText(); - $this->mCategoryLinks[$type][] = Linker::link( $title, $text ); + $this->mCategoryLinks[$type][] = $linkRenderer->makeLink( $title, new HtmlArmor( $text ) ); } } } @@ -2653,8 +2656,10 @@ class OutputPage extends ContextSource { * @param array $options Options array to pass to Linker */ public function addReturnTo( $title, array $query = [], $text = null, $options = [] ) { + $linkRenderer = MediaWikiServices::getInstance() + ->getLinkRendererFactory()->createFromLegacyOptions( $options ); $link = $this->msg( 'returnto' )->rawParams( - Linker::link( $title, $text, [], $query, $options ) )->escaped(); + $linkRenderer->makeLink( $title, $text, [], $query ) )->escaped(); $this->addHTML( "

{$link}

\n" ); } diff --git a/includes/Preferences.php b/includes/Preferences.php index d86b19a5ce..d40e0c1323 100644 --- a/includes/Preferences.php +++ b/includes/Preferences.php @@ -21,6 +21,7 @@ */ use MediaWiki\Auth\AuthManager; use MediaWiki\Auth\PasswordAuthenticationRequest; +use MediaWiki\MediaWikiServices; /** * We're now using the HTMLForm object with some customisation to generate the @@ -253,7 +254,9 @@ class Preferences { 'section' => 'personal/info', ]; - $editCount = Linker::link( SpecialPage::getTitleFor( "Contributions", $userName ), + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + + $editCount = $linkRenderer->makeLink( SpecialPage::getTitleFor( "Contributions", $userName ), $lang->formatNum( $user->getEditCount() ) ); $defaultPreferences['editcount'] = [ @@ -297,8 +300,8 @@ class Preferences { if ( $canEditPrivateInfo && $authManager->allowsAuthenticationDataChange( new PasswordAuthenticationRequest(), false )->isGood() ) { - $link = Linker::link( SpecialPage::getTitleFor( 'ChangePassword' ), - $context->msg( 'prefs-resetpass' )->escaped(), [], + $link = $linkRenderer->makeLink( SpecialPage::getTitleFor( 'ChangePassword' ), + $context->msg( 'prefs-resetpass' )->text(), [], [ 'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText() ] ); $defaultPreferences['password'] = [ @@ -448,9 +451,9 @@ class Preferences { $emailAddress = $user->getEmail() ? htmlspecialchars( $user->getEmail() ) : ''; if ( $canEditPrivateInfo && $authManager->allowsPropertyChange( 'emailaddress' ) ) { - $link = Linker::link( + $link = $linkRenderer->makeLink( SpecialPage::getTitleFor( 'ChangeEmail' ), - $context->msg( $user->getEmail() ? 'prefs-changeemail' : 'prefs-setemail' )->escaped(), + $context->msg( $user->getEmail() ? 'prefs-changeemail' : 'prefs-setemail' )->text(), [], [ 'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText() ] ); @@ -601,14 +604,15 @@ class Preferences { $linkTools = []; $userName = $user->getName(); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); if ( $allowUserCss ) { $cssPage = Title::makeTitleSafe( NS_USER, $userName . '/common.css' ); - $linkTools[] = Linker::link( $cssPage, $context->msg( 'prefs-custom-css' )->escaped() ); + $linkTools[] = $linkRenderer->makeLink( $cssPage, $context->msg( 'prefs-custom-css' )->text() ); } if ( $allowUserJs ) { $jsPage = Title::makeTitleSafe( NS_USER, $userName . '/common.js' ); - $linkTools[] = Linker::link( $jsPage, $context->msg( 'prefs-custom-js' )->escaped() ); + $linkTools[] = $linkRenderer->makeLink( $jsPage, $context->msg( 'prefs-custom-js' )->text() ); } $defaultPreferences['commoncssjs'] = [ @@ -1110,6 +1114,8 @@ class Preferences { $mptitle = Title::newMainPage(); $previewtext = $context->msg( 'skin-preview' )->escaped(); + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + # Only show skins that aren't disabled in $wgSkipSkins $validSkinNames = Skin::getAllowedSkins(); @@ -1145,12 +1151,12 @@ class Preferences { # Create links to user CSS/JS pages if ( $allowUserCss ) { $cssPage = Title::makeTitleSafe( NS_USER, $user->getName() . '/' . $skinkey . '.css' ); - $linkTools[] = Linker::link( $cssPage, $context->msg( 'prefs-custom-css' )->escaped() ); + $linkTools[] = $linkRenderer->makeLink( $cssPage, $context->msg( 'prefs-custom-css' )->text() ); } if ( $allowUserJs ) { $jsPage = Title::makeTitleSafe( NS_USER, $user->getName() . '/' . $skinkey . '.js' ); - $linkTools[] = Linker::link( $jsPage, $context->msg( 'prefs-custom-js' )->escaped() ); + $linkTools[] = $linkRenderer->makeLink( $jsPage, $context->msg( 'prefs-custom-js' )->text() ); } $display = $sn . ' ' . $context->msg( 'parentheses' ) @@ -1624,7 +1630,8 @@ class PreferencesForm extends HTMLForm { if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) { $t = SpecialPage::getTitleFor( 'Preferences', 'reset' ); - $html .= "\n" . Linker::link( $t, $this->msg( 'restoreprefs' )->escaped(), + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $html .= "\n" . $linkRenderer->makeLink( $t, $this->msg( 'restoreprefs' )->text(), Html::buttonAttributes( $attrs, [ 'mw-ui-quiet' ] ) ); $html = Xml::tags( 'div', [ 'class' => 'mw-prefs-buttons' ], $html ); -- 2.20.1