This helps to find renamed or misspelled classes earlier.
Phan will check the class names
Change-Id: I07a925c2a9404b0865e8a8703864ded9d14aa769
*/
$wgContentHandlers = [
// the usual case
- CONTENT_MODEL_WIKITEXT => 'WikitextContentHandler',
+ CONTENT_MODEL_WIKITEXT => WikitextContentHandler::class,
// dumb version, no syntax highlighting
- CONTENT_MODEL_JAVASCRIPT => 'JavaScriptContentHandler',
+ CONTENT_MODEL_JAVASCRIPT => JavaScriptContentHandler::class,
// simple implementation, for use by extensions, etc.
- CONTENT_MODEL_JSON => 'JsonContentHandler',
+ CONTENT_MODEL_JSON => JsonContentHandler::class,
// dumb version, no syntax highlighting
- CONTENT_MODEL_CSS => 'CssContentHandler',
+ CONTENT_MODEL_CSS => CssContentHandler::class,
// plain text, for use by extensions, etc.
- CONTENT_MODEL_TEXT => 'TextContentHandler',
+ CONTENT_MODEL_TEXT => TextContentHandler::class,
];
/**
* Whether to use SSL in DB connection.
*
* This setting is only used if $wgLBFactoryConf['class'] is set to
- * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * '\Wikimedia\Rdbms\LBFactorySimple' and $wgDBservers is an empty array; otherwise
* the DBO_SSL flag must be set in the 'flags' option of the database
* connection to achieve the same functionality.
*/
* Whether to use compression in DB connection.
*
* This setting is only used $wgLBFactoryConf['class'] is set to
- * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * '\Wikimedia\Rdbms\LBFactorySimple' and $wgDBservers is an empty array; otherwise
* the DBO_COMPRESS flag must be set in the 'flags' option of the database
* connection to achieve the same functionality.
*/
* The LBFactoryMulti class is provided for this purpose, please see
* includes/db/LBFactoryMulti.php for configuration information.
*/
-$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
+$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
/**
* After a state-changing request is done by a client, this determines
* ];
* @endcode
*
- * Used by LBFactorySimple, may be ignored if $wgLBFactoryConf is set to
+ * Used by \Wikimedia\Rdbms\LBFactorySimple, may be ignored if $wgLBFactoryConf is set to
* another class.
*/
$wgExternalServers = [];
* given, giving a callable function which will generate a suitable cache object.
*/
$wgObjectCaches = [
- CACHE_NONE => [ 'class' => 'EmptyBagOStuff', 'reportDupes' => false ],
- CACHE_DB => [ 'class' => 'SqlBagOStuff', 'loggroup' => 'SQLBagOStuff' ],
+ CACHE_NONE => [ 'class' => EmptyBagOStuff::class, 'reportDupes' => false ],
+ CACHE_DB => [ 'class' => SqlBagOStuff::class, 'loggroup' => 'SQLBagOStuff' ],
CACHE_ANYTHING => [ 'factory' => 'ObjectCache::newAnything' ],
CACHE_ACCEL => [ 'factory' => 'ObjectCache::getLocalServerInstance' ],
- CACHE_MEMCACHED => [ 'class' => 'MemcachedPhpBagOStuff', 'loggroup' => 'memcached' ],
+ CACHE_MEMCACHED => [ 'class' => MemcachedPhpBagOStuff::class, 'loggroup' => 'memcached' ],
'db-replicated' => [
- 'class' => 'ReplicatedBagOStuff',
+ 'class' => ReplicatedBagOStuff::class,
'readFactory' => [
- 'class' => 'SqlBagOStuff',
+ 'class' => SqlBagOStuff::class,
'args' => [ [ 'slaveOnly' => true ] ]
],
'writeFactory' => [
- 'class' => 'SqlBagOStuff',
+ 'class' => SqlBagOStuff::class,
'args' => [ [ 'slaveOnly' => false ] ]
],
'loggroup' => 'SQLBagOStuff',
'reportDupes' => false
],
- 'apc' => [ 'class' => 'APCBagOStuff', 'reportDupes' => false ],
- 'apcu' => [ 'class' => 'APCUBagOStuff', 'reportDupes' => false ],
- 'xcache' => [ 'class' => 'XCacheBagOStuff', 'reportDupes' => false ],
- 'wincache' => [ 'class' => 'WinCacheBagOStuff', 'reportDupes' => false ],
- 'memcached-php' => [ 'class' => 'MemcachedPhpBagOStuff', 'loggroup' => 'memcached' ],
- 'memcached-pecl' => [ 'class' => 'MemcachedPeclBagOStuff', 'loggroup' => 'memcached' ],
- 'hash' => [ 'class' => 'HashBagOStuff', 'reportDupes' => false ],
+ 'apc' => [ 'class' => APCBagOStuff::class, 'reportDupes' => false ],
+ 'apcu' => [ 'class' => APCUBagOStuff::class, 'reportDupes' => false ],
+ 'xcache' => [ 'class' => XCacheBagOStuff::class, 'reportDupes' => false ],
+ 'wincache' => [ 'class' => WinCacheBagOStuff::class, 'reportDupes' => false ],
+ 'memcached-php' => [ 'class' => MemcachedPhpBagOStuff::class, 'loggroup' => 'memcached' ],
+ 'memcached-pecl' => [ 'class' => MemcachedPeclBagOStuff::class, 'loggroup' => 'memcached' ],
+ 'hash' => [ 'class' => HashBagOStuff::class, 'reportDupes' => false ],
];
/**
*/
$wgWANObjectCaches = [
CACHE_NONE => [
- 'class' => 'WANObjectCache',
+ 'class' => WANObjectCache::class,
'cacheId' => CACHE_NONE,
'channels' => []
]
/* Example of a simple single data-center cache:
'memcached-php' => [
- 'class' => 'WANObjectCache',
+ 'class' => WANObjectCache::class,
'cacheId' => 'memcached-php',
'channels' => [ 'purge' => 'wancache-main-memcached-purge' ]
]
* Use maintenance/rebuildLocalisationCache.php instead.
*/
$wgLocalisationCacheConf = [
- 'class' => 'LocalisationCache',
+ 'class' => LocalisationCache::class,
'store' => 'detect',
'storeClass' => false,
'storeDirectory' => false,
* an extension setup function.
*/
$wgParserConf = [
- 'class' => 'Parser',
- # 'preprocessorClass' => 'Preprocessor_Hash',
+ 'class' => Parser::class,
+ # 'preprocessorClass' => Preprocessor_Hash::class,
];
/**
* @since 1.27
*/
$wgCentralIdLookupProviders = [
- 'local' => [ 'class' => 'LocalIdLookup' ],
+ 'local' => [ 'class' => LocalIdLookup::class ],
];
/**
* An advanced example:
* @code
* $wgPasswordConfig['bcrypt-peppered'] = [
- * 'class' => 'EncryptedPassword',
+ * 'class' => EncryptedPassword::class,
* 'underlying' => 'bcrypt',
* 'secrets' => [],
* 'cipher' => MCRYPT_RIJNDAEL_256,
*/
$wgPasswordConfig = [
'A' => [
- 'class' => 'MWOldPassword',
+ 'class' => MWOldPassword::class,
],
'B' => [
- 'class' => 'MWSaltedPassword',
+ 'class' => MWSaltedPassword::class,
],
'pbkdf2-legacyA' => [
- 'class' => 'LayeredParameterizedPassword',
+ 'class' => LayeredParameterizedPassword::class,
'types' => [
'A',
'pbkdf2',
],
],
'pbkdf2-legacyB' => [
- 'class' => 'LayeredParameterizedPassword',
+ 'class' => LayeredParameterizedPassword::class,
'types' => [
'B',
'pbkdf2',
],
],
'bcrypt' => [
- 'class' => 'BcryptPassword',
+ 'class' => BcryptPassword::class,
'cost' => 9,
],
'pbkdf2' => [
- 'class' => 'Pbkdf2Password',
+ 'class' => Pbkdf2Password::class,
'algo' => 'sha512',
'cost' => '30000',
'length' => '64',
* Write SQL queries to the debug log.
*
* This setting is only used $wgLBFactoryConf['class'] is set to
- * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * '\Wikimedia\Rdbms\LBFactorySimple' and $wgDBservers is an empty array; otherwise
* the DBO_DEBUG flag must be set in the 'flags' option of the database
* connection to achieve the same functionality.
*/
*
* @par To completely disable logging:
* @code
- * $wgMWLoggerDefaultSpi = [ 'class' => '\\MediaWiki\\Logger\\NullSpi' ];
+ * $wgMWLoggerDefaultSpi = [ 'class' => \MediaWiki\Logger\NullSpi::class ];
* @endcode
*
* @since 1.25
* @see MwLogger
*/
$wgMWLoggerDefaultSpi = [
- 'class' => '\\MediaWiki\\Logger\\LegacySpi',
+ 'class' => \MediaWiki\Logger\LegacySpi::class,
];
/**
* 'omit_bots' => true,
* ];
* @example $wgRCFeeds['example'] = [
- * 'class' => 'ExampleRCFeed',
+ * 'class' => ExampleRCFeed::class,
* ];
* @since 1.22
*/
* @since 1.22
*/
$wgRCEngines = [
- 'redis' => 'RedisPubSubFeedEngine',
- 'udp' => 'UDPRCFeedEngine',
+ 'redis' => RedisPubSubFeedEngine::class,
+ 'udp' => UDPRCFeedEngine::class,
];
/**
* $wgOut->isSyndicated() is true.
*/
$wgFeedClasses = [
- 'rss' => 'RSSFeed',
- 'atom' => 'AtomFeed',
+ 'rss' => RSSFeed::class,
+ 'atom' => AtomFeed::class,
];
/**
* or (since 1.30) a callback to use for creating the job object.
*/
$wgJobClasses = [
- 'refreshLinks' => 'RefreshLinksJob',
- 'deleteLinks' => 'DeleteLinksJob',
- 'htmlCacheUpdate' => 'HTMLCacheUpdateJob',
- 'sendMail' => 'EmaillingJob',
- 'enotifNotify' => 'EnotifNotifyJob',
- 'fixDoubleRedirect' => 'DoubleRedirectJob',
- 'AssembleUploadChunks' => 'AssembleUploadChunksJob',
- 'PublishStashedFile' => 'PublishStashedFileJob',
- 'ThumbnailRender' => 'ThumbnailRenderJob',
- 'recentChangesUpdate' => 'RecentChangesUpdateJob',
- 'refreshLinksPrioritized' => 'RefreshLinksJob',
- 'refreshLinksDynamic' => 'RefreshLinksJob',
- 'activityUpdateJob' => 'ActivityUpdateJob',
- 'categoryMembershipChange' => 'CategoryMembershipChangeJob',
- 'clearUserWatchlist' => 'ClearUserWatchlistJob',
- 'cdnPurge' => 'CdnPurgeJob',
- 'enqueue' => 'EnqueueJob', // local queue for multi-DC setups
- 'null' => 'NullJob'
+ 'refreshLinks' => RefreshLinksJob::class,
+ 'deleteLinks' => DeleteLinksJob::class,
+ 'htmlCacheUpdate' => HTMLCacheUpdateJob::class,
+ 'sendMail' => EmaillingJob::class,
+ 'enotifNotify' => EnotifNotifyJob::class,
+ 'fixDoubleRedirect' => DoubleRedirectJob::class,
+ 'AssembleUploadChunks' => AssembleUploadChunksJob::class,
+ 'PublishStashedFile' => PublishStashedFileJob::class,
+ 'ThumbnailRender' => ThumbnailRenderJob::class,
+ 'recentChangesUpdate' => RecentChangesUpdateJob::class,
+ 'refreshLinksPrioritized' => RefreshLinksJob::class,
+ 'refreshLinksDynamic' => RefreshLinksJob::class,
+ 'activityUpdateJob' => ActivityUpdateJob::class,
+ 'categoryMembershipChange' => CategoryMembershipChangeJob::class,
+ 'clearUserWatchlist' => ClearUserWatchlistJob::class,
+ 'cdnPurge' => CdnPurgeJob::class,
+ 'enqueue' => EnqueueJob::class, // local queue for multi-DC setups
+ 'null' => NullJob::class,
];
/**
* These settings should be global to all wikis.
*/
$wgJobTypeConf = [
- 'default' => [ 'class' => 'JobQueueDB', 'order' => 'random', 'claimTTL' => 3600 ],
+ 'default' => [ 'class' => JobQueueDB::class, 'order' => 'random', 'claimTTL' => 3600 ],
];
/**
* These settings should be global to all wikis.
*/
$wgJobQueueAggregator = [
- 'class' => 'JobQueueAggregatorNull'
+ 'class' => JobQueueAggregatorNull::class
];
/**
* Expensive Querypages are already updated.
*/
$wgSpecialPageCacheUpdates = [
- 'Statistics' => [ 'SiteStatsUpdate', 'cacheUpdate' ]
+ 'Statistics' => [ SiteStatsUpdate::class, 'cacheUpdate' ]
];
/**
* @see LogFormatter
*/
$wgLogActionsHandlers = [
- 'block/block' => 'BlockLogFormatter',
- 'block/reblock' => 'BlockLogFormatter',
- 'block/unblock' => 'BlockLogFormatter',
- 'contentmodel/change' => 'ContentModelLogFormatter',
- 'contentmodel/new' => 'ContentModelLogFormatter',
- 'delete/delete' => 'DeleteLogFormatter',
- 'delete/delete_redir' => 'DeleteLogFormatter',
- 'delete/event' => 'DeleteLogFormatter',
- 'delete/restore' => 'DeleteLogFormatter',
- 'delete/revision' => 'DeleteLogFormatter',
- 'import/interwiki' => 'ImportLogFormatter',
- 'import/upload' => 'ImportLogFormatter',
- 'managetags/activate' => 'LogFormatter',
- 'managetags/create' => 'LogFormatter',
- 'managetags/deactivate' => 'LogFormatter',
- 'managetags/delete' => 'LogFormatter',
- 'merge/merge' => 'MergeLogFormatter',
- 'move/move' => 'MoveLogFormatter',
- 'move/move_redir' => 'MoveLogFormatter',
- 'patrol/patrol' => 'PatrolLogFormatter',
- 'patrol/autopatrol' => 'PatrolLogFormatter',
- 'protect/modify' => 'ProtectLogFormatter',
- 'protect/move_prot' => 'ProtectLogFormatter',
- 'protect/protect' => 'ProtectLogFormatter',
- 'protect/unprotect' => 'ProtectLogFormatter',
- 'rights/autopromote' => 'RightsLogFormatter',
- 'rights/rights' => 'RightsLogFormatter',
- 'suppress/block' => 'BlockLogFormatter',
- 'suppress/delete' => 'DeleteLogFormatter',
- 'suppress/event' => 'DeleteLogFormatter',
- 'suppress/reblock' => 'BlockLogFormatter',
- 'suppress/revision' => 'DeleteLogFormatter',
- 'tag/update' => 'TagLogFormatter',
- 'upload/overwrite' => 'UploadLogFormatter',
- 'upload/revert' => 'UploadLogFormatter',
- 'upload/upload' => 'UploadLogFormatter',
+ 'block/block' => BlockLogFormatter::class,
+ 'block/reblock' => BlockLogFormatter::class,
+ 'block/unblock' => BlockLogFormatter::class,
+ 'contentmodel/change' => ContentModelLogFormatter::class,
+ 'contentmodel/new' => ContentModelLogFormatter::class,
+ 'delete/delete' => DeleteLogFormatter::class,
+ 'delete/delete_redir' => DeleteLogFormatter::class,
+ 'delete/event' => DeleteLogFormatter::class,
+ 'delete/restore' => DeleteLogFormatter::class,
+ 'delete/revision' => DeleteLogFormatter::class,
+ 'import/interwiki' => ImportLogFormatter::class,
+ 'import/upload' => ImportLogFormatter::class,
+ 'managetags/activate' => LogFormatter::class,
+ 'managetags/create' => LogFormatter::class,
+ 'managetags/deactivate' => LogFormatter::class,
+ 'managetags/delete' => LogFormatter::class,
+ 'merge/merge' => MergeLogFormatter::class,
+ 'move/move' => MoveLogFormatter::class,
+ 'move/move_redir' => MoveLogFormatter::class,
+ 'patrol/patrol' => PatrolLogFormatter::class,
+ 'patrol/autopatrol' => PatrolLogFormatter::class,
+ 'protect/modify' => ProtectLogFormatter::class,
+ 'protect/move_prot' => ProtectLogFormatter::class,
+ 'protect/protect' => ProtectLogFormatter::class,
+ 'protect/unprotect' => ProtectLogFormatter::class,
+ 'rights/autopromote' => RightsLogFormatter::class,
+ 'rights/rights' => RightsLogFormatter::class,
+ 'suppress/block' => BlockLogFormatter::class,
+ 'suppress/delete' => DeleteLogFormatter::class,
+ 'suppress/event' => DeleteLogFormatter::class,
+ 'suppress/reblock' => BlockLogFormatter::class,
+ 'suppress/revision' => DeleteLogFormatter::class,
+ 'tag/update' => TagLogFormatter::class,
+ 'upload/overwrite' => UploadLogFormatter::class,
+ 'upload/revert' => UploadLogFormatter::class,
+ 'upload/upload' => UploadLogFormatter::class,
];
/**
'credits' => true,
'delete' => true,
'edit' => true,
- 'editchangetags' => 'SpecialPageAction',
+ 'editchangetags' => SpecialPageAction::class,
'history' => true,
'info' => true,
'markpatrolled' => true,
'raw' => true,
'render' => true,
'revert' => true,
- 'revisiondelete' => 'SpecialPageAction',
+ 'revisiondelete' => SpecialPageAction::class,
'rollback' => true,
'submit' => true,
'unprotect' => true,
* @code
* $wgAPIModules['foo'] = 'ApiFoo';
* $wgAPIModules['bar'] = [
- * 'class' => 'ApiBar',
+ * 'class' => ApiBar::class,
* 'factory' => function( $main, $name ) { ... }
* ];
* $wgAPIModules['xyzzy'] = [
- * 'class' => 'ApiXyzzy',
- * 'factory' => [ 'XyzzyFactory', 'newApiModule' ]
+ * 'class' => ApiXyzzy::class,
+ * 'factory' => [ XyzzyFactory::class, 'newApiModule' ]
* ];
* @endcode
*
* @par Example using local redis instance:
* @code
* $wgPoolCounterConf = [ 'ArticleView' => [
- * 'class' => 'PoolCounterRedis',
+ * 'class' => PoolCounterRedis::class,
* 'timeout' => 15, // wait timeout in seconds
* 'workers' => 1, // maximum number of active threads in each pool
* 'maxqueue' => 5, // maximum number of total threads in each pool
* @par Example using C daemon from https://www.mediawiki.org/wiki/Extension:PoolCounter:
* @code
* $wgPoolCounterConf = [ 'ArticleView' => [
- * 'class' => 'PoolCounter_Client',
+ * 'class' => PoolCounter_Client::class,
* 'timeout' => 15, // wait timeout in seconds
* 'workers' => 5, // maximum number of active threads in each pool
* 'maxqueue' => 50, // maximum number of total threads in each pool
* @since 1.20
*/
$wgSiteTypes = [
- 'mediawiki' => 'MediaWikiSite',
+ 'mediawiki' => MediaWikiSite::class,
];
/**
* Auto-mounting example for Parsoid:
*
* $wgVirtualRestConfig['paths']['/parsoid/'] = [
- * 'class' => 'ParsoidVirtualRESTService',
+ * 'class' => ParsoidVirtualRESTService::class,
* 'options' => [
* 'url' => 'http://localhost:8000',
* 'prefix' => 'enwiki',
*/
$wgEventRelayerConfig = [
'default' => [
- 'class' => 'EventRelayerNull',
+ 'class' => EventRelayerNull::class,
]
];
// autoload entries for the lowercase variants of these classes (T166759).
// The code below is never executed, but it is picked up by the AutoloadGenerator
// parser, which scans for class_alias() calls.
- class_alias( 'ConcatenatedGzipHistoryBlob', 'concatenatedgziphistoryblob' );
- class_alias( 'HistoryBlobCurStub', 'historyblobcurstub' );
- class_alias( 'HistoryBlobStub', 'historyblobstub' );
+ class_alias( ConcatenatedGzipHistoryBlob::class, 'concatenatedgziphistoryblob' );
+ class_alias( HistoryBlobCurStub::class, 'historyblobcurstub' );
+ class_alias( HistoryBlobStub::class, 'historyblobstub' );
}
public static function getFormObject(
$user,
IContextSource $context,
- $formClass = 'PreferencesForm',
+ $formClass = PreferencesForm::class,
array $remove = []
) {
$preferencesFactory = self::getDefaultPreferencesFactory();
*/
$wgLockManagers[] = [
'name' => 'fsLockManager',
- 'class' => 'FSLockManager',
+ 'class' => FSLockManager::class,
'lockDirectory' => "{$wgUploadDirectory}/lockdir",
];
$wgLockManagers[] = [
'name' => 'nullLockManager',
- 'class' => 'NullLockManager',
+ 'class' => NullLockManager::class,
];
/**
*/
if ( !$wgLocalFileRepo ) {
$wgLocalFileRepo = [
- 'class' => 'LocalRepo',
+ 'class' => LocalRepo::class,
'name' => 'local',
'directory' => $wgUploadDirectory,
'scriptDirUrl' => $wgScriptPath,
if ( $wgUseSharedUploads ) {
if ( $wgSharedUploadDBname ) {
$wgForeignFileRepos[] = [
- 'class' => 'ForeignDBRepo',
+ 'class' => ForeignDBRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
];
} else {
$wgForeignFileRepos[] = [
- 'class' => 'FileRepo',
+ 'class' => FileRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
}
if ( $wgUseInstantCommons ) {
$wgForeignFileRepos[] = [
- 'class' => 'ForeignAPIRepo',
+ 'class' => ForeignAPIRepo::class,
'name' => 'wikimediacommons',
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'url' => 'https://upload.wikimedia.org/wikipedia/commons',
$wgLocalFileRepo['backend'] = $wgLocalFileRepo['name'] . '-backend';
}
foreach ( $wgForeignFileRepos as &$repo ) {
- if ( !isset( $repo['directory'] ) && $repo['class'] === 'ForeignAPIRepo' ) {
+ if ( !isset( $repo['directory'] ) && $repo['class'] === ForeignAPIRepo::class ) {
$repo['directory'] = $wgUploadDirectory; // b/c
}
if ( !isset( $repo['backend'] ) ) {
$wgLogTypes[] = 'newusers';
$wgLogNames['newusers'] = 'newuserlogpage';
$wgLogHeaders['newusers'] = 'newuserlogpagetext';
- $wgLogActionsHandlers['newusers/newusers'] = 'NewUsersLogFormatter';
- $wgLogActionsHandlers['newusers/create'] = 'NewUsersLogFormatter';
- $wgLogActionsHandlers['newusers/create2'] = 'NewUsersLogFormatter';
- $wgLogActionsHandlers['newusers/byemail'] = 'NewUsersLogFormatter';
- $wgLogActionsHandlers['newusers/autocreate'] = 'NewUsersLogFormatter';
+ $wgLogActionsHandlers['newusers/newusers'] = NewUsersLogFormatter::class;
+ $wgLogActionsHandlers['newusers/create'] = NewUsersLogFormatter::class;
+ $wgLogActionsHandlers['newusers/create2'] = NewUsersLogFormatter::class;
+ $wgLogActionsHandlers['newusers/byemail'] = NewUsersLogFormatter::class;
+ $wgLogActionsHandlers['newusers/autocreate'] = NewUsersLogFormatter::class;
}
if ( $wgPageLanguageUseDB ) {
$wgLogTypes[] = 'pagelang';
- $wgLogActionsHandlers['pagelang/pagelang'] = 'PageLangLogFormatter';
+ $wgLogActionsHandlers['pagelang/pagelang'] = PageLangLogFormatter::class;
}
if ( $wgCookieSecure === 'detect' ) {
// Sites using multiple datacenters can configure a relayer.
$wgMainWANCache = 'mediawiki-main-default';
$wgWANObjectCaches[$wgMainWANCache] = [
- 'class' => 'WANObjectCache',
+ 'class' => WANObjectCache::class,
'cacheId' => $wgMainCacheType,
'channels' => [ 'purge' => 'wancache-main-default-purge' ]
];
public function response() {
/* Lazy initialization of response object for this request */
if ( !is_object( $this->response ) ) {
- $class = ( $this instanceof FauxRequest ) ? 'FauxResponse' : 'WebResponse';
+ $class = ( $this instanceof FauxRequest ) ? FauxResponse::class : WebResponse::class;
$this->response = new $class();
}
return $this->response;
* List of available modules: action name => module class
*/
private static $Modules = [
- 'login' => 'ApiLogin',
- 'clientlogin' => 'ApiClientLogin',
- 'logout' => 'ApiLogout',
- 'createaccount' => 'ApiAMCreateAccount',
- 'linkaccount' => 'ApiLinkAccount',
- 'unlinkaccount' => 'ApiRemoveAuthenticationData',
- 'changeauthenticationdata' => 'ApiChangeAuthenticationData',
- 'removeauthenticationdata' => 'ApiRemoveAuthenticationData',
- 'resetpassword' => 'ApiResetPassword',
- 'query' => 'ApiQuery',
- 'expandtemplates' => 'ApiExpandTemplates',
- 'parse' => 'ApiParse',
- 'stashedit' => 'ApiStashEdit',
- 'opensearch' => 'ApiOpenSearch',
- 'feedcontributions' => 'ApiFeedContributions',
- 'feedrecentchanges' => 'ApiFeedRecentChanges',
- 'feedwatchlist' => 'ApiFeedWatchlist',
- 'help' => 'ApiHelp',
- 'paraminfo' => 'ApiParamInfo',
- 'rsd' => 'ApiRsd',
- 'compare' => 'ApiComparePages',
- 'tokens' => 'ApiTokens',
- 'checktoken' => 'ApiCheckToken',
- 'cspreport' => 'ApiCSPReport',
- 'validatepassword' => 'ApiValidatePassword',
+ 'login' => ApiLogin::class,
+ 'clientlogin' => ApiClientLogin::class,
+ 'logout' => ApiLogout::class,
+ 'createaccount' => ApiAMCreateAccount::class,
+ 'linkaccount' => ApiLinkAccount::class,
+ 'unlinkaccount' => ApiRemoveAuthenticationData::class,
+ 'changeauthenticationdata' => ApiChangeAuthenticationData::class,
+ 'removeauthenticationdata' => ApiRemoveAuthenticationData::class,
+ 'resetpassword' => ApiResetPassword::class,
+ 'query' => ApiQuery::class,
+ 'expandtemplates' => ApiExpandTemplates::class,
+ 'parse' => ApiParse::class,
+ 'stashedit' => ApiStashEdit::class,
+ 'opensearch' => ApiOpenSearch::class,
+ 'feedcontributions' => ApiFeedContributions::class,
+ 'feedrecentchanges' => ApiFeedRecentChanges::class,
+ 'feedwatchlist' => ApiFeedWatchlist::class,
+ 'help' => ApiHelp::class,
+ 'paraminfo' => ApiParamInfo::class,
+ 'rsd' => ApiRsd::class,
+ 'compare' => ApiComparePages::class,
+ 'tokens' => ApiTokens::class,
+ 'checktoken' => ApiCheckToken::class,
+ 'cspreport' => ApiCSPReport::class,
+ 'validatepassword' => ApiValidatePassword::class,
// Write modules
- 'purge' => 'ApiPurge',
- 'setnotificationtimestamp' => 'ApiSetNotificationTimestamp',
- 'rollback' => 'ApiRollback',
- 'delete' => 'ApiDelete',
- 'undelete' => 'ApiUndelete',
- 'protect' => 'ApiProtect',
- 'block' => 'ApiBlock',
- 'unblock' => 'ApiUnblock',
- 'move' => 'ApiMove',
- 'edit' => 'ApiEditPage',
- 'upload' => 'ApiUpload',
- 'filerevert' => 'ApiFileRevert',
- 'emailuser' => 'ApiEmailUser',
- 'watch' => 'ApiWatch',
- 'patrol' => 'ApiPatrol',
- 'import' => 'ApiImport',
- 'clearhasmsg' => 'ApiClearHasMsg',
- 'userrights' => 'ApiUserrights',
- 'options' => 'ApiOptions',
- 'imagerotate' => 'ApiImageRotate',
- 'revisiondelete' => 'ApiRevisionDelete',
- 'managetags' => 'ApiManageTags',
- 'tag' => 'ApiTag',
- 'mergehistory' => 'ApiMergeHistory',
- 'setpagelanguage' => 'ApiSetPageLanguage',
+ 'purge' => ApiPurge::class,
+ 'setnotificationtimestamp' => ApiSetNotificationTimestamp::class,
+ 'rollback' => ApiRollback::class,
+ 'delete' => ApiDelete::class,
+ 'undelete' => ApiUndelete::class,
+ 'protect' => ApiProtect::class,
+ 'block' => ApiBlock::class,
+ 'unblock' => ApiUnblock::class,
+ 'move' => ApiMove::class,
+ 'edit' => ApiEditPage::class,
+ 'upload' => ApiUpload::class,
+ 'filerevert' => ApiFileRevert::class,
+ 'emailuser' => ApiEmailUser::class,
+ 'watch' => ApiWatch::class,
+ 'patrol' => ApiPatrol::class,
+ 'import' => ApiImport::class,
+ 'clearhasmsg' => ApiClearHasMsg::class,
+ 'userrights' => ApiUserrights::class,
+ 'options' => ApiOptions::class,
+ 'imagerotate' => ApiImageRotate::class,
+ 'revisiondelete' => ApiRevisionDelete::class,
+ 'managetags' => ApiManageTags::class,
+ 'tag' => ApiTag::class,
+ 'mergehistory' => ApiMergeHistory::class,
+ 'setpagelanguage' => ApiSetPageLanguage::class,
];
/**
* List of available formats: format name => format class
*/
private static $Formats = [
- 'json' => 'ApiFormatJson',
- 'jsonfm' => 'ApiFormatJson',
- 'php' => 'ApiFormatPhp',
- 'phpfm' => 'ApiFormatPhp',
- 'xml' => 'ApiFormatXml',
- 'xmlfm' => 'ApiFormatXml',
- 'rawfm' => 'ApiFormatJson',
- 'none' => 'ApiFormatNone',
+ 'json' => ApiFormatJson::class,
+ 'jsonfm' => ApiFormatJson::class,
+ 'php' => ApiFormatPhp::class,
+ 'phpfm' => ApiFormatPhp::class,
+ 'xml' => ApiFormatXml::class,
+ 'xmlfm' => ApiFormatXml::class,
+ 'rawfm' => ApiFormatJson::class,
+ 'none' => ApiFormatNone::class,
];
/**
* @code
* $modules['foo'] = 'ApiFoo';
* $modules['bar'] = [
- * 'class' => 'ApiBar',
+ * 'class' => ApiBar::class,
* 'factory' => function( $main, $name ) { ... }
* ];
* $modules['xyzzy'] = [
- * 'class' => 'ApiXyzzy',
- * 'factory' => [ 'XyzzyFactory', 'newApiModule' ]
+ * 'class' => ApiXyzzy::class,
+ * 'factory' => [ XyzzyFactory::class, 'newApiModule' ]
* ];
* @endcode
*
$prefix = $query->getModulePath() . '+';
$mgr = $query->getModuleManager();
foreach ( $mgr->getNamesWithClasses() as $name => $class ) {
- if ( is_subclass_of( $class, 'ApiQueryGeneratorBase' ) ) {
+ if ( is_subclass_of( $class, ApiQueryGeneratorBase::class ) ) {
$gens[$name] = $prefix . $name;
}
}
* @var array
*/
private static $QueryPropModules = [
- 'categories' => 'ApiQueryCategories',
- 'categoryinfo' => 'ApiQueryCategoryInfo',
- 'contributors' => 'ApiQueryContributors',
- 'deletedrevisions' => 'ApiQueryDeletedRevisions',
- 'duplicatefiles' => 'ApiQueryDuplicateFiles',
- 'extlinks' => 'ApiQueryExternalLinks',
- 'fileusage' => 'ApiQueryBacklinksprop',
- 'images' => 'ApiQueryImages',
- 'imageinfo' => 'ApiQueryImageInfo',
- 'info' => 'ApiQueryInfo',
- 'links' => 'ApiQueryLinks',
- 'linkshere' => 'ApiQueryBacklinksprop',
- 'iwlinks' => 'ApiQueryIWLinks',
- 'langlinks' => 'ApiQueryLangLinks',
- 'pageprops' => 'ApiQueryPageProps',
- 'redirects' => 'ApiQueryBacklinksprop',
- 'revisions' => 'ApiQueryRevisions',
- 'stashimageinfo' => 'ApiQueryStashImageInfo',
- 'templates' => 'ApiQueryLinks',
- 'transcludedin' => 'ApiQueryBacklinksprop',
+ 'categories' => ApiQueryCategories::class,
+ 'categoryinfo' => ApiQueryCategoryInfo::class,
+ 'contributors' => ApiQueryContributors::class,
+ 'deletedrevisions' => ApiQueryDeletedRevisions::class,
+ 'duplicatefiles' => ApiQueryDuplicateFiles::class,
+ 'extlinks' => ApiQueryExternalLinks::class,
+ 'fileusage' => ApiQueryBacklinksprop::class,
+ 'images' => ApiQueryImages::class,
+ 'imageinfo' => ApiQueryImageInfo::class,
+ 'info' => ApiQueryInfo::class,
+ 'links' => ApiQueryLinks::class,
+ 'linkshere' => ApiQueryBacklinksprop::class,
+ 'iwlinks' => ApiQueryIWLinks::class,
+ 'langlinks' => ApiQueryLangLinks::class,
+ 'pageprops' => ApiQueryPageProps::class,
+ 'redirects' => ApiQueryBacklinksprop::class,
+ 'revisions' => ApiQueryRevisions::class,
+ 'stashimageinfo' => ApiQueryStashImageInfo::class,
+ 'templates' => ApiQueryLinks::class,
+ 'transcludedin' => ApiQueryBacklinksprop::class,
];
/**
* @var array
*/
private static $QueryListModules = [
- 'allcategories' => 'ApiQueryAllCategories',
- 'alldeletedrevisions' => 'ApiQueryAllDeletedRevisions',
- 'allfileusages' => 'ApiQueryAllLinks',
- 'allimages' => 'ApiQueryAllImages',
- 'alllinks' => 'ApiQueryAllLinks',
- 'allpages' => 'ApiQueryAllPages',
- 'allredirects' => 'ApiQueryAllLinks',
- 'allrevisions' => 'ApiQueryAllRevisions',
- 'mystashedfiles' => 'ApiQueryMyStashedFiles',
- 'alltransclusions' => 'ApiQueryAllLinks',
- 'allusers' => 'ApiQueryAllUsers',
- 'backlinks' => 'ApiQueryBacklinks',
- 'blocks' => 'ApiQueryBlocks',
- 'categorymembers' => 'ApiQueryCategoryMembers',
- 'deletedrevs' => 'ApiQueryDeletedrevs',
- 'embeddedin' => 'ApiQueryBacklinks',
- 'exturlusage' => 'ApiQueryExtLinksUsage',
- 'filearchive' => 'ApiQueryFilearchive',
- 'imageusage' => 'ApiQueryBacklinks',
- 'iwbacklinks' => 'ApiQueryIWBacklinks',
- 'langbacklinks' => 'ApiQueryLangBacklinks',
- 'logevents' => 'ApiQueryLogEvents',
- 'pageswithprop' => 'ApiQueryPagesWithProp',
- 'pagepropnames' => 'ApiQueryPagePropNames',
- 'prefixsearch' => 'ApiQueryPrefixSearch',
- 'protectedtitles' => 'ApiQueryProtectedTitles',
- 'querypage' => 'ApiQueryQueryPage',
- 'random' => 'ApiQueryRandom',
- 'recentchanges' => 'ApiQueryRecentChanges',
- 'search' => 'ApiQuerySearch',
- 'tags' => 'ApiQueryTags',
- 'usercontribs' => 'ApiQueryContributions',
- 'users' => 'ApiQueryUsers',
- 'watchlist' => 'ApiQueryWatchlist',
- 'watchlistraw' => 'ApiQueryWatchlistRaw',
+ 'allcategories' => ApiQueryAllCategories::class,
+ 'alldeletedrevisions' => ApiQueryAllDeletedRevisions::class,
+ 'allfileusages' => ApiQueryAllLinks::class,
+ 'allimages' => ApiQueryAllImages::class,
+ 'alllinks' => ApiQueryAllLinks::class,
+ 'allpages' => ApiQueryAllPages::class,
+ 'allredirects' => ApiQueryAllLinks::class,
+ 'allrevisions' => ApiQueryAllRevisions::class,
+ 'mystashedfiles' => ApiQueryMyStashedFiles::class,
+ 'alltransclusions' => ApiQueryAllLinks::class,
+ 'allusers' => ApiQueryAllUsers::class,
+ 'backlinks' => ApiQueryBacklinks::class,
+ 'blocks' => ApiQueryBlocks::class,
+ 'categorymembers' => ApiQueryCategoryMembers::class,
+ 'deletedrevs' => ApiQueryDeletedrevs::class,
+ 'embeddedin' => ApiQueryBacklinks::class,
+ 'exturlusage' => ApiQueryExtLinksUsage::class,
+ 'filearchive' => ApiQueryFilearchive::class,
+ 'imageusage' => ApiQueryBacklinks::class,
+ 'iwbacklinks' => ApiQueryIWBacklinks::class,
+ 'langbacklinks' => ApiQueryLangBacklinks::class,
+ 'logevents' => ApiQueryLogEvents::class,
+ 'pageswithprop' => ApiQueryPagesWithProp::class,
+ 'pagepropnames' => ApiQueryPagePropNames::class,
+ 'prefixsearch' => ApiQueryPrefixSearch::class,
+ 'protectedtitles' => ApiQueryProtectedTitles::class,
+ 'querypage' => ApiQueryQueryPage::class,
+ 'random' => ApiQueryRandom::class,
+ 'recentchanges' => ApiQueryRecentChanges::class,
+ 'search' => ApiQuerySearch::class,
+ 'tags' => ApiQueryTags::class,
+ 'usercontribs' => ApiQueryContributions::class,
+ 'users' => ApiQueryUsers::class,
+ 'watchlist' => ApiQueryWatchlist::class,
+ 'watchlistraw' => ApiQueryWatchlistRaw::class,
];
/**
* @var array
*/
private static $QueryMetaModules = [
- 'allmessages' => 'ApiQueryAllMessages',
- 'authmanagerinfo' => 'ApiQueryAuthManagerInfo',
- 'siteinfo' => 'ApiQuerySiteinfo',
- 'userinfo' => 'ApiQueryUserInfo',
- 'filerepoinfo' => 'ApiQueryFileRepoInfo',
- 'tokens' => 'ApiQueryTokens',
+ 'allmessages' => ApiQueryAllMessages::class,
+ 'authmanagerinfo' => ApiQueryAuthManagerInfo::class,
+ 'siteinfo' => ApiQuerySiteinfo::class,
+ 'userinfo' => ApiQueryUserInfo::class,
+ 'filerepoinfo' => ApiQueryFileRepoInfo::class,
+ 'tokens' => ApiQueryTokens::class,
];
/**
}
$this->tokenFunctions = [
- 'edit' => [ 'ApiQueryInfo', 'getEditToken' ],
- 'delete' => [ 'ApiQueryInfo', 'getDeleteToken' ],
- 'protect' => [ 'ApiQueryInfo', 'getProtectToken' ],
- 'move' => [ 'ApiQueryInfo', 'getMoveToken' ],
- 'block' => [ 'ApiQueryInfo', 'getBlockToken' ],
- 'unblock' => [ 'ApiQueryInfo', 'getUnblockToken' ],
- 'email' => [ 'ApiQueryInfo', 'getEmailToken' ],
- 'import' => [ 'ApiQueryInfo', 'getImportToken' ],
- 'watch' => [ 'ApiQueryInfo', 'getWatchToken' ],
+ 'edit' => [ self::class, 'getEditToken' ],
+ 'delete' => [ self::class, 'getDeleteToken' ],
+ 'protect' => [ self::class, 'getProtectToken' ],
+ 'move' => [ self::class, 'getMoveToken' ],
+ 'block' => [ self::class, 'getBlockToken' ],
+ 'unblock' => [ self::class, 'getUnblockToken' ],
+ 'email' => [ self::class, 'getEmailToken' ],
+ 'import' => [ self::class, 'getImportToken' ],
+ 'watch' => [ self::class, 'getWatchToken' ],
];
Hooks::run( 'APIQueryInfoTokens', [ &$this->tokenFunctions ] );
$this->everything = $this->titles + $this->missing;
$result = $this->getResult();
- uasort( $this->everything, [ 'Title', 'compare' ] );
+ uasort( $this->everything, [ Title::class, 'compare' ] );
if ( !is_null( $this->params['continue'] ) ) {
// Throw away any titles we're gonna skip so they don't
// clutter queries
}
$this->tokenFunctions = [
- 'patrol' => [ 'ApiQueryRecentChanges', 'getPatrolToken' ]
+ 'patrol' => [ self::class, 'getPatrolToken' ]
];
Hooks::run( 'APIQueryRecentChangesTokens', [ &$this->tokenFunctions ] );
}
$this->tokenFunctions = [
- 'rollback' => [ 'ApiQueryRevisions', 'getRollbackToken' ]
+ 'rollback' => [ self::class, 'getRollbackToken' ]
];
Hooks::run( 'APIQueryRevisionsTokens', [ &$this->tokenFunctions ] );
foreach ( $myWgHooks as $name => $subscribers ) {
$arr = [
'name' => $name,
- 'subscribers' => array_map( [ 'SpecialVersion', 'arrayToString' ], $subscribers ),
+ 'subscribers' => array_map( [ SpecialVersion::class, 'arrayToString' ], $subscribers ),
];
ApiResult::setArrayType( $arr['subscribers'], 'array' );
}
$this->tokenFunctions = [
- 'userrights' => [ 'ApiQueryUsers', 'getUserrightsToken' ],
+ 'userrights' => [ self::class, 'getUserrightsToken' ],
];
Hooks::run( 'APIQueryUsersTokens', [ &$this->tokenFunctions ] );
if ( $types ) {
return $types;
}
- $types = [ 'patrol' => [ 'ApiQueryRecentChanges', 'getPatrolToken' ] ];
+ $types = [ 'patrol' => [ ApiQueryRecentChanges::class, 'getPatrolToken' ] ];
$names = [ 'edit', 'delete', 'protect', 'move', 'block', 'unblock',
'email', 'import', 'watch', 'options' ];
foreach ( $names as $name ) {
- $types[$name] = [ 'ApiQueryInfo', 'get' . ucfirst( $name ) . 'Token' ];
+ $types[$name] = [ ApiQueryInfo::class, 'get' . ucfirst( $name ) . 'Token' ];
}
Hooks::run( 'ApiTokensGetTokenTypes', [ &$types ] );
*/
protected function handleStashException( $e ) {
switch ( get_class( $e ) ) {
- case 'UploadStashFileNotFoundException':
+ case UploadStashFileNotFoundException::class:
$wrap = 'apierror-stashedfilenotfound';
break;
- case 'UploadStashBadPathException':
+ case UploadStashBadPathException::class:
$wrap = 'apierror-stashpathinvalid';
break;
- case 'UploadStashFileException':
+ case UploadStashFileException::class:
$wrap = 'apierror-stashfilestorage';
break;
- case 'UploadStashZeroLengthFileException':
+ case UploadStashZeroLengthFileException::class:
$wrap = 'apierror-stashzerolength';
break;
- case 'UploadStashNotLoggedInException':
+ case UploadStashNotLoggedInException::class:
return StatusValue::newFatal( ApiMessage::create(
[ 'apierror-mustbeloggedin', $this->msg( 'action-upload' ) ], 'stashnotloggedin'
) );
- case 'UploadStashWrongOwnerException':
+ case UploadStashWrongOwnerException::class:
$wrap = 'apierror-stashwrongowner';
break;
- case 'UploadStashNoSuchKeyException':
+ case UploadStashNoSuchKeyException::class:
$wrap = 'apierror-stashnosuchfilekey';
break;
default:
$wgParser->firstCallInit();
# Clone it and store it
$class = $wgParserConf['class'];
- if ( $class == 'ParserDiffTest' ) {
+ if ( $class == ParserDiffTest::class ) {
# Uncloneable
$this->mParser = new $class( $wgParserConf );
} else {
switch ( $conf['store'] ) {
case 'files':
case 'file':
- $storeClass = 'LCStoreCDB';
+ $storeClass = LCStoreCDB::class;
break;
case 'db':
- $storeClass = 'LCStoreDB';
+ $storeClass = LCStoreDB::class;
break;
case 'array':
- $storeClass = 'LCStoreStaticArray';
+ $storeClass = LCStoreStaticArray::class;
break;
case 'detect':
if ( !empty( $conf['storeDirectory'] ) ) {
- $storeClass = 'LCStoreCDB';
+ $storeClass = LCStoreCDB::class;
} elseif ( $wgCacheDirectory ) {
$storeConf['directory'] = $wgCacheDirectory;
- $storeClass = 'LCStoreCDB';
+ $storeClass = LCStoreCDB::class;
} else {
- $storeClass = 'LCStoreDB';
+ $storeClass = LCStoreDB::class;
}
break;
default:
$this->timestamp = $revision->getTimestamp();
}
$this->revision = $revision;
- $this->newForCategorizationCallback = [ 'RecentChange', 'newForCategorization' ];
+ $this->newForCategorizationCallback = [ RecentChange::class, 'newForCategorization' ];
}
/**
) {
switch ( $typeName ) {
case 'revision':
- $className = 'ChangeTagsRevisionList';
+ $className = ChangeTagsRevisionList::class;
break;
case 'logentry':
- $className = 'ChangeTagsLogList';
+ $className = ChangeTagsLogList::class;
break;
default:
throw new Exception( "Class $typeName requested, but does not exist" );
// When making changes here, remember to also specify MediaWiki-specific options
// for Database classes in the relevant Installer subclass.
// Such as MysqlInstaller::openConnection and PostgresInstaller::openConnectionWithParams.
- if ( $lbConf['class'] === 'LBFactorySimple' ) {
+ if ( $lbConf['class'] === Wikimedia\Rdbms\LBFactorySimple::class ) {
if ( isset( $lbConf['servers'] ) ) {
// Server array is already explicitly configured; leave alone
} elseif ( is_array( $mainConfig->get( 'DBservers' ) ) ) {
if ( !isset( $lbConf['externalClusters'] ) ) {
$lbConf['externalClusters'] = $mainConfig->get( 'ExternalServers' );
}
- } elseif ( $lbConf['class'] === 'LBFactoryMulti' ) {
+ } elseif ( $lbConf['class'] === Wikimedia\Rdbms\LBFactoryMulti::class ) {
if ( isset( $lbConf['serverTemplate'] ) ) {
if ( in_array( $lbConf['serverTemplate']['type'], $typesWithSchema, true ) ) {
$lbConf['serverTemplate']['schema'] = $mainConfig->get( 'DBmwschema' );
* Usage:
* @code
* $wgMWLoggerDefaultSpi = [
- * 'class' => '\\MediaWiki\\Logger\\LegacySpi',
+ * 'class' => \MediaWiki\Logger\LegacySpi::class,
* ];
* @endcode
*
* default SPI provider:
* @code
* $wgMWLoggerDefaultSpi = [
- * 'class' => '\\MediaWiki\\Logger\\MonologSpi',
+ * 'class' => \MediaWiki\Logger\MonologSpi::class,
* 'args' => [ [
* 'loggers' => [
* '@default' => [
* ],
* 'processors' => [
* 'wiki' => [
- * 'class' => '\\MediaWiki\\Logger\\Monolog\\WikiProcessor',
+ * 'class' => \MediaWiki\Logger\Monolog\WikiProcessor::class,
* ],
* 'psr' => [
- * 'class' => '\\Monolog\\Processor\\PsrLogMessageProcessor',
+ * 'class' => \Monolog\Processor\PsrLogMessageProcessor::class,
* ],
* 'pid' => [
- * 'class' => '\\Monolog\\Processor\\ProcessIdProcessor',
+ * 'class' => \Monolog\Processor\ProcessIdProcessor::class,
* ],
* 'uid' => [
- * 'class' => '\\Monolog\\Processor\\UidProcessor',
+ * 'class' => \Monolog\Processor\UidProcessor::class,
* ],
* 'web' => [
- * 'class' => '\\Monolog\\Processor\\WebProcessor',
+ * 'class' => \Monolog\Processor\WebProcessor::class,
* ],
* ],
* 'handlers' => [
* 'stream' => [
- * 'class' => '\\Monolog\\Handler\\StreamHandler',
+ * 'class' => \Monolog\Handler\StreamHandler::class,
* 'args' => [ 'path/to/your.log' ],
* 'formatter' => 'line',
* ],
* 'redis' => [
- * 'class' => '\\Monolog\\Handler\\RedisHandler',
+ * 'class' => \Monolog\Handler\RedisHandler::class,
* 'args' => [ function() {
* $redis = new Redis();
* $redis->connect( '127.0.0.1', 6379 );
* 'buffer' => true,
* ],
* 'udp2log' => [
- * 'class' => '\\MediaWiki\\Logger\\Monolog\\LegacyHandler',
+ * 'class' => \MediaWiki\Logger\Monolog\LegacyHandler::class,
* 'args' => [
* 'udp://127.0.0.1:8420/mediawiki
* ],
* ],
* 'formatters' => [
* 'line' => [
- * 'class' => '\\Monolog\\Formatter\\LineFormatter',
+ * 'class' => \Monolog\Formatter\LineFormatter::class,
* ],
* 'logstash' => [
- * 'class' => '\\Monolog\\Formatter\\LogstashFormatter',
+ * 'class' => \Monolog\Formatter\LogstashFormatter::class,
* 'args' => [ 'mediawiki', php_uname( 'n' ), null, '', 1 ],
* ],
* ],
* Usage:
*
* $wgMWLoggerDefaultSpi = [
- * 'class' => '\\MediaWiki\\Logger\\NullSpi',
+ * 'class' => \MediaWiki\Logger\NullSpi::class,
* ];
*
* @see \MediaWiki\Logger\LoggerFactory
global $wgLang;
foreach ( $this->getTrace() as $frame ) {
- if ( isset( $frame['class'] ) && $frame['class'] === 'LocalisationCache' ) {
+ if ( isset( $frame['class'] ) && $frame['class'] === LocalisationCache::class ) {
return false;
}
}
$logger = LoggerFactory::getInstance( 'fatal' );
$logger->error( $msg, [
'fatal_exception' => [
- 'class' => 'ErrorException',
+ 'class' => ErrorException::class,
'message' => "PHP Fatal Error: {$message}",
'code' => $level,
'file' => $file,
private static function useOutputPage( $e ) {
// Can the extension use the Message class/wfMessage to get i18n-ed messages?
foreach ( $e->getTrace() as $frame ) {
- if ( isset( $frame['class'] ) && $frame['class'] === 'LocalisationCache' ) {
+ if ( isset( $frame['class'] ) && $frame['class'] === LocalisationCache::class ) {
return false;
}
}
// Get the FS backend configuration
$autoBackends[] = [
'name' => $backendName,
- 'class' => 'FSFileBackend',
+ 'class' => FSFileBackend::class,
'lockManager' => 'fsLockManager',
'containerPaths' => [
"{$repoName}-public" => "{$directory}",
$config = $this->config( $name );
$class = $config['class'];
- if ( $class === 'FileBackendMultiWrite' ) {
+ if ( $class === FileBackendMultiWrite::class ) {
foreach ( $config['backends'] as $index => $beConfig ) {
if ( isset( $beConfig['template'] ) ) {
// Config is just a modified version of a registered backend's.
'wikiId' => wfWikiID(), // e.g. "my_wiki-en_"
'mimeCallback' => [ $this, 'guessMimeInternal' ],
'obResetFunc' => 'wfResetOutputBuffers',
- 'streamMimeFunc' => [ 'StreamFile', 'contentTypeFromPath' ],
+ 'streamMimeFunc' => [ StreamFile::class, 'contentTypeFromPath' ],
'tmpDirectory' => wfTempDir(),
- 'statusWrapper' => [ 'Status', 'wrap' ],
+ 'statusWrapper' => [ Status::class, 'wrap' ],
'wanCache' => MediaWikiServices::getInstance()->getMainWANObjectCache(),
'srvCache' => ObjectCache::getLocalServerInstance( 'hash' ),
'logger' => LoggerFactory::getInstance( 'FileOperation' ),
LockManagerGroup::singleton( $config['wikiId'] )->get( $config['lockManager'] );
$config['fileJournal'] = isset( $config['fileJournal'] )
? FileJournal::factory( $config['fileJournal'], $name )
- : FileJournal::factory( [ 'class' => 'NullFileJournal' ], $name );
+ : FileJournal::factory( [ 'class' => NullFileJournal::class ], $name );
return $config;
}
if ( !isset( $this->managers[$name]['instance'] ) ) {
$class = $this->managers[$name]['class'];
$config = $this->managers[$name]['config'];
- if ( $class === 'DBLockManager' ) {
+ if ( $class === DBLockManager::class ) {
$lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
$lb = $lbFactory->newMainLB( $config['domain'] );
$dbw = $lb->getLazyConnectionRef( DB_MASTER, [], $config['domain'] );
protected $isPrivate;
/** @var array callable Override these in the base class */
- protected $fileFactory = [ 'UnregisteredLocalFile', 'newFromTitle' ];
+ protected $fileFactory = [ UnregisteredLocalFile::class, 'newFromTitle' ];
/** @var array callable|bool Override these in the base class */
protected $oldFileFactory = false;
/** @var array callable|bool Override these in the base class */
* @return Status
*/
public function newFatal( $message /*, parameters...*/ ) {
- $status = call_user_func_array( [ 'Status', 'newFatal' ], func_get_args() );
+ $status = call_user_func_array( [ Status::class, 'newFatal' ], func_get_args() );
$status->cleanCallback = $this->getErrorCleanupFunction();
return $status;
* Example config:
*
* $wgForeignFileRepos[] = [
- * 'class' => 'ForeignAPIRepo',
+ * 'class' => ForeignAPIRepo::class,
* 'name' => 'shared',
* 'apibase' => 'https://en.wikipedia.org/w/api.php',
* 'fetchDescription' => true, // Optional
'timestamp',
];
- protected $fileFactory = [ 'ForeignAPIFile', 'newFromTitle' ];
+ protected $fileFactory = [ ForeignAPIFile::class, 'newFromTitle' ];
/** @var int Check back with Commons after this expiry */
protected $apiThumbCacheExpiry = 86400; // 1 day (24*3600)
protected $dbConn;
/** @var callable */
- protected $fileFactory = [ 'ForeignDBFile', 'newFromTitle' ];
+ protected $fileFactory = [ ForeignDBFile::class, 'newFromTitle' ];
/** @var callable */
- protected $fileFromRowFactory = [ 'ForeignDBFile', 'newFromRow' ];
+ protected $fileFromRowFactory = [ ForeignDBFile::class, 'newFromRow' ];
/**
* @param array|null $info
protected $tablePrefix;
/** @var array */
- protected $fileFactory = [ 'ForeignDBFile', 'newFromTitle' ];
+ protected $fileFactory = [ ForeignDBFile::class, 'newFromTitle' ];
/** @var array */
- protected $fileFromRowFactory = [ 'ForeignDBFile', 'newFromRow' ];
+ protected $fileFromRowFactory = [ ForeignDBFile::class, 'newFromRow' ];
/** @var bool */
protected $hasSharedCache;
*/
class LocalRepo extends FileRepo {
/** @var callable */
- protected $fileFactory = [ 'LocalFile', 'newFromTitle' ];
+ protected $fileFactory = [ LocalFile::class, 'newFromTitle' ];
/** @var callable */
- protected $fileFactoryKey = [ 'LocalFile', 'newFromKey' ];
+ protected $fileFactoryKey = [ LocalFile::class, 'newFromKey' ];
/** @var callable */
- protected $fileFromRowFactory = [ 'LocalFile', 'newFromRow' ];
+ protected $fileFromRowFactory = [ LocalFile::class, 'newFromRow' ];
/** @var callable */
- protected $oldFileFromRowFactory = [ 'OldLocalFile', 'newFromRow' ];
+ protected $oldFileFromRowFactory = [ OldLocalFile::class, 'newFromRow' ];
/** @var callable */
- protected $oldFileFactory = [ 'OldLocalFile', 'newFromTitle' ];
+ protected $oldFileFactory = [ OldLocalFile::class, 'newFromTitle' ];
/** @var callable */
- protected $oldFileFactoryKey = [ 'OldLocalFile', 'newFromKey' ];
+ protected $oldFileFactoryKey = [ OldLocalFile::class, 'newFromKey' ];
function __construct( array $info = null ) {
parent::__construct( $info );
protected $isSafeFile;
/** @var string Required Repository class type */
- protected $repoClass = 'FileRepo';
+ protected $repoClass = FileRepo::class;
/** @var array Cache of tmp filepaths pointing to generated bucket thumbnails, keyed by width */
protected $tmpBucketedThumbCache = [];
/** @var array */
private $mInfo = [];
- protected $repoClass = 'ForeignApiRepo';
+ protected $repoClass = ForeignApiRepo::class;
/**
* @param Title|string|bool $title
protected $deleted;
/** @var string */
- protected $repoClass = 'LocalRepo';
+ protected $repoClass = LocalRepo::class;
/** @var int Number of line to return by nextHistoryLine() (constructor) */
private $historyLine;
private static function loadModes() {
if ( self::$modeMapping === false ) {
self::$modeMapping = [
- 'traditional' => 'TraditionalImageGallery',
- 'nolines' => 'NolinesImageGallery',
- 'packed' => 'PackedImageGallery',
- 'packed-hover' => 'PackedHoverImageGallery',
- 'packed-overlay' => 'PackedOverlayImageGallery',
- 'slideshow' => 'SlideshowImageGallery',
+ 'traditional' => TraditionalImageGallery::class,
+ 'nolines' => NolinesImageGallery::class,
+ 'packed' => PackedImageGallery::class,
+ 'packed-hover' => PackedHoverImageGallery::class,
+ 'packed-overlay' => PackedOverlayImageGallery::class,
+ 'slideshow' => SlideshowImageGallery::class,
];
// Allow extensions to make a new gallery format.
Hooks::run( 'GalleryGetModes', [ &self::$modeMapping ] );
class HTMLForm extends ContextSource {
// A mapping of 'type' inputs onto standard HTMLFormField subclasses
public static $typeMappings = [
- 'api' => 'HTMLApiField',
- 'text' => 'HTMLTextField',
- 'textwithbutton' => 'HTMLTextFieldWithButton',
- 'textarea' => 'HTMLTextAreaField',
- 'select' => 'HTMLSelectField',
- 'combobox' => 'HTMLComboboxField',
- 'radio' => 'HTMLRadioField',
- 'multiselect' => 'HTMLMultiSelectField',
- 'limitselect' => 'HTMLSelectLimitField',
- 'check' => 'HTMLCheckField',
- 'toggle' => 'HTMLCheckField',
- 'int' => 'HTMLIntField',
- 'float' => 'HTMLFloatField',
- 'info' => 'HTMLInfoField',
- 'selectorother' => 'HTMLSelectOrOtherField',
- 'selectandother' => 'HTMLSelectAndOtherField',
- 'namespaceselect' => 'HTMLSelectNamespace',
- 'namespaceselectwithbutton' => 'HTMLSelectNamespaceWithButton',
- 'tagfilter' => 'HTMLTagFilter',
- 'sizefilter' => 'HTMLSizeFilterField',
- 'submit' => 'HTMLSubmitField',
- 'hidden' => 'HTMLHiddenField',
- 'edittools' => 'HTMLEditTools',
- 'checkmatrix' => 'HTMLCheckMatrix',
- 'cloner' => 'HTMLFormFieldCloner',
- 'autocompleteselect' => 'HTMLAutoCompleteSelectField',
- 'date' => 'HTMLDateTimeField',
- 'time' => 'HTMLDateTimeField',
- 'datetime' => 'HTMLDateTimeField',
+ 'api' => HTMLApiField::class,
+ 'text' => HTMLTextField::class,
+ 'textwithbutton' => HTMLTextFieldWithButton::class,
+ 'textarea' => HTMLTextAreaField::class,
+ 'select' => HTMLSelectField::class,
+ 'combobox' => HTMLComboboxField::class,
+ 'radio' => HTMLRadioField::class,
+ 'multiselect' => HTMLMultiSelectField::class,
+ 'limitselect' => HTMLSelectLimitField::class,
+ 'check' => HTMLCheckField::class,
+ 'toggle' => HTMLCheckField::class,
+ 'int' => HTMLIntField::class,
+ 'float' => HTMLFloatField::class,
+ 'info' => HTMLInfoField::class,
+ 'selectorother' => HTMLSelectOrOtherField::class,
+ 'selectandother' => HTMLSelectAndOtherField::class,
+ 'namespaceselect' => HTMLSelectNamespace::class,
+ 'namespaceselectwithbutton' => HTMLSelectNamespaceWithButton::class,
+ 'tagfilter' => HTMLTagFilter::class,
+ 'sizefilter' => HTMLSizeFilterField::class,
+ 'submit' => HTMLSubmitField::class,
+ 'hidden' => HTMLHiddenField::class,
+ 'edittools' => HTMLEditTools::class,
+ 'checkmatrix' => HTMLCheckMatrix::class,
+ 'cloner' => HTMLFormFieldCloner::class,
+ 'autocompleteselect' => HTMLAutoCompleteSelectField::class,
+ 'date' => HTMLDateTimeField::class,
+ 'time' => HTMLDateTimeField::class,
+ 'datetime' => HTMLDateTimeField::class,
// HTMLTextField will output the correct type="" attribute automagically.
// There are about four zillion other HTML5 input types, like range, but
// we don't use those at the moment, so no point in adding all of them.
- 'email' => 'HTMLTextField',
- 'password' => 'HTMLTextField',
- 'url' => 'HTMLTextField',
- 'title' => 'HTMLTitleTextField',
- 'user' => 'HTMLUserTextField',
- 'usersmultiselect' => 'HTMLUsersMultiselectField',
+ 'email' => HTMLTextField::class,
+ 'password' => HTMLTextField::class,
+ 'url' => HTMLTextField::class,
+ 'title' => HTMLTitleTextField::class,
+ 'user' => HTMLUserTextField::class,
+ 'usersmultiselect' => HTMLUsersMultiselectField::class,
];
public $mFieldData;
if ( $this->mParent instanceof OOUIHTMLForm ) {
throw new MWException( 'HTMLMultiSelectField#getOneCheckbox() is not supported' );
} else {
- $elementFunc = [ 'Html', $this->mOptionsLabelsNotFromMessage ? 'rawElement' : 'element' ];
+ $elementFunc = [ Html::class, $this->mOptionsLabelsNotFromMessage ? 'rawElement' : 'element' ];
$checkbox =
Xml::check( "{$this->mName}[]", $checked, $attribs ) .
' ' .
$html = '';
$attribs = $this->getAttributes( [ 'disabled', 'tabindex' ] );
- $elementFunc = [ 'Html', $this->mOptionsLabelsNotFromMessage ? 'rawElement' : 'element' ];
+ $elementFunc = [ Html::class, $this->mOptionsLabelsNotFromMessage ? 'rawElement' : 'element' ];
# @todo Should this produce an unordered list perhaps?
foreach ( $options as $label => $info ) {
$this->config = $config;
if ( !in_array( 'uploadsource', stream_get_wrappers() ) ) {
- stream_wrapper_register( 'uploadsource', 'UploadSourceAdapter' );
+ stream_wrapper_register( 'uploadsource', UploadSourceAdapter::class );
}
$id = UploadSourceAdapter::registerSource( $source );
"maintenance/populateLogUsertext.php.\n"
);
- $task = $this->maintenance->runChild( 'PopulateLogUsertext' );
+ $task = $this->maintenance->runChild( PopulateLogUsertext::class );
$task->execute();
$this->output( "done.\n" );
}
"databases, you may want to hit Ctrl-C and do this manually with\n" .
"maintenance/populateLogSearch.php.\n" );
- $task = $this->maintenance->runChild( 'PopulateLogSearch' );
+ $task = $this->maintenance->runChild( PopulateLogSearch::class );
$task->execute();
$this->output( "done.\n" );
}
}
$this->output( "Updating category collations..." );
- $task = $this->maintenance->runChild( 'UpdateCollation' );
+ $task = $this->maintenance->runChild( UpdateCollation::class );
$task->execute();
$this->output( "...done.\n" );
}
*/
protected function doMigrateUserOptions() {
if ( $this->db->tableExists( 'user_properties' ) ) {
- $cl = $this->maintenance->runChild( 'ConvertUserOptions', 'convertUserOptions.php' );
+ $cl = $this->maintenance->runChild( ConvertUserOptions::class, 'convertUserOptions.php' );
$cl->execute();
$this->output( "done.\n" );
}
/**
* @var $cl RebuildLocalisationCache
*/
- $cl = $this->maintenance->runChild( 'RebuildLocalisationCache', 'rebuildLocalisationCache.php' );
+ $cl = $this->maintenance->runChild(
+ RebuildLocalisationCache::class, 'rebuildLocalisationCache.php'
+ );
$this->output( "Rebuilding localisation cache...\n" );
$cl->setForce();
$cl->execute();
"databases, you may want to hit Ctrl-C and do this manually with\n" .
"maintenance/migrateComments.php.\n"
);
- $task = $this->maintenance->runChild( 'MigrateComments', 'migrateComments.php' );
+ $task = $this->maintenance->runChild( MigrateComments::class, 'migrateComments.php' );
$task->execute();
$this->output( "done.\n" );
}
*/
protected function migrateArchiveText() {
$this->output( "Migrating archive ar_text to modern storage.\n" );
- $task = $this->maintenance->runChild( 'MigrateArchiveText', 'migrateArchiveText.php' );
+ $task = $this->maintenance->runChild( MigrateArchiveText::class, 'migrateArchiveText.php' );
$task->execute();
$this->output( "done.\n" );
}
// disable (problematic) object cache types explicitly, preserving all other (working) ones
// bug T113843
- $emptyCache = [ 'class' => 'EmptyBagOStuff' ];
+ $emptyCache = [ 'class' => EmptyBagOStuff::class ];
$objectCaches = [
CACHE_NONE => $emptyCache,
// implementation that won't stomp on PHP's cookies.
$GLOBALS['wgSessionProviders'] = [
[
- 'class' => 'InstallerSessionProvider',
+ 'class' => InstallerSessionProvider::class,
'args' => [ [
'priority' => 1,
] ]
if ( !$overrides ) {
$overrides = [
- 'LocalSettingsGenerator' => 'LocalSettingsGenerator',
- 'WebInstaller' => 'WebInstaller',
- 'CliInstaller' => 'CliInstaller',
+ 'LocalSettingsGenerator' => LocalSettingsGenerator::class,
+ 'WebInstaller' => WebInstaller::class,
+ 'CliInstaller' => CliInstaller::class,
];
foreach ( glob( "$IP/mw-config/overrides/*.php" ) as $file ) {
require $file;
}
protected function doOldLinksUpdate() {
- $cl = $this->maintenance->runChild( 'ConvertLinks' );
+ $cl = $this->maintenance->runChild( ConvertLinks::class );
$cl->execute();
}
$this->output( "done.\n" );
$this->output( "Migrating old restrictions to new table...\n" );
- $task = $this->maintenance->runChild( 'UpdateRestrictions' );
+ $task = $this->maintenance->runChild( UpdateRestrictions::class );
$task->execute();
}
"may want to hit Ctrl-C and do this manually with maintenance/\n" .
"populateCategory.php.\n"
);
- $task = $this->maintenance->runChild( 'PopulateCategory' );
+ $task = $this->maintenance->runChild( PopulateCategory::class );
$task->execute();
$this->output( "Done populating category table.\n" );
}
"databases, you may want to hit Ctrl-C and do this manually with\n" .
"maintenance/populateParentId.php.\n" );
- $task = $this->maintenance->runChild( 'PopulateParentId' );
+ $task = $this->maintenance->runChild( PopulateParentId::class );
$task->execute();
}
}
return "# SQLite-specific settings
\$wgSQLiteDataDir = \"{$dir}\";
\$wgObjectCaches[CACHE_DB] = [
- 'class' => 'SqlBagOStuff',
+ 'class' => SqlBagOStuff::class,
'loggroup' => 'SQLBagOStuff',
'server' => [
'type' => 'sqlite',
: new NullLockManager( [] );
$this->fileJournal = isset( $config['fileJournal'] )
? $config['fileJournal']
- : FileJournal::factory( [ 'class' => 'NullFileJournal' ], $this->name );
+ : FileJournal::factory( [ 'class' => NullFileJournal::class ], $this->name );
$this->readOnly = isset( $config['readOnly'] )
? (string)$config['readOnly']
: '';
final protected function newStatus() {
$args = func_get_args();
if ( count( $args ) ) {
- $sv = call_user_func_array( [ 'StatusValue', 'newFatal' ], $args );
+ $sv = call_user_func_array( [ StatusValue::class, 'newFatal' ], $args );
} else {
$sv = StatusValue::newGood();
}
*/
final public function getOperationsInternal( array $ops ) {
$supportedOps = [
- 'store' => 'StoreFileOp',
- 'copy' => 'CopyFileOp',
- 'move' => 'MoveFileOp',
- 'delete' => 'DeleteFileOp',
- 'create' => 'CreateFileOp',
- 'describe' => 'DescribeFileOp',
- 'null' => 'NullFileOp'
+ 'store' => StoreFileOp::class,
+ 'copy' => CopyFileOp::class,
+ 'move' => MoveFileOp::class,
+ 'delete' => DeleteFileOp::class,
+ 'create' => CreateFileOp::class,
+ 'describe' => DescribeFileOp::class,
+ 'null' => NullFileOp::class
];
$performOps = []; // array of FileOp objects
$this->srvsByBucket = array_values( $this->srvsByBucket ); // consecutive
$memcConfig = isset( $config['memcConfig'] ) ? $config['memcConfig'] : [];
- $memcConfig += [ 'class' => 'MemcachedPhpBagOStuff' ]; // default
+ $memcConfig += [ 'class' => MemcachedPhpBagOStuff::class ]; // default
$class = $memcConfig['class'];
- if ( !is_subclass_of( $class, 'MemcachedBagOStuff' ) ) {
+ if ( !is_subclass_of( $class, MemcachedBagOStuff::class ) ) {
throw new InvalidArgumentException( "$class is not of type MemcachedBagOStuff." );
}
$res = $this->result;
if ( $this->mSeekTo !== null ) {
- $result = sqlsrv_fetch_object( $res, 'stdClass', [],
+ $result = sqlsrv_fetch_object( $res, stdClass::class, [],
SQLSRV_SCROLL_ABSOLUTE, $this->mSeekTo );
$this->mSeekTo = null;
} else {
}
}
-class_alias( 'Wikimedia\Rdbms\LoadBalancerSingle', 'LoadBalancerSingle' );
+class_alias( LoadBalancerSingle::class, 'LoadBalancerSingle' );
*/
class CategoryPage extends Article {
# Subclasses can change this to override the viewer class.
- protected $mCategoryViewerClass = 'CategoryViewer';
+ protected $mCategoryViewerClass = CategoryViewer::class;
/**
* @var WikiCategoryPage
$this->mPreprocessorClass = $conf['preprocessorClass'];
} elseif ( defined( 'HPHP_VERSION' ) ) {
# Preprocessor_Hash is much faster than Preprocessor_DOM under HipHop
- $this->mPreprocessorClass = 'Preprocessor_Hash';
+ $this->mPreprocessorClass = Preprocessor_Hash::class;
} elseif ( extension_loaded( 'domxml' ) ) {
# PECL extension that conflicts with the core DOM extension (T15770)
wfDebug( "Warning: you have the obsolete domxml extension for PHP. Please remove it!\n" );
- $this->mPreprocessorClass = 'Preprocessor_Hash';
+ $this->mPreprocessorClass = Preprocessor_Hash::class;
} elseif ( extension_loaded( 'dom' ) ) {
- $this->mPreprocessorClass = 'Preprocessor_DOM';
+ $this->mPreprocessorClass = Preprocessor_DOM::class;
} else {
- $this->mPreprocessorClass = 'Preprocessor_Hash';
+ $this->mPreprocessorClass = Preprocessor_Hash::class;
}
wfDebug( __CLASS__ . ": using preprocessor: {$this->mPreprocessorClass}\n" );
}
'printable' => false,
'allowUnsafeRawHtml' => true,
'wrapclass' => 'mw-parser-output',
- 'currentRevisionCallback' => [ 'Parser', 'statelessFetchRevision' ],
- 'templateCallback' => [ 'Parser', 'statelessFetchTemplate' ],
+ 'currentRevisionCallback' => [ Parser::class, 'statelessFetchRevision' ],
+ 'templateCallback' => [ Parser::class, 'statelessFetchTemplate' ],
'speculativeRevIdCallback' => null,
];
*/
public $top;
public $out;
- public $elementClass = 'PPDStackElement';
+ public $elementClass = PPDStackElement::class;
public static $false = false;
*/
public $lineStart;
- public $partClass = 'PPDPart';
+ public $partClass = PPDPart::class;
public function __construct( $data = [] ) {
$class = $this->partClass;
class PPDStack_Hash extends PPDStack {
public function __construct() {
- $this->elementClass = 'PPDStackElement_Hash';
+ $this->elementClass = PPDStackElement_Hash::class;
parent::__construct();
$this->rootAccum = [];
}
class PPDStackElement_Hash extends PPDStackElement {
public function __construct( $data = [] ) {
- $this->partClass = 'PPDPart_Hash';
+ $this->partClass = PPDPart_Hash::class;
parent::__construct( $data );
}
$descriptor = $store[$index];
if ( is_string( $descriptor ) ) {
- $class = 'PPNode_Hash_Text';
+ $class = PPNode_Hash_Text::class;
} elseif ( is_array( $descriptor ) ) {
if ( $descriptor[self::NAME][0] === '@' ) {
- $class = 'PPNode_Hash_Attr';
+ $class = PPNode_Hash_Attr::class;
} else {
- $class = 'PPNode_Hash_Tree';
+ $class = self::class;
}
} else {
throw new MWException( __METHOD__.': invalid node descriptor' );
# Stupid hack
$encValue = preg_replace_callback(
'/((?i)' . wfUrlProtocols() . ')/',
- [ 'Sanitizer', 'armorLinksCallback' ],
+ [ self::class, 'armorLinksCallback' ],
$encValue );
return $encValue;
}
static function normalizeCharReferences( $text ) {
return preg_replace_callback(
self::CHAR_REFS_REGEX,
- [ 'Sanitizer', 'normalizeCharReferencesCallback' ],
+ [ self::class, 'normalizeCharReferencesCallback' ],
$text );
}
public static function decodeCharReferences( $text ) {
return preg_replace_callback(
self::CHAR_REFS_REGEX,
- [ 'Sanitizer', 'decodeCharReferencesCallback' ],
+ [ self::class, 'decodeCharReferencesCallback' ],
$text );
}
global $wgContLang;
$text = preg_replace_callback(
self::CHAR_REFS_REGEX,
- [ 'Sanitizer', 'decodeCharReferencesCallback' ],
+ [ self::class, 'decodeCharReferencesCallback' ],
$text,
-1, //limit
$count
* @see Setup.php
*/
private $types = [
- '' => [ 'type' => '', 'class' => 'InvalidPassword' ],
+ '' => [ 'type' => '', 'class' => InvalidPassword::class ],
];
/**
// Handling for multiselect preferences
if ( ( isset( $info['type'] ) && $info['type'] == 'multiselect' ) ||
- ( isset( $info['class'] ) && $info['class'] == 'HTMLMultiSelectField' ) ) {
+ ( isset( $info['class'] ) && $info['class'] == \HTMLMultiSelectField::class ) ) {
$options = HTMLFormField::flattenOptions( $info['options'] );
$prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
$val = [];
// Handling for checkmatrix preferences
if ( ( isset( $info['type'] ) && $info['type'] == 'checkmatrix' ) ||
- ( isset( $info['class'] ) && $info['class'] == 'HTMLCheckMatrix' ) ) {
+ ( isset( $info['class'] ) && $info['class'] == \HTMLCheckMatrix::class ) ) {
$columns = HTMLFormField::flattenOptions( $info['columns'] );
$rows = HTMLFormField::flattenOptions( $info['rows'] );
$prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
}
$defaultPreferences['timecorrection'] = [
- 'class' => 'HTMLSelectOrOtherField',
+ 'class' => \HTMLSelectOrOtherField::class,
'label-message' => 'timezonelegend',
'options' => $tzOptions,
'default' => $tzSetting,
public function getForm(
User $user,
IContextSource $context,
- $formClass = 'PreferencesForm',
+ $formClass = PreferencesForm::class,
array $remove = []
) {
$formDescriptor = $this->getFormDescriptor( $user, $context );
public function getForm(
User $user,
IContextSource $contextSource,
- $formClass = 'PreferencesForm',
+ $formClass = \PreferencesForm::class,
array $remove = []
);
global $wgProfiler, $wgProfileLimit;
$params = [
- 'class' => 'ProfilerStub',
+ 'class' => ProfilerStub::class,
'sampling' => 1,
'threshold' => $wgProfileLimit,
'output' => [],
$inSample = mt_rand( 0, $params['sampling'] - 1 ) === 0;
// wfIsCLI() is not available yet
if ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' || !$inSample ) {
- $params['class'] = 'ProfilerStub';
+ $params['class'] = ProfilerStub::class;
}
if ( !is_array( $params['output'] ) ) {
* Profiler that only tracks explicit profiling sections
*
* @code
- * $wgProfiler['class'] = 'ProfilerSectionOnly';
+ * $wgProfiler['class'] = ProfilerSectionOnly::class;
* $wgProfiler['output'] = 'text';
* $wgProfiler['visible'] = true;
* @endcode
* Profiler wrapper for XHProf extension.
*
* @code
- * $wgProfiler['class'] = 'ProfilerXhprof';
+ * $wgProfiler['class'] = ProfilerXhprof::class;
* $wgProfiler['flags'] = XHPROF_FLAGS_NO_BUILTINS;
* $wgProfiler['output'] = 'text';
* $wgProfiler['visible'] = true;
* @endcode
*
* @code
- * $wgProfiler['class'] = 'ProfilerXhprof';
+ * $wgProfiler['class'] = ProfilerXhprof::class;
* $wgProfiler['flags'] = XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_NO_BUILTINS;
* $wgProfiler['output'] = 'udp';
* @endcode
$object->setLogger( $this->logger );
} else {
if ( !isset( $info['class'] ) ) {
- $class = 'ResourceLoaderFileModule';
+ $class = ResourceLoaderFileModule::class;
} else {
$class = $info['class'];
}
}
if (
isset( $info['class'] ) &&
- $info['class'] !== 'ResourceLoaderFileModule' &&
- !is_subclass_of( $info['class'], 'ResourceLoaderFileModule' )
+ $info['class'] !== ResourceLoaderFileModule::class &&
+ !is_subclass_of( $info['class'], ResourceLoaderFileModule::class )
) {
return false;
}
class RevisionDeleter {
/** List of known revdel types, with their corresponding list classes */
private static $allowedTypes = [
- 'revision' => 'RevDelRevisionList',
- 'archive' => 'RevDelArchiveList',
- 'oldimage' => 'RevDelFileList',
- 'filearchive' => 'RevDelArchivedFileList',
- 'logging' => 'RevDelLogList',
+ 'revision' => RevDelRevisionList::class,
+ 'archive' => RevDelArchiveList::class,
+ 'oldimage' => RevDelFileList::class,
+ 'filearchive' => RevDelArchivedFileList::class,
+ 'logging' => RevDelLogList::class,
];
/** Type map to support old log entries */
public static function getSearchEngineClass( IDatabase $db ) {
switch ( $db->getType() ) {
case 'sqlite':
- return 'SearchSqlite';
+ return SearchSqlite::class;
case 'mysql':
- return 'SearchMySQL';
+ return SearchMySQL::class;
case 'postgres':
- return 'SearchPostgres';
+ return SearchPostgres::class;
case 'mssql':
- return 'SearchMssql';
+ return SearchMssql::class;
case 'oracle':
- return 'SearchOracle';
+ return SearchOracle::class;
default:
- return 'SearchEngineDummy';
+ return SearchEngineDummy::class;
}
}
}
* @return string
*/
public function getObjectType() {
- return 'Site';
+ return Site::class;
}
/**
*/
class SkinApi extends SkinTemplate {
public $skinname = 'apioutput';
- public $template = 'SkinApiTemplate';
+ public $template = SkinApiTemplate::class;
public function setupSkinUserCss( OutputPage $out ) {
parent::setupSkinUserCss( $out );
class SkinFallback extends SkinTemplate {
public $skinname = 'fallback';
- public $template = 'SkinFallbackTemplate';
+ public $template = SkinFallbackTemplate::class;
/**
* Add CSS via ResourceLoader
* @var string For QuickTemplate, the name of the subclass which will
* actually fill the template. Child classes should override the default.
*/
- public $template = 'QuickTemplate';
+ public $template = QuickTemplate::class;
public $thispage;
public $titletxt;
} elseif ( array_key_exists( 'type', $definition ) ) {
$class = HTMLForm::$typeMappings[$definition['type']];
}
- if ( $class !== 'HTMLInfoField' ) {
+ if ( $class !== HTMLInfoField::class ) {
$definition['tabindex'] = $i;
$i++;
}
if ( $qp === null ) {
// QueryPage subclass, Special page name
$qp = [
- [ 'AncientPagesPage', 'Ancientpages' ],
- [ 'BrokenRedirectsPage', 'BrokenRedirects' ],
- [ 'DeadendPagesPage', 'Deadendpages' ],
- [ 'DoubleRedirectsPage', 'DoubleRedirects' ],
- [ 'FileDuplicateSearchPage', 'FileDuplicateSearch' ],
- [ 'ListDuplicatedFilesPage', 'ListDuplicatedFiles' ],
- [ 'LinkSearchPage', 'LinkSearch' ],
- [ 'ListredirectsPage', 'Listredirects' ],
- [ 'LonelyPagesPage', 'Lonelypages' ],
- [ 'LongPagesPage', 'Longpages' ],
- [ 'MediaStatisticsPage', 'MediaStatistics' ],
- [ 'MIMEsearchPage', 'MIMEsearch' ],
- [ 'MostcategoriesPage', 'Mostcategories' ],
- [ 'MostimagesPage', 'Mostimages' ],
- [ 'MostinterwikisPage', 'Mostinterwikis' ],
- [ 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ],
- [ 'MostlinkedTemplatesPage', 'Mostlinkedtemplates' ],
- [ 'MostlinkedPage', 'Mostlinked' ],
- [ 'MostrevisionsPage', 'Mostrevisions' ],
- [ 'FewestrevisionsPage', 'Fewestrevisions' ],
- [ 'ShortPagesPage', 'Shortpages' ],
- [ 'UncategorizedCategoriesPage', 'Uncategorizedcategories' ],
- [ 'UncategorizedPagesPage', 'Uncategorizedpages' ],
- [ 'UncategorizedImagesPage', 'Uncategorizedimages' ],
- [ 'UncategorizedTemplatesPage', 'Uncategorizedtemplates' ],
- [ 'UnusedCategoriesPage', 'Unusedcategories' ],
- [ 'UnusedimagesPage', 'Unusedimages' ],
- [ 'WantedCategoriesPage', 'Wantedcategories' ],
- [ 'WantedFilesPage', 'Wantedfiles' ],
- [ 'WantedPagesPage', 'Wantedpages' ],
- [ 'WantedTemplatesPage', 'Wantedtemplates' ],
- [ 'UnwatchedpagesPage', 'Unwatchedpages' ],
- [ 'UnusedtemplatesPage', 'Unusedtemplates' ],
- [ 'WithoutInterwikiPage', 'Withoutinterwiki' ],
+ [ AncientPagesPage::class, 'Ancientpages' ],
+ [ BrokenRedirectsPage::class, 'BrokenRedirects' ],
+ [ DeadendPagesPage::class, 'Deadendpages' ],
+ [ DoubleRedirectsPage::class, 'DoubleRedirects' ],
+ [ FileDuplicateSearchPage::class, 'FileDuplicateSearch' ],
+ [ ListDuplicatedFilesPage::class, 'ListDuplicatedFiles' ],
+ [ LinkSearchPage::class, 'LinkSearch' ],
+ [ ListredirectsPage::class, 'Listredirects' ],
+ [ LonelyPagesPage::class, 'Lonelypages' ],
+ [ LongPagesPage::class, 'Longpages' ],
+ [ MediaStatisticsPage::class, 'MediaStatistics' ],
+ [ MIMEsearchPage::class, 'MIMEsearch' ],
+ [ MostcategoriesPage::class, 'Mostcategories' ],
+ [ MostimagesPage::class, 'Mostimages' ],
+ [ MostinterwikisPage::class, 'Mostinterwikis' ],
+ [ MostlinkedCategoriesPage::class, 'Mostlinkedcategories' ],
+ [ MostlinkedTemplatesPage::class, 'Mostlinkedtemplates' ],
+ [ MostlinkedPage::class, 'Mostlinked' ],
+ [ MostrevisionsPage::class, 'Mostrevisions' ],
+ [ FewestrevisionsPage::class, 'Fewestrevisions' ],
+ [ ShortPagesPage::class, 'Shortpages' ],
+ [ UncategorizedCategoriesPage::class, 'Uncategorizedcategories' ],
+ [ UncategorizedPagesPage::class, 'Uncategorizedpages' ],
+ [ UncategorizedImagesPage::class, 'Uncategorizedimages' ],
+ [ UncategorizedTemplatesPage::class, 'Uncategorizedtemplates' ],
+ [ UnusedCategoriesPage::class, 'Unusedcategories' ],
+ [ UnusedimagesPage::class, 'Unusedimages' ],
+ [ WantedCategoriesPage::class, 'Wantedcategories' ],
+ [ WantedFilesPage::class, 'Wantedfiles' ],
+ [ WantedPagesPage::class, 'Wantedpages' ],
+ [ WantedTemplatesPage::class, 'Wantedtemplates' ],
+ [ UnwatchedpagesPage::class, 'Unwatchedpages' ],
+ [ UnusedtemplatesPage::class, 'Unusedtemplates' ],
+ [ WithoutInterwikiPage::class, 'Withoutinterwiki' ],
];
Hooks::run( 'wgQueryPages', [ &$qp ] );
}
*/
private static $coreList = [
// Maintenance Reports
- 'BrokenRedirects' => 'BrokenRedirectsPage',
- 'Deadendpages' => 'DeadendPagesPage',
- 'DoubleRedirects' => 'DoubleRedirectsPage',
- 'Longpages' => 'LongPagesPage',
- 'Ancientpages' => 'AncientPagesPage',
- 'Lonelypages' => 'LonelyPagesPage',
- 'Fewestrevisions' => 'FewestrevisionsPage',
- 'Withoutinterwiki' => 'WithoutInterwikiPage',
- 'Protectedpages' => 'SpecialProtectedpages',
- 'Protectedtitles' => 'SpecialProtectedtitles',
- 'Shortpages' => 'ShortPagesPage',
- 'Uncategorizedcategories' => 'UncategorizedCategoriesPage',
- 'Uncategorizedimages' => 'UncategorizedImagesPage',
- 'Uncategorizedpages' => 'UncategorizedPagesPage',
- 'Uncategorizedtemplates' => 'UncategorizedTemplatesPage',
- 'Unusedcategories' => 'UnusedCategoriesPage',
- 'Unusedimages' => 'UnusedimagesPage',
- 'Unusedtemplates' => 'UnusedtemplatesPage',
- 'Unwatchedpages' => 'UnwatchedpagesPage',
- 'Wantedcategories' => 'WantedCategoriesPage',
- 'Wantedfiles' => 'WantedFilesPage',
- 'Wantedpages' => 'WantedPagesPage',
- 'Wantedtemplates' => 'WantedTemplatesPage',
+ 'BrokenRedirects' => BrokenRedirectsPage::class,
+ 'Deadendpages' => DeadendPagesPage::class,
+ 'DoubleRedirects' => DoubleRedirectsPage::class,
+ 'Longpages' => LongPagesPage::class,
+ 'Ancientpages' => AncientPagesPage::class,
+ 'Lonelypages' => LonelyPagesPage::class,
+ 'Fewestrevisions' => FewestrevisionsPage::class,
+ 'Withoutinterwiki' => WithoutInterwikiPage::class,
+ 'Protectedpages' => SpecialProtectedpages::class,
+ 'Protectedtitles' => SpecialProtectedtitles::class,
+ 'Shortpages' => ShortPagesPage::class,
+ 'Uncategorizedcategories' => UncategorizedCategoriesPage::class,
+ 'Uncategorizedimages' => UncategorizedImagesPage::class,
+ 'Uncategorizedpages' => UncategorizedPagesPage::class,
+ 'Uncategorizedtemplates' => UncategorizedTemplatesPage::class,
+ 'Unusedcategories' => UnusedCategoriesPage::class,
+ 'Unusedimages' => UnusedimagesPage::class,
+ 'Unusedtemplates' => UnusedtemplatesPage::class,
+ 'Unwatchedpages' => UnwatchedpagesPage::class,
+ 'Wantedcategories' => WantedCategoriesPage::class,
+ 'Wantedfiles' => WantedFilesPage::class,
+ 'Wantedpages' => WantedPagesPage::class,
+ 'Wantedtemplates' => WantedTemplatesPage::class,
// List of pages
- 'Allpages' => 'SpecialAllPages',
- 'Prefixindex' => 'SpecialPrefixindex',
- 'Categories' => 'SpecialCategories',
- 'Listredirects' => 'ListredirectsPage',
- 'PagesWithProp' => 'SpecialPagesWithProp',
- 'TrackingCategories' => 'SpecialTrackingCategories',
+ 'Allpages' => SpecialAllPages::class,
+ 'Prefixindex' => SpecialPrefixindex::class,
+ 'Categories' => SpecialCategories::class,
+ 'Listredirects' => ListredirectsPage::class,
+ 'PagesWithProp' => SpecialPagesWithProp::class,
+ 'TrackingCategories' => SpecialTrackingCategories::class,
// Authentication
- 'Userlogin' => 'SpecialUserLogin',
- 'Userlogout' => 'SpecialUserLogout',
- 'CreateAccount' => 'SpecialCreateAccount',
- 'LinkAccounts' => 'SpecialLinkAccounts',
- 'UnlinkAccounts' => 'SpecialUnlinkAccounts',
- 'ChangeCredentials' => 'SpecialChangeCredentials',
- 'RemoveCredentials' => 'SpecialRemoveCredentials',
+ 'Userlogin' => SpecialUserLogin::class,
+ 'Userlogout' => SpecialUserLogout::class,
+ 'CreateAccount' => SpecialCreateAccount::class,
+ 'LinkAccounts' => SpecialLinkAccounts::class,
+ 'UnlinkAccounts' => SpecialUnlinkAccounts::class,
+ 'ChangeCredentials' => SpecialChangeCredentials::class,
+ 'RemoveCredentials' => SpecialRemoveCredentials::class,
// Users and rights
- 'Activeusers' => 'SpecialActiveUsers',
- 'Block' => 'SpecialBlock',
- 'Unblock' => 'SpecialUnblock',
- 'BlockList' => 'SpecialBlockList',
- 'AutoblockList' => 'SpecialAutoblockList',
- 'ChangePassword' => 'SpecialChangePassword',
- 'BotPasswords' => 'SpecialBotPasswords',
- 'PasswordReset' => 'SpecialPasswordReset',
- 'DeletedContributions' => 'DeletedContributionsPage',
- 'Preferences' => 'SpecialPreferences',
- 'ResetTokens' => 'SpecialResetTokens',
- 'Contributions' => 'SpecialContributions',
- 'Listgrouprights' => 'SpecialListGroupRights',
- 'Listgrants' => 'SpecialListGrants',
- 'Listusers' => 'SpecialListUsers',
- 'Listadmins' => 'SpecialListAdmins',
- 'Listbots' => 'SpecialListBots',
- 'Userrights' => 'UserrightsPage',
- 'EditWatchlist' => 'SpecialEditWatchlist',
+ 'Activeusers' => SpecialActiveUsers::class,
+ 'Block' => SpecialBlock::class,
+ 'Unblock' => SpecialUnblock::class,
+ 'BlockList' => SpecialBlockList::class,
+ 'AutoblockList' => SpecialAutoblockList::class,
+ 'ChangePassword' => SpecialChangePassword::class,
+ 'BotPasswords' => SpecialBotPasswords::class,
+ 'PasswordReset' => SpecialPasswordReset::class,
+ 'DeletedContributions' => DeletedContributionsPage::class,
+ 'Preferences' => SpecialPreferences::class,
+ 'ResetTokens' => SpecialResetTokens::class,
+ 'Contributions' => SpecialContributions::class,
+ 'Listgrouprights' => SpecialListGroupRights::class,
+ 'Listgrants' => SpecialListGrants::class,
+ 'Listusers' => SpecialListUsers::class,
+ 'Listadmins' => SpecialListAdmins::class,
+ 'Listbots' => SpecialListBots::class,
+ 'Userrights' => UserrightsPage::class,
+ 'EditWatchlist' => SpecialEditWatchlist::class,
// Recent changes and logs
- 'Newimages' => 'SpecialNewFiles',
- 'Log' => 'SpecialLog',
- 'Watchlist' => 'SpecialWatchlist',
- 'Newpages' => 'SpecialNewpages',
- 'Recentchanges' => 'SpecialRecentChanges',
- 'Recentchangeslinked' => 'SpecialRecentChangesLinked',
- 'Tags' => 'SpecialTags',
+ 'Newimages' => SpecialNewFiles::class,
+ 'Log' => SpecialLog::class,
+ 'Watchlist' => SpecialWatchlist::class,
+ 'Newpages' => SpecialNewpages::class,
+ 'Recentchanges' => SpecialRecentChanges::class,
+ 'Recentchangeslinked' => SpecialRecentChangesLinked::class,
+ 'Tags' => SpecialTags::class,
// Media reports and uploads
- 'Listfiles' => 'SpecialListFiles',
- 'Filepath' => 'SpecialFilepath',
- 'MediaStatistics' => 'MediaStatisticsPage',
- 'MIMEsearch' => 'MIMEsearchPage',
- 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
- 'Upload' => 'SpecialUpload',
- 'UploadStash' => 'SpecialUploadStash',
- 'ListDuplicatedFiles' => 'ListDuplicatedFilesPage',
+ 'Listfiles' => SpecialListFiles::class,
+ 'Filepath' => SpecialFilepath::class,
+ 'MediaStatistics' => MediaStatisticsPage::class,
+ 'MIMEsearch' => MIMEsearchPage::class,
+ 'FileDuplicateSearch' => FileDuplicateSearchPage::class,
+ 'Upload' => SpecialUpload::class,
+ 'UploadStash' => SpecialUploadStash::class,
+ 'ListDuplicatedFiles' => ListDuplicatedFilesPage::class,
// Data and tools
- 'ApiSandbox' => 'SpecialApiSandbox',
- 'Statistics' => 'SpecialStatistics',
- 'Allmessages' => 'SpecialAllMessages',
- 'Version' => 'SpecialVersion',
- 'Lockdb' => 'SpecialLockdb',
- 'Unlockdb' => 'SpecialUnlockdb',
+ 'ApiSandbox' => SpecialApiSandbox::class,
+ 'Statistics' => SpecialStatistics::class,
+ 'Allmessages' => SpecialAllMessages::class,
+ 'Version' => SpecialVersion::class,
+ 'Lockdb' => SpecialLockdb::class,
+ 'Unlockdb' => SpecialUnlockdb::class,
// Redirecting special pages
- 'LinkSearch' => 'LinkSearchPage',
- 'Randompage' => 'RandomPage',
- 'RandomInCategory' => 'SpecialRandomInCategory',
- 'Randomredirect' => 'SpecialRandomredirect',
- 'Randomrootpage' => 'SpecialRandomrootpage',
- 'GoToInterwiki' => 'SpecialGoToInterwiki',
+ 'LinkSearch' => LinkSearchPage::class,
+ 'Randompage' => RandomPage::class,
+ 'RandomInCategory' => SpecialRandomInCategory::class,
+ 'Randomredirect' => SpecialRandomredirect::class,
+ 'Randomrootpage' => SpecialRandomrootpage::class,
+ 'GoToInterwiki' => SpecialGoToInterwiki::class,
// High use pages
- 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
- 'Mostimages' => 'MostimagesPage',
- 'Mostinterwikis' => 'MostinterwikisPage',
- 'Mostlinked' => 'MostlinkedPage',
- 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
- 'Mostcategories' => 'MostcategoriesPage',
- 'Mostrevisions' => 'MostrevisionsPage',
+ 'Mostlinkedcategories' => MostlinkedCategoriesPage::class,
+ 'Mostimages' => MostimagesPage::class,
+ 'Mostinterwikis' => MostinterwikisPage::class,
+ 'Mostlinked' => MostlinkedPage::class,
+ 'Mostlinkedtemplates' => MostlinkedTemplatesPage::class,
+ 'Mostcategories' => MostcategoriesPage::class,
+ 'Mostrevisions' => MostrevisionsPage::class,
// Page tools
- 'ComparePages' => 'SpecialComparePages',
- 'Export' => 'SpecialExport',
- 'Import' => 'SpecialImport',
- 'Undelete' => 'SpecialUndelete',
- 'Whatlinkshere' => 'SpecialWhatLinksHere',
- 'MergeHistory' => 'SpecialMergeHistory',
- 'ExpandTemplates' => 'SpecialExpandTemplates',
+ 'ComparePages' => SpecialComparePages::class,
+ 'Export' => SpecialExport::class,
+ 'Import' => SpecialImport::class,
+ 'Undelete' => SpecialUndelete::class,
+ 'Whatlinkshere' => SpecialWhatLinksHere::class,
+ 'MergeHistory' => SpecialMergeHistory::class,
+ 'ExpandTemplates' => SpecialExpandTemplates::class,
// Other
- 'Booksources' => 'SpecialBookSources',
+ 'Booksources' => SpecialBookSources::class,
// Unlisted / redirects
- 'ApiHelp' => 'SpecialApiHelp',
- 'Blankpage' => 'SpecialBlankpage',
- 'Diff' => 'SpecialDiff',
- 'EditTags' => 'SpecialEditTags',
- 'Emailuser' => 'SpecialEmailUser',
- 'Movepage' => 'MovePageForm',
- 'Mycontributions' => 'SpecialMycontributions',
- 'MyLanguage' => 'SpecialMyLanguage',
- 'Mypage' => 'SpecialMypage',
- 'Mytalk' => 'SpecialMytalk',
- 'Myuploads' => 'SpecialMyuploads',
- 'AllMyUploads' => 'SpecialAllMyUploads',
- 'PermanentLink' => 'SpecialPermanentLink',
- 'Redirect' => 'SpecialRedirect',
- 'Revisiondelete' => 'SpecialRevisionDelete',
- 'RunJobs' => 'SpecialRunJobs',
- 'Specialpages' => 'SpecialSpecialpages',
- 'PageData' => 'SpecialPageData'
+ 'ApiHelp' => SpecialApiHelp::class,
+ 'Blankpage' => SpecialBlankpage::class,
+ 'Diff' => SpecialDiff::class,
+ 'EditTags' => SpecialEditTags::class,
+ 'Emailuser' => SpecialEmailUser::class,
+ 'Movepage' => MovePageForm::class,
+ 'Mycontributions' => SpecialMycontributions::class,
+ 'MyLanguage' => SpecialMyLanguage::class,
+ 'Mypage' => SpecialMypage::class,
+ 'Mytalk' => SpecialMytalk::class,
+ 'Myuploads' => SpecialMyuploads::class,
+ 'AllMyUploads' => SpecialAllMyUploads::class,
+ 'PermanentLink' => SpecialPermanentLink::class,
+ 'Redirect' => SpecialRedirect::class,
+ 'Revisiondelete' => SpecialRevisionDelete::class,
+ 'RunJobs' => SpecialRunJobs::class,
+ 'Specialpages' => SpecialSpecialpages::class,
+ 'PageData' => SpecialPageData::class,
];
private static $list;
self::$list = self::$coreList;
if ( !$wgDisableInternalSearch ) {
- self::$list['Search'] = 'SpecialSearch';
+ self::$list['Search'] = SpecialSearch::class;
}
if ( $wgEmailAuthentication ) {
- self::$list['Confirmemail'] = 'EmailConfirmation';
- self::$list['Invalidateemail'] = 'EmailInvalidation';
+ self::$list['Confirmemail'] = EmailConfirmation::class;
+ self::$list['Invalidateemail'] = EmailInvalidation::class;
}
if ( $wgEnableEmail ) {
- self::$list['ChangeEmail'] = 'SpecialChangeEmail';
+ self::$list['ChangeEmail'] = SpecialChangeEmail::class;
}
if ( $wgEnableJavaScriptTest ) {
- self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
+ self::$list['JavaScriptTest'] = SpecialJavaScriptTest::class;
}
if ( $wgPageLanguageUseDB ) {
- self::$list['PageLanguage'] = 'SpecialPageLanguage';
+ self::$list['PageLanguage'] = SpecialPageLanguage::class;
}
if ( $wgContentHandlerUseDB ) {
- self::$list['ChangeContentModel'] = 'SpecialChangeContentModel';
+ self::$list['ChangeContentModel'] = SpecialChangeContentModel::class;
}
// Add extension special pages
];
$fields['restrictions'] = [
- 'class' => 'HTMLRestrictionsField',
+ 'class' => HTMLRestrictionsField::class,
'required' => true,
'default' => $this->botPassword->getRestrictions(),
];
],
'diff' => [
'name' => 'diff',
- 'class' => 'HTMLTextField',
+ 'class' => HTMLTextField::class,
'label-message' => 'diff-form-revid',
],
], $this->getContext(), 'diff-form' );
// checkTitle can filter some options out, avoid empty sections
if ( count( $options ) > 0 ) {
$fields['TitlesNs' . $namespace] = [
- 'class' => 'EditWatchlistCheckboxSeriesField',
+ 'class' => EditWatchlistCheckboxSeriesField::class,
'options' => $options,
'section' => "ns$namespace",
];
$formDescriptor += [
'textarea' => [
- 'class' => 'HTMLTextAreaField',
+ 'class' => HTMLTextAreaField::class,
'name' => 'pages',
'label-message' => 'export-manual',
'nodata' => true,
) {
$formDescriptor = [
'namespace' => [
- 'class' => 'HTMLSelectNamespace',
+ 'class' => HTMLSelectNamespace::class,
'name' => 'namespace',
'id' => 'namespace',
'cssclass' => 'namespaceselector',
'id' => 'noredirect',
],
'sizelimit' => [
- 'class' => 'HTMLSizeFilterField',
+ 'class' => HTMLSizeFilterField::class,
'name' => 'size',
]
];
$out = $context->getOutput();
$tag = $data['HiddenTag'];
- $status = call_user_func( [ 'ChangeTags', "{$form->tagAction}TagWithChecks" ],
+ $status = call_user_func( [ ChangeTags::class, "{$form->tagAction}TagWithChecks" ],
$tag, $data['Reason'], $context->getUser(), true );
if ( $status->isGood() ) {
}
$descriptor['UploadFile'] = [
- 'class' => 'UploadSourceField',
+ 'class' => UploadSourceField::class,
'section' => 'source',
'type' => 'file',
'id' => 'wpUploadFile',
if ( $canUploadByUrl ) {
$this->mMaxUploadSize['url'] = UploadBase::getMaxUploadSize( 'url' );
$descriptor['UploadFileURL'] = [
- 'class' => 'UploadSourceField',
+ 'class' => UploadSourceField::class,
'section' => 'source',
'id' => 'wpUploadFileURL',
'radio-id' => 'wpSourceTypeurl',
} else {
$descriptor['License'] = [
'type' => 'select',
- 'class' => 'Licenses',
+ 'class' => Licenses::class,
'section' => 'description',
'id' => 'wpLicense',
'label-message' => 'license',
$formDescriptor = [
'user' => [
- 'class' => 'HTMLUserTextField',
+ 'class' => HTMLUserTextField::class,
'label' => $this->msg( 'listusersfrom' )->text(),
'name' => 'username',
'default' => $this->requestedUser,
'label' => $this->msg( 'group' )->text(),
'name' => 'group',
'default' => $this->requestedGroup,
- 'class' => 'HTMLSelectField',
+ 'class' => HTMLSelectField::class,
'options' => $groupOptions,
],
'editsOnly' => [
'default' => $this->mDefaultDirection
],
'limithiddenfield' => [
- 'class' => 'HTMLHiddenField',
+ 'class' => HTMLHiddenField::class,
'name' => 'limit',
'default' => $this->mLimit
]
if ( $beforeSubmitButtonHookOut !== '' ) {
$formDescriptior[ 'beforeSubmitButtonHookOut' ] = [
- 'class' => 'HTMLInfoField',
+ 'class' => HTMLInfoField::class,
'raw' => true,
'default' => $beforeSubmitButtonHookOut
];
}
$formDescriptor[ 'submit' ] = [
- 'class' => 'HTMLSubmitField',
+ 'class' => HTMLSubmitField::class,
'buttonlabel-message' => 'listusers-submit',
];
if ( $beforeClosingFieldsetHookOut !== '' ) {
$formDescriptior[ 'beforeClosingFieldsetHookOut' ] = [
- 'class' => 'HTMLInfoField',
+ 'class' => HTMLInfoField::class,
'raw' => true,
'default' => $beforeClosingFieldsetHookOut
];
$multiselectOptions = [];
foreach ( $prefs as $name => $info ) {
if ( ( isset( $info['type'] ) && $info['type'] == 'multiselect' ) ||
- ( isset( $info['class'] ) && $info['class'] == 'HTMLMultiSelectField' ) ) {
+ ( isset( $info['class'] ) && $info['class'] == HTMLMultiSelectField::class ) ) {
$opts = HTMLFormField::flattenOptions( $info['options'] );
$prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
$checkmatrixOptions = [];
foreach ( $prefs as $name => $info ) {
if ( ( isset( $info['type'] ) && $info['type'] == 'checkmatrix' ) ||
- ( isset( $info['class'] ) && $info['class'] == 'HTMLCheckMatrix' ) ) {
+ ( isset( $info['class'] ) && $info['class'] == HTMLCheckMatrix::class ) ) {
$columns = HTMLFormField::flattenOptions( $info['columns'] );
$rows = HTMLFormField::flattenOptions( $info['rows'] );
$prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
$this->cache = $cache;
$this->readOnlyMode = $readOnlyMode;
$this->stats = new NullStatsdDataFactory();
- $this->deferredUpdatesAddCallableUpdateCallback = [ 'DeferredUpdates', 'addCallableUpdate' ];
- $this->revisionGetTimestampFromIdCallback = [ 'Revision', 'getTimestampFromId' ];
+ $this->deferredUpdatesAddCallableUpdateCallback = [ DeferredUpdates::class, 'addCallableUpdate' ];
+ $this->revisionGetTimestampFromIdCallback = [ Revision::class, 'getTimestampFromId' ];
}
/**
/**
* Special modules who have their own classes
*/
- 'startup' => [ 'class' => 'ResourceLoaderStartUpModule' ],
+ 'startup' => [ 'class' => ResourceLoaderStartUpModule::class ],
// Scripts managed by the local wiki (stored in the MediaWiki namespace)
- 'site' => [ 'class' => 'ResourceLoaderSiteModule' ],
- 'site.styles' => [ 'class' => 'ResourceLoaderSiteStylesModule' ],
+ 'site' => [ 'class' => ResourceLoaderSiteModule::class ],
+ 'site.styles' => [ 'class' => ResourceLoaderSiteStylesModule::class ],
'noscript' => [
- 'class' => 'ResourceLoaderWikiModule',
+ 'class' => ResourceLoaderWikiModule::class,
'styles' => [ 'MediaWiki:Noscript.css' ],
'group' => 'noscript',
],
'filepage' => [
- 'class' => 'ResourceLoaderWikiModule',
+ 'class' => ResourceLoaderWikiModule::class,
'styles' => [ 'MediaWiki:Filepage.css' ],
],
'user.groups' => [
],
// Scripts managed by the current user (stored in their user space)
- 'user' => [ 'class' => 'ResourceLoaderUserModule' ],
- 'user.styles' => [ 'class' => 'ResourceLoaderUserStylesModule' ],
+ 'user' => [ 'class' => ResourceLoaderUserModule::class ],
+ 'user.styles' => [ 'class' => ResourceLoaderUserStylesModule::class ],
// Populate mediawiki.user placeholders with information about the current user
- 'user.defaults' => [ 'class' => 'ResourceLoaderUserDefaultsModule' ],
- 'user.options' => [ 'class' => 'ResourceLoaderUserOptionsModule' ],
- 'user.tokens' => [ 'class' => 'ResourceLoaderUserTokensModule' ],
+ 'user.defaults' => [ 'class' => ResourceLoaderUserDefaultsModule::class ],
+ 'user.options' => [ 'class' => ResourceLoaderUserOptionsModule::class ],
+ 'user.tokens' => [ 'class' => ResourceLoaderUserTokensModule::class ],
// Scripts for the dynamic language specific data, like grammar forms.
- 'mediawiki.language.data' => [ 'class' => 'ResourceLoaderLanguageDataModule' ],
+ 'mediawiki.language.data' => [ 'class' => ResourceLoaderLanguageDataModule::class ],
/* MediaWiki base skinning modules */
],
// Used in the web installer. Test it after modifying this definition!
'mediawiki.skinning.interface' => [
- 'class' => 'ResourceLoaderSkinModule',
+ 'class' => ResourceLoaderSkinModule::class,
'styles' => [
'resources/src/mediawiki.skinning/elements.css' => [ 'media' => 'screen' ],
'resources/src/mediawiki.skinning/content.css' => [ 'media' => 'screen' ],
/* MediaWiki */
'mediawiki' => [
- 'class' => 'ResourceLoaderRawFileModule',
+ 'class' => ResourceLoaderRawFileModule::class,
// Keep in sync with maintenance/jsduck/eg-iframe.html
'scripts' => [
'resources/src/mediawiki/mediawiki.js',
],
'mediawiki.ForeignApi' => [
'targets' => [ 'desktop', 'mobile' ],
- 'class' => 'ResourceLoaderForeignApiModule',
+ 'class' => ResourceLoaderForeignApiModule::class,
// Additional dependencies generated dynamically
'dependencies' => 'mediawiki.ForeignApi.core',
],
]
],
'mediawiki.ForeignStructuredUpload.config' => [
- 'class' => 'ResourceLoaderUploadDialogModule',
+ 'class' => ResourceLoaderUploadDialogModule::class,
],
'mediawiki.ForeignStructuredUpload' => [
'scripts' => 'resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js',
]
],
'mediawiki.util' => [
- 'class' => 'ResourceLoaderMediaWikiUtilModule',
+ 'class' => ResourceLoaderMediaWikiUtilModule::class,
'scripts' => 'resources/src/mediawiki/mediawiki.util.js',
'dependencies' => [
'jquery.accessKeyLabel',
'targets' => [ 'desktop', 'mobile' ],
],
'mediawiki.toolbar' => [
- 'class' => 'ResourceLoaderEditToolbarModule',
+ 'class' => ResourceLoaderEditToolbarModule::class,
'scripts' => 'resources/src/mediawiki.toolbar/toolbar.js',
'styles' => 'resources/src/mediawiki.toolbar/toolbar.less',
'dependencies' => 'jquery.textSelection',
'mediawiki.jqueryMsg' => [
// Add data for mediawiki.jqueryMsg, such as allowed tags
- 'class' => 'ResourceLoaderJqueryMsgModule',
+ 'class' => ResourceLoaderJqueryMsgModule::class,
'scripts' => 'resources/src/mediawiki/mediawiki.jqueryMsg.js',
'dependencies' => [
'mediawiki.util',
)
],
- 'mediawiki.language.names' => [ 'class' => 'ResourceLoaderLanguageNamesModule' ],
+ 'mediawiki.language.names' => [ 'class' => ResourceLoaderLanguageNamesModule::class ],
'mediawiki.language.specialCharacters' => [
- 'class' => 'ResourceLoaderSpecialCharacterDataModule'
+ 'class' => ResourceLoaderSpecialCharacterDataModule::class
],
/* MediaWiki Libs */
// The core JavaScript library.
'oojs-ui-core' => [
- 'class' => 'ResourceLoaderOOUIFileModule',
+ 'class' => ResourceLoaderOOUIFileModule::class,
'scripts' => [
'resources/lib/oojs-ui/oojs-ui-core.js',
'resources/src/oojs-ui-local.js',
],
// This contains only the styles required by core widgets.
'oojs-ui-core.styles' => [
- 'class' => 'ResourceLoaderOOUIFileModule',
+ 'class' => ResourceLoaderOOUIFileModule::class,
'styles' => [
'resources/lib/oojs-ui/wikimedia-ui-base.less', // Providing Wikimedia UI LESS variables to all
'resources/src/oojs-ui-local.css', // HACK, see inside the file
],
// Additional widgets and layouts module.
'oojs-ui-widgets' => [
- 'class' => 'ResourceLoaderOOUIFileModule',
+ 'class' => ResourceLoaderOOUIFileModule::class,
'scripts' => 'resources/lib/oojs-ui/oojs-ui-widgets.js',
'themeStyles' => 'widgets',
'dependencies' => [
],
// Toolbar and tools module.
'oojs-ui-toolbars' => [
- 'class' => 'ResourceLoaderOOUIFileModule',
+ 'class' => ResourceLoaderOOUIFileModule::class,
'scripts' => 'resources/lib/oojs-ui/oojs-ui-toolbars.js',
'themeStyles' => 'toolbars',
'dependencies' => [
],
// Windows and dialogs module.
'oojs-ui-windows' => [
- 'class' => 'ResourceLoaderOOUIFileModule',
+ 'class' => ResourceLoaderOOUIFileModule::class,
'scripts' => 'resources/lib/oojs-ui/oojs-ui-windows.js',
'themeStyles' => 'windows',
'dependencies' => [
],
'oojs-ui.styles.indicators' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'indicators',
],
'oojs-ui.styles.textures' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'textures',
],
'oojs-ui.styles.icons-accessibility' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-accessibility',
],
'oojs-ui.styles.icons-alerts' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-alerts',
],
'oojs-ui.styles.icons-content' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-content',
],
'oojs-ui.styles.icons-editing-advanced' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-editing-advanced',
],
'oojs-ui.styles.icons-editing-core' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-editing-core',
],
'oojs-ui.styles.icons-editing-list' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-editing-list',
],
'oojs-ui.styles.icons-editing-styling' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-editing-styling',
],
'oojs-ui.styles.icons-interactions' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-interactions',
],
'oojs-ui.styles.icons-layout' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-layout',
],
'oojs-ui.styles.icons-location' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-location',
],
'oojs-ui.styles.icons-media' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-media',
],
'oojs-ui.styles.icons-moderation' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-moderation',
],
'oojs-ui.styles.icons-movement' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-movement',
],
'oojs-ui.styles.icons-user' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-user',
],
'oojs-ui.styles.icons-wikimedia' => [
- 'class' => 'ResourceLoaderOOUIImageModule',
+ 'class' => ResourceLoaderOOUIImageModule::class,
'themeImages' => 'icons-wikimedia',
],
];