Mass conversion to SpecialPageFactory service
Change-Id: Ia6e1e819ec6cbe8bf75b820109f51d47863e31fc
This commit is contained in:
parent
532b15c800
commit
e68fdb4065
20 changed files with 77 additions and 36 deletions
|
|
@ -205,7 +205,8 @@ class Linker {
|
|||
*/
|
||||
public static function normaliseSpecialPage( LinkTarget $target ) {
|
||||
if ( $target->getNamespace() == NS_SPECIAL && !$target->isExternal() ) {
|
||||
list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $target->getDBkey() );
|
||||
list( $name, $subpage ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $target->getDBkey() );
|
||||
if ( !$name ) {
|
||||
return $target;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -250,14 +250,15 @@ class MediaWiki {
|
|||
// Redirect loops, titleless URL, $wgUsePathInfo URLs, and URLs with a variant
|
||||
} elseif ( !$this->tryNormaliseRedirect( $title ) ) {
|
||||
// Prevent information leak via Special:MyPage et al (T109724)
|
||||
$spFactory = MediaWikiServices::getInstance()->getSpecialPageFactory();
|
||||
if ( $title->isSpecialPage() ) {
|
||||
$specialPage = SpecialPageFactory::getPage( $title->getDBkey() );
|
||||
$specialPage = $spFactory->getPage( $title->getDBkey() );
|
||||
if ( $specialPage instanceof RedirectSpecialPage ) {
|
||||
$specialPage->setContext( $this->context );
|
||||
if ( $this->config->get( 'HideIdentifiableRedirects' )
|
||||
&& $specialPage->personallyIdentifiableTarget()
|
||||
) {
|
||||
list( , $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
|
||||
list( , $subpage ) = $spFactory->resolveAlias( $title->getDBkey() );
|
||||
$target = $specialPage->getRedirect( $subpage );
|
||||
// target can also be true. We let that case fall through to normal processing.
|
||||
if ( $target instanceof Title ) {
|
||||
|
|
@ -284,7 +285,7 @@ class MediaWiki {
|
|||
// Special pages ($title may have changed since if statement above)
|
||||
if ( $title->isSpecialPage() ) {
|
||||
// Actions that need to be made when we have a special pages
|
||||
SpecialPageFactory::executePath( $title, $this->context );
|
||||
$spFactory->executePath( $title, $this->context );
|
||||
} else {
|
||||
// ...otherwise treat it as an article view. The article
|
||||
// may still be a wikipage redirect to another article or URL.
|
||||
|
|
@ -338,7 +339,8 @@ class MediaWiki {
|
|||
}
|
||||
|
||||
if ( $title->isSpecialPage() ) {
|
||||
list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
|
||||
list( $name, $subpage ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $title->getDBkey() );
|
||||
if ( $name ) {
|
||||
$title = SpecialPage::getTitleFor( $name, $subpage );
|
||||
}
|
||||
|
|
@ -1055,7 +1057,8 @@ class MediaWiki {
|
|||
|
||||
$invokedWithSuccess = true;
|
||||
if ( $sock ) {
|
||||
$special = SpecialPageFactory::getPage( 'RunJobs' );
|
||||
$special = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getPage( 'RunJobs' );
|
||||
$url = $special->getPageTitle()->getCanonicalURL( $query );
|
||||
$req = (
|
||||
"POST $url HTTP/1.1\r\n" .
|
||||
|
|
|
|||
|
|
@ -3075,7 +3075,8 @@ class OutputPage extends ContextSource {
|
|||
|
||||
if ( $ns == NS_SPECIAL ) {
|
||||
list( $canonicalSpecialPageName, /*...*/ ) =
|
||||
SpecialPageFactory::resolveAlias( $title->getDBkey() );
|
||||
MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $title->getDBkey() );
|
||||
} elseif ( $this->canUseWikiPage() ) {
|
||||
$wikiPage = $this->getWikiPage();
|
||||
$curRevisionId = $wikiPage->getLatest();
|
||||
|
|
|
|||
|
|
@ -173,13 +173,14 @@ abstract class PrefixSearch {
|
|||
$subpageSearch = $searchParts[1] ?? null;
|
||||
|
||||
// Handle subpage search separately.
|
||||
$spFactory = MediaWikiServices::getInstance()->getSpecialPageFactory();
|
||||
if ( $subpageSearch !== null ) {
|
||||
// Try matching the full search string as a page name
|
||||
$specialTitle = Title::makeTitleSafe( NS_SPECIAL, $searchKey );
|
||||
if ( !$specialTitle ) {
|
||||
return [];
|
||||
}
|
||||
$special = SpecialPageFactory::getPage( $specialTitle->getText() );
|
||||
$special = $spFactory->getPage( $specialTitle->getText() );
|
||||
if ( $special ) {
|
||||
$subpages = $special->prefixSearchSubpages( $subpageSearch, $limit, $offset );
|
||||
return array_map( function ( $sub ) use ( $specialTitle ) {
|
||||
|
|
@ -198,12 +199,12 @@ abstract class PrefixSearch {
|
|||
// Unlike SpecialPage itself, we want the canonical forms of both
|
||||
// canonical and alias title forms...
|
||||
$keys = [];
|
||||
foreach ( SpecialPageFactory::getNames() as $page ) {
|
||||
foreach ( $spFactory->getNames() as $page ) {
|
||||
$keys[$contLang->caseFold( $page )] = [ 'page' => $page, 'rank' => 0 ];
|
||||
}
|
||||
|
||||
foreach ( $contLang->getSpecialPageAliases() as $page => $aliases ) {
|
||||
if ( !in_array( $page, SpecialPageFactory::getNames() ) ) {# T22885
|
||||
if ( !in_array( $page, $spFactory->getNames() ) ) {# T22885
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1119,7 +1119,9 @@ class Title implements LinkTarget {
|
|||
*/
|
||||
public function isSpecial( $name ) {
|
||||
if ( $this->isSpecialPage() ) {
|
||||
list( $thisName, /* $subpage */ ) = SpecialPageFactory::resolveAlias( $this->mDbkeyform );
|
||||
list( $thisName, /* $subpage */ ) =
|
||||
MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $this->mDbkeyform );
|
||||
if ( $name == $thisName ) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1135,9 +1137,10 @@ class Title implements LinkTarget {
|
|||
*/
|
||||
public function fixSpecialName() {
|
||||
if ( $this->isSpecialPage() ) {
|
||||
list( $canonicalName, $par ) = SpecialPageFactory::resolveAlias( $this->mDbkeyform );
|
||||
$spFactory = MediaWikiServices::getInstance()->getSpecialPageFactory();
|
||||
list( $canonicalName, $par ) = $spFactory->resolveAlias( $this->mDbkeyform );
|
||||
if ( $canonicalName ) {
|
||||
$localName = SpecialPageFactory::getLocalNameFor( $canonicalName, $par );
|
||||
$localName = $spFactory->getLocalNameFor( $canonicalName, $par );
|
||||
if ( $localName != $this->mDbkeyform ) {
|
||||
return self::makeTitle( NS_SPECIAL, $localName );
|
||||
}
|
||||
|
|
@ -2705,7 +2708,9 @@ class Title implements LinkTarget {
|
|||
} elseif ( $this->isSpecialPage() ) {
|
||||
# If it's a special page, ditch the subpage bit and check again
|
||||
$name = $this->mDbkeyform;
|
||||
list( $name, /* $subpage */ ) = SpecialPageFactory::resolveAlias( $name );
|
||||
list( $name, /* $subpage */ ) =
|
||||
MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $name );
|
||||
if ( $name ) {
|
||||
$pure = SpecialPage::getTitleFor( $name )->getPrefixedText();
|
||||
if ( in_array( $pure, $wgWhitelistRead, true ) ) {
|
||||
|
|
@ -4678,7 +4683,8 @@ class Title implements LinkTarget {
|
|||
return (bool)wfFindFile( $this );
|
||||
case NS_SPECIAL:
|
||||
// valid special page
|
||||
return SpecialPageFactory::exists( $this->mDbkeyform );
|
||||
return MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
exists( $this->mDbkeyform );
|
||||
case NS_MAIN:
|
||||
// selflink, possibly with fragment
|
||||
return $this->mDbkeyform == '';
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
* @ingroup Actions
|
||||
*/
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* An action that just passes the request to the relevant special page
|
||||
*
|
||||
|
|
@ -92,6 +94,7 @@ class SpecialPageAction extends FormlessAction {
|
|||
}
|
||||
|
||||
// map actions to (whitelisted) special pages
|
||||
return SpecialPageFactory::getPage( self::$actionToSpecialPageMapping[$action] );
|
||||
return MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getPage( self::$actionToSpecialPageMapping[$action] );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1217,7 +1217,8 @@ class ApiPageSet extends ApiBase {
|
|||
$this->mAllSpecials[$ns][$dbkey] = $this->mFakePageId;
|
||||
$target = null;
|
||||
if ( $ns === NS_SPECIAL && $this->mResolveRedirects ) {
|
||||
$special = SpecialPageFactory::getPage( $dbkey );
|
||||
$spFactory = MediaWikiServices::getInstance()->getSpecialPageFactory();
|
||||
$special = $spFactory->getPage( $dbkey );
|
||||
if ( $special instanceof RedirectSpecialArticle ) {
|
||||
// Only RedirectSpecialArticle is intended to redirect to an article, other kinds of
|
||||
// RedirectSpecialPage are probably applying weird URL parameters we don't want to handle.
|
||||
|
|
@ -1225,7 +1226,7 @@ class ApiPageSet extends ApiBase {
|
|||
$context->setTitle( $titleObj );
|
||||
$context->setRequest( new FauxRequest );
|
||||
$special->setContext( $context );
|
||||
list( /* $alias */, $subpage ) = SpecialPageFactory::resolveAlias( $dbkey );
|
||||
list( /* $alias */, $subpage ) = $spFactory->resolveAlias( $dbkey );
|
||||
$target = $special->getRedirect( $subpage );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -341,8 +341,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
|
|||
|
||||
protected function appendSpecialPageAliases( $property ) {
|
||||
$data = [];
|
||||
$aliases = MediaWikiServices::getInstance()->getContentLanguage()->getSpecialPageAliases();
|
||||
foreach ( SpecialPageFactory::getNames() as $specialpage ) {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$aliases = $services->getContentLanguage()->getSpecialPageAliases();
|
||||
foreach ( $services->getSpecialPageFactory()->getNames() as $specialpage ) {
|
||||
if ( isset( $aliases[$specialpage] ) ) {
|
||||
$arr = [ 'realname' => $specialpage, 'aliases' => $aliases[$specialpage] ];
|
||||
ApiResult::setIndexedTagName( $arr['aliases'], 'alias' );
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
class OldChangesList extends ChangesList {
|
||||
|
||||
/**
|
||||
|
|
@ -90,7 +92,8 @@ class OldChangesList extends ChangesList {
|
|||
}
|
||||
// Log entries (old format) or log targets, and special pages
|
||||
} elseif ( $rc->mAttribs['rc_namespace'] == NS_SPECIAL ) {
|
||||
list( $name, $htmlubpage ) = SpecialPageFactory::resolveAlias( $rc->mAttribs['rc_title'] );
|
||||
list( $name, $htmlubpage ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $rc->mAttribs['rc_title'] );
|
||||
if ( $name == 'Log' ) {
|
||||
$this->insertLog( $html, $rc->getTitle(), $htmlubpage );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,9 +294,11 @@ class LogPage {
|
|||
return $title->getPrefixedText();
|
||||
}
|
||||
|
||||
$linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$linkRenderer = $services->getLinkRenderer();
|
||||
if ( $title->isSpecialPage() ) {
|
||||
list( $name, $par ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
|
||||
list( $name, $par ) = $services->getSpecialPageFactory()->
|
||||
resolveAlias( $title->getDBkey() );
|
||||
|
||||
# Use the language name for log titles, rather than Log/X
|
||||
if ( $name == 'Log' ) {
|
||||
|
|
|
|||
|
|
@ -950,7 +950,8 @@ class CoreParserFunctions {
|
|||
}
|
||||
|
||||
public static function special( $parser, $text ) {
|
||||
list( $page, $subpage ) = SpecialPageFactory::resolveAlias( $text );
|
||||
list( $page, $subpage ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $text );
|
||||
if ( $page ) {
|
||||
$title = SpecialPage::getTitleFor( $page, $subpage );
|
||||
return $title->getPrefixedText();
|
||||
|
|
|
|||
|
|
@ -449,7 +449,8 @@ abstract class Skin extends ContextSource {
|
|||
if ( $title->isSpecialPage() ) {
|
||||
$type = 'ns-special';
|
||||
// T25315: provide a class based on the canonical special page name without subpages
|
||||
list( $canonicalName ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
|
||||
list( $canonicalName ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $title->getDBkey() );
|
||||
if ( $canonicalName ) {
|
||||
$type .= ' ' . Sanitizer::escapeClass( "mw-special-$canonicalName" );
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -659,7 +659,9 @@ class SkinTemplate extends Skin {
|
|||
# so it doesn't contain the original alias-with-subpage.
|
||||
$origTitle = Title::newFromText( $request->getText( 'title' ) );
|
||||
if ( $origTitle instanceof Title && $origTitle->isSpecialPage() ) {
|
||||
list( $spName, $spPar ) = SpecialPageFactory::resolveAlias( $origTitle->getText() );
|
||||
list( $spName, $spPar ) =
|
||||
MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
resolveAlias( $origTitle->getText() );
|
||||
$active = $spName == 'Contributions'
|
||||
&& ( ( $spPar && $spPar == $this->username )
|
||||
|| $request->getText( 'target' ) == $this->username );
|
||||
|
|
|
|||
|
|
@ -95,7 +95,8 @@ class SpecialPage implements MessageLocalizer {
|
|||
* @return TitleValue
|
||||
*/
|
||||
public static function getTitleValueFor( $name, $subpage = false, $fragment = '' ) {
|
||||
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
|
||||
$name = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getLocalNameFor( $name, $subpage );
|
||||
|
||||
return new TitleValue( NS_SPECIAL, $name, $fragment );
|
||||
}
|
||||
|
|
@ -108,7 +109,8 @@ class SpecialPage implements MessageLocalizer {
|
|||
* @return Title|null Title object or null if the page doesn't exist
|
||||
*/
|
||||
public static function getSafeTitleFor( $name, $subpage = false ) {
|
||||
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
|
||||
$name = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getLocalNameFor( $name, $subpage );
|
||||
if ( $name ) {
|
||||
return Title::makeTitleSafe( NS_SPECIAL, $name );
|
||||
} else {
|
||||
|
|
@ -233,7 +235,8 @@ class SpecialPage implements MessageLocalizer {
|
|||
*/
|
||||
function getLocalName() {
|
||||
if ( !isset( $this->mLocalName ) ) {
|
||||
$this->mLocalName = SpecialPageFactory::getLocalNameFor( $this->mName );
|
||||
$this->mLocalName = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getLocalNameFor( $this->mName );
|
||||
}
|
||||
|
||||
return $this->mLocalName;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
* @ingroup SpecialPage
|
||||
*/
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* A special page that lists special pages
|
||||
*
|
||||
|
|
@ -50,7 +52,8 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
|
|||
}
|
||||
|
||||
private function getPageGroups() {
|
||||
$pages = SpecialPageFactory::getUsablePages( $this->getUser() );
|
||||
$pages = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getUsablePages( $this->getUser() );
|
||||
|
||||
if ( !count( $pages ) ) {
|
||||
# Yeah, that was pointless. Thanks for coming.
|
||||
|
|
|
|||
|
|
@ -66,7 +66,8 @@ class UpdateSpecialPages extends Maintenance {
|
|||
continue;
|
||||
}
|
||||
|
||||
$specialObj = SpecialPageFactory::getPage( $special );
|
||||
$specialObj = MediaWikiServices::getInstance()->getSpecialPageFactory()->
|
||||
getPage( $special );
|
||||
if ( !$specialObj ) {
|
||||
$this->output( "No such special page: $special\n" );
|
||||
exit;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* @group API
|
||||
* @group medium
|
||||
|
|
@ -107,7 +109,7 @@ class ApiQuerySiteinfoTest extends ApiTestCase {
|
|||
|
||||
public function testSpecialPageAliases() {
|
||||
$this->assertCount(
|
||||
count( SpecialPageFactory::getNames() ),
|
||||
count( MediaWikiServices::getInstance()->getSpecialPageFactory()->getNames() ),
|
||||
$this->doQuery( 'specialpagealiases' )
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
* @author Antoine Musso
|
||||
*/
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* @group Database
|
||||
* @covers QueryPage<extended>
|
||||
|
|
@ -43,7 +45,8 @@ class QueryAllSpecialPagesTest extends MediaWikiTestCase {
|
|||
$class = $page[0];
|
||||
$name = $page[1];
|
||||
if ( !in_array( $class, $this->manualTest ) ) {
|
||||
$this->queryPages[$class] = SpecialPageFactory::getPage( $name );
|
||||
$this->queryPages[$class] =
|
||||
MediaWikiServices::getInstance()->getSpecialPageFactory()->getPage( $name );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ class SpecialSearchTest extends MediaWikiTestCase {
|
|||
|
||||
$ctx = new RequestContext;
|
||||
$sp = Title::newFromText( 'Special:Search/foo_bar' );
|
||||
SpecialPageFactory::executePath( $sp, $ctx );
|
||||
MediaWikiServices::getInstance()->getSpecialPageFactory()->executePath( $sp, $ctx );
|
||||
$url = $ctx->getOutput()->getRedirect();
|
||||
// some older versions of hhvm have a bug that doesn't parse relative
|
||||
// urls with a port, so help it out a little bit.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* Test that runs against all registered special pages to make sure that regular
|
||||
* execution of the special page does not cause a fatal error.
|
||||
|
|
@ -24,8 +26,9 @@ class SpecialPageFatalTest extends MediaWikiTestCase {
|
|||
|
||||
public function provideSpecialPages() {
|
||||
$specialPages = [];
|
||||
foreach ( SpecialPageFactory::getNames() as $name ) {
|
||||
$specialPages[$name] = [ SpecialPageFactory::getPage( $name ) ];
|
||||
$spf = MediaWikiServices::getInstance()->getSpecialPageFactory();
|
||||
foreach ( $spf->getNames() as $name ) {
|
||||
$specialPages[$name] = [ $spf->getPage( $name ) ];
|
||||
}
|
||||
return $specialPages;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue