wiki.techinc.nl/autoload.php

2899 lines
260 KiB
PHP
Raw Normal View History

<?php
// This file is generated by maintenance/generateLocalAutoload.php, do not adjust manually
// phpcs:disable Generic.Files.LineLength
global $wgAutoloadLocalClasses;
$wgAutoloadLocalClasses = [
'APCUBagOStuff' => __DIR__ . '/includes/libs/objectcache/APCUBagOStuff.php',
'AbkhazUppercaseCollation' => __DIR__ . '/includes/collation/AbkhazUppercaseCollation.php',
'AbstractContent' => __DIR__ . '/includes/content/AbstractContent.php',
'AbstractPbkdf2Password' => __DIR__ . '/includes/password/AbstractPbkdf2Password.php',
'Action' => __DIR__ . '/includes/actions/Action.php',
'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php',
'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php',
'ActorMigration' => __DIR__ . '/includes/user/ActorMigration.php',
'ActorMigrationBase' => __DIR__ . '/includes/user/ActorMigrationBase.php',
'AddChangeTag' => __DIR__ . '/maintenance/addChangeTag.php',
'AddRFCandPMIDInterwiki' => __DIR__ . '/maintenance/addRFCandPMIDInterwiki.php',
'AddSite' => __DIR__ . '/maintenance/addSite.php',
'AllMessagesTablePager' => __DIR__ . '/includes/specials/pagers/AllMessagesTablePager.php',
'AllTrans' => __DIR__ . '/maintenance/language/alltrans.php',
'AlphabeticPager' => __DIR__ . '/includes/pager/AlphabeticPager.php',
'ApiAMCreateAccount' => __DIR__ . '/includes/api/ApiAMCreateAccount.php',
'ApiAuthManagerHelper' => __DIR__ . '/includes/api/ApiAuthManagerHelper.php',
'ApiBase' => __DIR__ . '/includes/api/ApiBase.php',
'ApiBlock' => __DIR__ . '/includes/api/ApiBlock.php',
'ApiBlockInfoTrait' => __DIR__ . '/includes/api/ApiBlockInfoTrait.php',
'ApiCSPReport' => __DIR__ . '/includes/api/ApiCSPReport.php',
'ApiChangeAuthenticationData' => __DIR__ . '/includes/api/ApiChangeAuthenticationData.php',
'ApiChangeContentModel' => __DIR__ . '/includes/api/ApiChangeContentModel.php',
'ApiCheckToken' => __DIR__ . '/includes/api/ApiCheckToken.php',
'ApiClearHasMsg' => __DIR__ . '/includes/api/ApiClearHasMsg.php',
'ApiClientLogin' => __DIR__ . '/includes/api/ApiClientLogin.php',
'ApiComparePages' => __DIR__ . '/includes/api/ApiComparePages.php',
API: Overhaul ApiResult, make format=xml not throw, and add json formatversion ApiResult was a mess: some methods could only be used with an array reference instead of manipulating the stored data, methods that had both array-ref and internal-data versions had names that didn't at all correspond, some methods that worked on an array reference were annoyingly non-static, and then the whole mess with setIndexedTagName. ApiFormatXml is also entirely annoying to deal with, as it liked to throw exceptions if certain metadata wasn't provided that no other formatter required. Its legacy also means we have this silly convention of using empty-string rather than boolean true, annoying restrictions on keys (leading to things that should be hashes being arrays of key-value object instead), '*' used as a key all over the place, and so on. So, changes here: * ApiResult is no longer an ApiBase or a ContextSource. * Wherever sensible, ApiResult provides a static method working on an arrayref and a non-static method working on internal data. * Metadata is now always added to ApiResult's internal data structure. Formatters are responsible for stripping it if necessary. "raw mode" is deprecated. * New metadata to replace the '*' key, solve the array() => '[]' vs '{}' question, and so on. * New class for formatting warnings and errors using i18n messages, and support for multiple errors and a more machine-readable format for warnings. For the moment, though, the actual output will not be changing yet (see T47843 for future plans). * New formatversion parameter for format=json and format=php, to select between BC mode and the modern output. * In BC mode, booleans will be converted to empty-string presence style; modules currently returning booleans will need to use ApiResult::META_BC_BOOLS to preserve their current output. Actual changes to the API modules' output (e.g. actually returning booleans for the new formatversion) beyond the use of ApiResult::setContentValue() are left for a future change. Bug: T76728 Bug: T57371 Bug: T33629 Change-Id: I7b37295e8862b188d1f3b0cd07f66ac34629678f
2014-12-03 22:14:22 +00:00
'ApiContinuationManager' => __DIR__ . '/includes/api/ApiContinuationManager.php',
'ApiDelete' => __DIR__ . '/includes/api/ApiDelete.php',
'ApiDisabled' => __DIR__ . '/includes/api/ApiDisabled.php',
'ApiEditPage' => __DIR__ . '/includes/api/ApiEditPage.php',
'ApiEmailUser' => __DIR__ . '/includes/api/ApiEmailUser.php',
API: Overhaul ApiResult, make format=xml not throw, and add json formatversion ApiResult was a mess: some methods could only be used with an array reference instead of manipulating the stored data, methods that had both array-ref and internal-data versions had names that didn't at all correspond, some methods that worked on an array reference were annoyingly non-static, and then the whole mess with setIndexedTagName. ApiFormatXml is also entirely annoying to deal with, as it liked to throw exceptions if certain metadata wasn't provided that no other formatter required. Its legacy also means we have this silly convention of using empty-string rather than boolean true, annoying restrictions on keys (leading to things that should be hashes being arrays of key-value object instead), '*' used as a key all over the place, and so on. So, changes here: * ApiResult is no longer an ApiBase or a ContextSource. * Wherever sensible, ApiResult provides a static method working on an arrayref and a non-static method working on internal data. * Metadata is now always added to ApiResult's internal data structure. Formatters are responsible for stripping it if necessary. "raw mode" is deprecated. * New metadata to replace the '*' key, solve the array() => '[]' vs '{}' question, and so on. * New class for formatting warnings and errors using i18n messages, and support for multiple errors and a more machine-readable format for warnings. For the moment, though, the actual output will not be changing yet (see T47843 for future plans). * New formatversion parameter for format=json and format=php, to select between BC mode and the modern output. * In BC mode, booleans will be converted to empty-string presence style; modules currently returning booleans will need to use ApiResult::META_BC_BOOLS to preserve their current output. Actual changes to the API modules' output (e.g. actually returning booleans for the new formatversion) beyond the use of ApiResult::setContentValue() are left for a future change. Bug: T76728 Bug: T57371 Bug: T33629 Change-Id: I7b37295e8862b188d1f3b0cd07f66ac34629678f
2014-12-03 22:14:22 +00:00
'ApiErrorFormatter' => __DIR__ . '/includes/api/ApiErrorFormatter.php',
'ApiErrorFormatter_BackCompat' => __DIR__ . '/includes/api/ApiErrorFormatter_BackCompat.php',
'ApiExpandTemplates' => __DIR__ . '/includes/api/ApiExpandTemplates.php',
'ApiFeedContributions' => __DIR__ . '/includes/api/ApiFeedContributions.php',
'ApiFeedRecentChanges' => __DIR__ . '/includes/api/ApiFeedRecentChanges.php',
'ApiFeedWatchlist' => __DIR__ . '/includes/api/ApiFeedWatchlist.php',
'ApiFileRevert' => __DIR__ . '/includes/api/ApiFileRevert.php',
'ApiFormatBase' => __DIR__ . '/includes/api/ApiFormatBase.php',
'ApiFormatFeedWrapper' => __DIR__ . '/includes/api/ApiFormatFeedWrapper.php',
'ApiFormatJson' => __DIR__ . '/includes/api/ApiFormatJson.php',
'ApiFormatNone' => __DIR__ . '/includes/api/ApiFormatNone.php',
'ApiFormatPhp' => __DIR__ . '/includes/api/ApiFormatPhp.php',
'ApiFormatRaw' => __DIR__ . '/includes/api/ApiFormatRaw.php',
'ApiFormatXml' => __DIR__ . '/includes/api/ApiFormatXml.php',
'ApiFormatXmlRsd' => __DIR__ . '/includes/api/ApiFormatXmlRsd.php',
'ApiHelp' => __DIR__ . '/includes/api/ApiHelp.php',
'ApiHelpParamValueMessage' => __DIR__ . '/includes/api/ApiHelpParamValueMessage.php',
'ApiImageRotate' => __DIR__ . '/includes/api/ApiImageRotate.php',
'ApiImport' => __DIR__ . '/includes/api/ApiImport.php',
'ApiImportReporter' => __DIR__ . '/includes/api/ApiImportReporter.php',
'ApiLinkAccount' => __DIR__ . '/includes/api/ApiLinkAccount.php',
'ApiLogin' => __DIR__ . '/includes/api/ApiLogin.php',
'ApiLogout' => __DIR__ . '/includes/api/ApiLogout.php',
'ApiMain' => __DIR__ . '/includes/api/ApiMain.php',
'ApiManageTags' => __DIR__ . '/includes/api/ApiManageTags.php',
'ApiMergeHistory' => __DIR__ . '/includes/api/ApiMergeHistory.php',
API: Overhaul ApiResult, make format=xml not throw, and add json formatversion ApiResult was a mess: some methods could only be used with an array reference instead of manipulating the stored data, methods that had both array-ref and internal-data versions had names that didn't at all correspond, some methods that worked on an array reference were annoyingly non-static, and then the whole mess with setIndexedTagName. ApiFormatXml is also entirely annoying to deal with, as it liked to throw exceptions if certain metadata wasn't provided that no other formatter required. Its legacy also means we have this silly convention of using empty-string rather than boolean true, annoying restrictions on keys (leading to things that should be hashes being arrays of key-value object instead), '*' used as a key all over the place, and so on. So, changes here: * ApiResult is no longer an ApiBase or a ContextSource. * Wherever sensible, ApiResult provides a static method working on an arrayref and a non-static method working on internal data. * Metadata is now always added to ApiResult's internal data structure. Formatters are responsible for stripping it if necessary. "raw mode" is deprecated. * New metadata to replace the '*' key, solve the array() => '[]' vs '{}' question, and so on. * New class for formatting warnings and errors using i18n messages, and support for multiple errors and a more machine-readable format for warnings. For the moment, though, the actual output will not be changing yet (see T47843 for future plans). * New formatversion parameter for format=json and format=php, to select between BC mode and the modern output. * In BC mode, booleans will be converted to empty-string presence style; modules currently returning booleans will need to use ApiResult::META_BC_BOOLS to preserve their current output. Actual changes to the API modules' output (e.g. actually returning booleans for the new formatversion) beyond the use of ApiResult::setContentValue() are left for a future change. Bug: T76728 Bug: T57371 Bug: T33629 Change-Id: I7b37295e8862b188d1f3b0cd07f66ac34629678f
2014-12-03 22:14:22 +00:00
'ApiMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiMessageTrait' => __DIR__ . '/includes/api/ApiMessageTrait.php',
'ApiModuleManager' => __DIR__ . '/includes/api/ApiModuleManager.php',
'ApiMove' => __DIR__ . '/includes/api/ApiMove.php',
'ApiOpenSearch' => __DIR__ . '/includes/api/ApiOpenSearch.php',
'ApiOpenSearchFormatJson' => __DIR__ . '/includes/api/ApiOpenSearchFormatJson.php',
'ApiOptions' => __DIR__ . '/includes/api/ApiOptions.php',
'ApiPageSet' => __DIR__ . '/includes/api/ApiPageSet.php',
'ApiParamInfo' => __DIR__ . '/includes/api/ApiParamInfo.php',
'ApiParse' => __DIR__ . '/includes/api/ApiParse.php',
'ApiPatrol' => __DIR__ . '/includes/api/ApiPatrol.php',
'ApiProtect' => __DIR__ . '/includes/api/ApiProtect.php',
'ApiPurge' => __DIR__ . '/includes/api/ApiPurge.php',
'ApiQuery' => __DIR__ . '/includes/api/ApiQuery.php',
'ApiQueryAllCategories' => __DIR__ . '/includes/api/ApiQueryAllCategories.php',
'ApiQueryAllDeletedRevisions' => __DIR__ . '/includes/api/ApiQueryAllDeletedRevisions.php',
'ApiQueryAllImages' => __DIR__ . '/includes/api/ApiQueryAllImages.php',
'ApiQueryAllLinks' => __DIR__ . '/includes/api/ApiQueryAllLinks.php',
'ApiQueryAllMessages' => __DIR__ . '/includes/api/ApiQueryAllMessages.php',
'ApiQueryAllPages' => __DIR__ . '/includes/api/ApiQueryAllPages.php',
'ApiQueryAllRevisions' => __DIR__ . '/includes/api/ApiQueryAllRevisions.php',
'ApiQueryAllUsers' => __DIR__ . '/includes/api/ApiQueryAllUsers.php',
'ApiQueryAuthManagerInfo' => __DIR__ . '/includes/api/ApiQueryAuthManagerInfo.php',
'ApiQueryBacklinks' => __DIR__ . '/includes/api/ApiQueryBacklinks.php',
'ApiQueryBacklinksprop' => __DIR__ . '/includes/api/ApiQueryBacklinksprop.php',
'ApiQueryBase' => __DIR__ . '/includes/api/ApiQueryBase.php',
'ApiQueryBlockInfoTrait' => __DIR__ . '/includes/api/ApiQueryBlockInfoTrait.php',
'ApiQueryBlocks' => __DIR__ . '/includes/api/ApiQueryBlocks.php',
'ApiQueryCategories' => __DIR__ . '/includes/api/ApiQueryCategories.php',
'ApiQueryCategoryInfo' => __DIR__ . '/includes/api/ApiQueryCategoryInfo.php',
'ApiQueryCategoryMembers' => __DIR__ . '/includes/api/ApiQueryCategoryMembers.php',
'ApiQueryContributors' => __DIR__ . '/includes/api/ApiQueryContributors.php',
'ApiQueryDeletedRevisions' => __DIR__ . '/includes/api/ApiQueryDeletedRevisions.php',
'ApiQueryDeletedrevs' => __DIR__ . '/includes/api/ApiQueryDeletedrevs.php',
'ApiQueryDisabled' => __DIR__ . '/includes/api/ApiQueryDisabled.php',
'ApiQueryDuplicateFiles' => __DIR__ . '/includes/api/ApiQueryDuplicateFiles.php',
'ApiQueryExtLinksUsage' => __DIR__ . '/includes/api/ApiQueryExtLinksUsage.php',
'ApiQueryExternalLinks' => __DIR__ . '/includes/api/ApiQueryExternalLinks.php',
'ApiQueryFileRepoInfo' => __DIR__ . '/includes/api/ApiQueryFileRepoInfo.php',
'ApiQueryFilearchive' => __DIR__ . '/includes/api/ApiQueryFilearchive.php',
'ApiQueryGeneratorBase' => __DIR__ . '/includes/api/ApiQueryGeneratorBase.php',
'ApiQueryIWBacklinks' => __DIR__ . '/includes/api/ApiQueryIWBacklinks.php',
'ApiQueryIWLinks' => __DIR__ . '/includes/api/ApiQueryIWLinks.php',
'ApiQueryImageInfo' => __DIR__ . '/includes/api/ApiQueryImageInfo.php',
'ApiQueryImages' => __DIR__ . '/includes/api/ApiQueryImages.php',
'ApiQueryInfo' => __DIR__ . '/includes/api/ApiQueryInfo.php',
'ApiQueryLangBacklinks' => __DIR__ . '/includes/api/ApiQueryLangBacklinks.php',
'ApiQueryLangLinks' => __DIR__ . '/includes/api/ApiQueryLangLinks.php',
'ApiQueryLanguageinfo' => __DIR__ . '/includes/api/ApiQueryLanguageinfo.php',
'ApiQueryLinks' => __DIR__ . '/includes/api/ApiQueryLinks.php',
'ApiQueryLogEvents' => __DIR__ . '/includes/api/ApiQueryLogEvents.php',
'ApiQueryMyStashedFiles' => __DIR__ . '/includes/api/ApiQueryMyStashedFiles.php',
'ApiQueryPagePropNames' => __DIR__ . '/includes/api/ApiQueryPagePropNames.php',
'ApiQueryPageProps' => __DIR__ . '/includes/api/ApiQueryPageProps.php',
'ApiQueryPagesWithProp' => __DIR__ . '/includes/api/ApiQueryPagesWithProp.php',
'ApiQueryPrefixSearch' => __DIR__ . '/includes/api/ApiQueryPrefixSearch.php',
'ApiQueryProtectedTitles' => __DIR__ . '/includes/api/ApiQueryProtectedTitles.php',
'ApiQueryQueryPage' => __DIR__ . '/includes/api/ApiQueryQueryPage.php',
'ApiQueryRandom' => __DIR__ . '/includes/api/ApiQueryRandom.php',
'ApiQueryRecentChanges' => __DIR__ . '/includes/api/ApiQueryRecentChanges.php',
'ApiQueryRevisions' => __DIR__ . '/includes/api/ApiQueryRevisions.php',
'ApiQueryRevisionsBase' => __DIR__ . '/includes/api/ApiQueryRevisionsBase.php',
'ApiQuerySearch' => __DIR__ . '/includes/api/ApiQuerySearch.php',
'ApiQuerySiteinfo' => __DIR__ . '/includes/api/ApiQuerySiteinfo.php',
'ApiQueryStashImageInfo' => __DIR__ . '/includes/api/ApiQueryStashImageInfo.php',
'ApiQueryTags' => __DIR__ . '/includes/api/ApiQueryTags.php',
'ApiQueryTokens' => __DIR__ . '/includes/api/ApiQueryTokens.php',
'ApiQueryUserContribs' => __DIR__ . '/includes/api/ApiQueryUserContribs.php',
'ApiQueryUserInfo' => __DIR__ . '/includes/api/ApiQueryUserInfo.php',
'ApiQueryUsers' => __DIR__ . '/includes/api/ApiQueryUsers.php',
'ApiQueryWatchlist' => __DIR__ . '/includes/api/ApiQueryWatchlist.php',
'ApiQueryWatchlistRaw' => __DIR__ . '/includes/api/ApiQueryWatchlistRaw.php',
'ApiRawMessage' => __DIR__ . '/includes/api/ApiRawMessage.php',
'ApiRemoveAuthenticationData' => __DIR__ . '/includes/api/ApiRemoveAuthenticationData.php',
'ApiResetPassword' => __DIR__ . '/includes/api/ApiResetPassword.php',
'ApiResult' => __DIR__ . '/includes/api/ApiResult.php',
'ApiRevisionDelete' => __DIR__ . '/includes/api/ApiRevisionDelete.php',
'ApiRollback' => __DIR__ . '/includes/api/ApiRollback.php',
'ApiRsd' => __DIR__ . '/includes/api/ApiRsd.php',
API: Overhaul ApiResult, make format=xml not throw, and add json formatversion ApiResult was a mess: some methods could only be used with an array reference instead of manipulating the stored data, methods that had both array-ref and internal-data versions had names that didn't at all correspond, some methods that worked on an array reference were annoyingly non-static, and then the whole mess with setIndexedTagName. ApiFormatXml is also entirely annoying to deal with, as it liked to throw exceptions if certain metadata wasn't provided that no other formatter required. Its legacy also means we have this silly convention of using empty-string rather than boolean true, annoying restrictions on keys (leading to things that should be hashes being arrays of key-value object instead), '*' used as a key all over the place, and so on. So, changes here: * ApiResult is no longer an ApiBase or a ContextSource. * Wherever sensible, ApiResult provides a static method working on an arrayref and a non-static method working on internal data. * Metadata is now always added to ApiResult's internal data structure. Formatters are responsible for stripping it if necessary. "raw mode" is deprecated. * New metadata to replace the '*' key, solve the array() => '[]' vs '{}' question, and so on. * New class for formatting warnings and errors using i18n messages, and support for multiple errors and a more machine-readable format for warnings. For the moment, though, the actual output will not be changing yet (see T47843 for future plans). * New formatversion parameter for format=json and format=php, to select between BC mode and the modern output. * In BC mode, booleans will be converted to empty-string presence style; modules currently returning booleans will need to use ApiResult::META_BC_BOOLS to preserve their current output. Actual changes to the API modules' output (e.g. actually returning booleans for the new formatversion) beyond the use of ApiResult::setContentValue() are left for a future change. Bug: T76728 Bug: T57371 Bug: T33629 Change-Id: I7b37295e8862b188d1f3b0cd07f66ac34629678f
2014-12-03 22:14:22 +00:00
'ApiSerializable' => __DIR__ . '/includes/api/ApiSerializable.php',
'ApiSetNotificationTimestamp' => __DIR__ . '/includes/api/ApiSetNotificationTimestamp.php',
'ApiSetPageLanguage' => __DIR__ . '/includes/api/ApiSetPageLanguage.php',
'ApiStashEdit' => __DIR__ . '/includes/api/ApiStashEdit.php',
'ApiTag' => __DIR__ . '/includes/api/ApiTag.php',
'ApiUnblock' => __DIR__ . '/includes/api/ApiUnblock.php',
'ApiUndelete' => __DIR__ . '/includes/api/ApiUndelete.php',
'ApiUpload' => __DIR__ . '/includes/api/ApiUpload.php',
'ApiUsageException' => __DIR__ . '/includes/api/ApiUsageException.php',
'ApiUserrights' => __DIR__ . '/includes/api/ApiUserrights.php',
'ApiValidatePassword' => __DIR__ . '/includes/api/ApiValidatePassword.php',
'ApiWatch' => __DIR__ . '/includes/api/ApiWatch.php',
'ApiWatchlistTrait' => __DIR__ . '/includes/api/ApiWatchlistTrait.php',
'ArchivedFile' => __DIR__ . '/includes/filerepo/file/ArchivedFile.php',
'Argon2Password' => __DIR__ . '/includes/password/Argon2Password.php',
'ArrayDiffFormatter' => __DIR__ . '/includes/diff/ArrayDiffFormatter.php',
'ArrayUtils' => __DIR__ . '/includes/libs/ArrayUtils.php',
'Article' => __DIR__ . '/includes/page/Article.php',
'AssembleUploadChunksJob' => __DIR__ . '/includes/jobqueue/jobs/AssembleUploadChunksJob.php',
'AtomFeed' => __DIR__ . '/includes/Feed/AtomFeed.php',
'AtomicSectionUpdate' => __DIR__ . '/includes/deferred/AtomicSectionUpdate.php',
'AttachLatest' => __DIR__ . '/maintenance/attachLatest.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'AuthManagerSpecialPage' => __DIR__ . '/includes/specialpage/AuthManagerSpecialPage.php',
'AutoCommitUpdate' => __DIR__ . '/includes/deferred/AutoCommitUpdate.php',
'AutoloadGenerator' => __DIR__ . '/includes/utils/AutoloadGenerator.php',
'BacklinkCache' => __DIR__ . '/includes/cache/BacklinkCache.php',
'BacklinkJobUtils' => __DIR__ . '/includes/jobqueue/utils/BacklinkJobUtils.php',
'BackupDumper' => __DIR__ . '/maintenance/includes/BackupDumper.php',
'BackupReader' => __DIR__ . '/maintenance/importDump.php',
'BadRequestError' => __DIR__ . '/includes/exception/BadRequestError.php',
'BadTitleError' => __DIR__ . '/includes/exception/BadTitleError.php',
'BagOStuff' => __DIR__ . '/includes/libs/objectcache/BagOStuff.php',
'BanConverter' => __DIR__ . '/includes/language/converters/BanConverter.php',
'BaseDump' => __DIR__ . '/includes/export/BaseDump.php',
'BaseSearchResultSet' => __DIR__ . '/includes/search/BaseSearchResultSet.php',
'BaseTemplate' => __DIR__ . '/includes/skins/BaseTemplate.php',
'BashkirUppercaseCollation' => __DIR__ . '/includes/collation/BashkirUppercaseCollation.php',
'BatchRowIterator' => __DIR__ . '/includes/utils/BatchRowIterator.php',
'BatchRowUpdate' => __DIR__ . '/includes/utils/BatchRowUpdate.php',
'BatchRowWriter' => __DIR__ . '/includes/utils/BatchRowWriter.php',
'BcryptPassword' => __DIR__ . '/includes/password/BcryptPassword.php',
'BenchmarkCommentFormatter' => __DIR__ . '/maintenance/benchmarks/benchmarkCommentFormatter.php',
'BenchmarkEval' => __DIR__ . '/maintenance/benchmarks/benchmarkEval.php',
'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php',
'BenchmarkJSMinPlus' => __DIR__ . '/maintenance/benchmarks/benchmarkJSMinPlus.php',
'BenchmarkJsonCodec' => __DIR__ . '/maintenance/benchmarks/benchmarkJsonCodec.php',
'BenchmarkLruHash' => __DIR__ . '/maintenance/benchmarks/benchmarkLruHash.php',
'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php',
'BenchmarkPurge' => __DIR__ . '/maintenance/benchmarks/benchmarkPurge.php',
'BenchmarkSanitizer' => __DIR__ . '/maintenance/benchmarks/benchmarkSanitizer.php',
'BenchmarkSettings' => __DIR__ . '/maintenance/benchmarks/benchmarkSettings.php',
'BenchmarkTidy' => __DIR__ . '/maintenance/benchmarks/benchmarkTidy.php',
'BenchmarkTitleValue' => __DIR__ . '/maintenance/benchmarks/benchmarkTitleValue.php',
'BenchmarkTruncate' => __DIR__ . '/maintenance/benchmarks/benchmarkTruncate.php',
'Benchmarker' => __DIR__ . '/maintenance/includes/Benchmarker.php',
'BitmapHandler' => __DIR__ . '/includes/media/BitmapHandler.php',
'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/BitmapHandler_ClientOnly.php',
'BitmapMetadataHandler' => __DIR__ . '/includes/media/BitmapMetadataHandler.php',
'Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
'Block' => __DIR__ . '/includes/block/DatabaseBlock.php',
'BlockLevelPass' => __DIR__ . '/includes/parser/BlockLevelPass.php',
'BlockListPager' => __DIR__ . '/includes/specials/pagers/BlockListPager.php',
'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
'BlockUsers' => __DIR__ . '/maintenance/blockUsers.php',
'BmpHandler' => __DIR__ . '/includes/media/BmpHandler.php',
'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
'CLIParser' => __DIR__ . '/maintenance/parse.php',
'CacheDependency' => __DIR__ . '/includes/language/dependency/CacheDependency.php',
'CacheTime' => __DIR__ . '/includes/parser/CacheTime.php',
'CachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/CachedBagOStuff.php',
'CachingSiteStore' => __DIR__ . '/includes/site/CachingSiteStore.php',
'CannotCreateActorException' => __DIR__ . '/includes/exception/CannotCreateActorException.php',
'CategoriesRdf' => __DIR__ . '/includes/CategoriesRdf.php',
'Category' => __DIR__ . '/includes/Category.php',
'CategoryChangesAsRdf' => __DIR__ . '/maintenance/categoryChangesAsRdf.php',
'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php',
'CategoryMembershipChangeJob' => __DIR__ . '/includes/jobqueue/jobs/CategoryMembershipChangeJob.php',
'CategoryPage' => __DIR__ . '/includes/page/CategoryPage.php',
'CategoryPager' => __DIR__ . '/includes/specials/pagers/CategoryPager.php',
'CategoryViewer' => __DIR__ . '/includes/CategoryViewer.php',
'CdnCacheUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php',
'CdnPurgeJob' => __DIR__ . '/includes/jobqueue/jobs/CdnPurgeJob.php',
'CentralIdLookup' => __DIR__ . '/includes/user/CentralId/CentralIdLookup.php',
'ChangePassword' => __DIR__ . '/maintenance/changePassword.php',
'ChangeTags' => __DIR__ . '/includes/changetags/ChangeTags.php',
'ChangeTagsList' => __DIR__ . '/includes/changetags/ChangeTagsList.php',
'ChangeTagsLogItem' => __DIR__ . '/includes/changetags/ChangeTagsLogItem.php',
'ChangeTagsLogList' => __DIR__ . '/includes/changetags/ChangeTagsLogList.php',
'ChangeTagsRevisionItem' => __DIR__ . '/includes/changetags/ChangeTagsRevisionItem.php',
'ChangeTagsRevisionList' => __DIR__ . '/includes/changetags/ChangeTagsRevisionList.php',
'ChangesFeed' => __DIR__ . '/includes/changes/ChangesFeed.php',
'ChangesList' => __DIR__ . '/includes/changes/ChangesList.php',
Back-end of new RecentChanges page, refactoring Generate old RC, Related changes (it was already displayed and working on 'Related changes' before this change), and Watchlist/etc. and data for new UI from back-end. This moves everything used for defining the old (unstructured) and new (structured) filters into unified objects, ChangesListFilter and ChangesListFilterGroup (and sub-classes). This includes the query logic (see below) and logic for adding CSS attribution classes. This is a breaking change (for subclasses of ChangesListSpecialpage) due to the signature (and name) change of buildMainQueryConds and doMainQuery. An alternative that I don't think is a breaking change would be to put the filter->DB logic in runMainQueryHook, but then it's doing more than just running a hook. This is because it used to only build $conds here, but it's clear from filterOnUserExperienceLevel filters need more than this. I added all the DB parameters from the hook, but this could be debated. I have an checked and fixed the WMF-deployed extensions affected by this. Other than that, there should be full back-compat (including legacy filters not using the new system). * add hidepatrolled/hideunpatrolled to new UI. * Move userExpLevel from RC to ChangesListSpecialPage. Although for now the structured UI only displays on RC anyway, when it displays on watchlist, it seems we'll want userExpLevel there. Change this to make 'all' exclude unregistered users. * Don't have front-end convert none-selected to 'all' on string_options. * Needs the hideanons/hideliu special redirect to be done before this is merged (T151873) Bug: T152754 Bug: T152797 Change-Id: Iec2d82f6a830403d1c948a280efa58992e0cdee7
2017-02-14 07:55:37 +00:00
'ChangesListBooleanFilter' => __DIR__ . '/includes/changes/ChangesListBooleanFilter.php',
'ChangesListBooleanFilterGroup' => __DIR__ . '/includes/changes/ChangesListBooleanFilterGroup.php',
'ChangesListFilter' => __DIR__ . '/includes/changes/ChangesListFilter.php',
'ChangesListFilterGroup' => __DIR__ . '/includes/changes/ChangesListFilterGroup.php',
'ChangesListSpecialPage' => __DIR__ . '/includes/specialpage/ChangesListSpecialPage.php',
Back-end of new RecentChanges page, refactoring Generate old RC, Related changes (it was already displayed and working on 'Related changes' before this change), and Watchlist/etc. and data for new UI from back-end. This moves everything used for defining the old (unstructured) and new (structured) filters into unified objects, ChangesListFilter and ChangesListFilterGroup (and sub-classes). This includes the query logic (see below) and logic for adding CSS attribution classes. This is a breaking change (for subclasses of ChangesListSpecialpage) due to the signature (and name) change of buildMainQueryConds and doMainQuery. An alternative that I don't think is a breaking change would be to put the filter->DB logic in runMainQueryHook, but then it's doing more than just running a hook. This is because it used to only build $conds here, but it's clear from filterOnUserExperienceLevel filters need more than this. I added all the DB parameters from the hook, but this could be debated. I have an checked and fixed the WMF-deployed extensions affected by this. Other than that, there should be full back-compat (including legacy filters not using the new system). * add hidepatrolled/hideunpatrolled to new UI. * Move userExpLevel from RC to ChangesListSpecialPage. Although for now the structured UI only displays on RC anyway, when it displays on watchlist, it seems we'll want userExpLevel there. Change this to make 'all' exclude unregistered users. * Don't have front-end convert none-selected to 'all' on string_options. * Needs the hideanons/hideliu special redirect to be done before this is merged (T151873) Bug: T152754 Bug: T152797 Change-Id: Iec2d82f6a830403d1c948a280efa58992e0cdee7
2017-02-14 07:55:37 +00:00
'ChangesListStringOptionsFilter' => __DIR__ . '/includes/changes/ChangesListStringOptionsFilter.php',
'ChangesListStringOptionsFilterGroup' => __DIR__ . '/includes/changes/ChangesListStringOptionsFilterGroup.php',
'ChannelFeed' => __DIR__ . '/includes/Feed/ChannelFeed.php',
'CheckBadRedirects' => __DIR__ . '/maintenance/checkBadRedirects.php',
'CheckComposerLockUpToDate' => __DIR__ . '/maintenance/checkComposerLockUpToDate.php',
'CheckDependencies' => __DIR__ . '/maintenance/checkDependencies.php',
'CheckImages' => __DIR__ . '/maintenance/checkImages.php',
'CheckUsernames' => __DIR__ . '/maintenance/checkUsernames.php',
'ClassCollector' => __DIR__ . '/includes/utils/ClassCollector.php',
'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
'CleanupCaps' => __DIR__ . '/maintenance/cleanupCaps.php',
'CleanupEmptyCategories' => __DIR__ . '/maintenance/cleanupEmptyCategories.php',
'CleanupImages' => __DIR__ . '/maintenance/cleanupImages.php',
'CleanupInvalidDbKeys' => __DIR__ . '/maintenance/cleanupInvalidDbKeys.php',
'CleanupPreferences' => __DIR__ . '/maintenance/cleanupPreferences.php',
'CleanupRemovedModules' => __DIR__ . '/maintenance/cleanupRemovedModules.php',
'CleanupSpam' => __DIR__ . '/maintenance/cleanupSpam.php',
'CleanupUploadStash' => __DIR__ . '/maintenance/cleanupUploadStash.php',
Avoid DB rows with usable names but ID = 0 by introducing "interwiki" usernames Importing revisions in MediaWiki has long been weird: if the username on the imported revision exists locally it's automatically attributed to the local user, while if the name does not exist locally we wind up with revision table rows with rev_user = 0 and rev_user_text being a valid name that someone might later create. "Global" blocks too create rows with ipb_by = 0 an ipb_by_text being a valid name. The upcoming actor table change, as things currently stand, would regularize that a bit by automatically attributing those imported revisions to the newly-created user. But that's not necessarily what we actually want to happen. And it would certainly confuse CentralAuth's attempt to detect its own global blocks. Thus, this patch introduces "interwiki" usernames that aren't valid for local use, of the format "iw>Example".[1] Linker will interpret these names and generate an appropriate interwiki link in history pages and the like, as if from wikitext like `[[iw:User:Example]]`. Imports for non-existant local users (and optionally for existing local users too) will credit the edit to such an interwiki name. There is also a new hook, 'ImportHandleUnknownUser', to allow extension such as CentralAuth to create local users as their edits are imported. Block will no longer accept usable-but-nonexistent names for 'byText' or ->setBlocker(). CentralAuth's global blocks will be submitted with an interwiki username (see Ieae5d24f9). Wikis that have imported edits or CentralAuth global blocks should run the new maintenance/cleanupUsersWithNoId.php maintenance script. This isn't done by update.php because (1) it needs an interwiki prefix to use and (2) the updater can't know whether to pass the `--assign` flag. [1]: '>' was used instead of the more usual ':' because WMF wikis have many existing usernames containing colons. Bug: T9240 Bug: T20209 Bug: T111605 Change-Id: I5401941c06102e8faa813910519d55482dff36cb Depends-On: Ieae5d24f9098c1977447c50a8d4e2cab58a24d9f
2017-10-25 19:26:53 +00:00
'CleanupUsersWithNoId' => __DIR__ . '/maintenance/cleanupUsersWithNoId.php',
'CleanupWatchlist' => __DIR__ . '/maintenance/cleanupWatchlist.php',
'ClearInterwikiCache' => __DIR__ . '/maintenance/clearInterwikiCache.php',
'ClearUserWatchlistJob' => __DIR__ . '/includes/jobqueue/jobs/ClearUserWatchlistJob.php',
'ClearWatchlistNotificationsJob' => __DIR__ . '/includes/jobqueue/jobs/ClearWatchlistNotificationsJob.php',
'CliInstaller' => __DIR__ . '/includes/installer/CliInstaller.php',
'CloneDatabase' => __DIR__ . '/includes/db/CloneDatabase.php',
'CodeCleanerGlobalsPass' => __DIR__ . '/maintenance/CodeCleanerGlobalsPass.php',
'CodeContentHandler' => __DIR__ . '/includes/content/CodeContentHandler.php',
'CollapsibleFieldsetLayout' => __DIR__ . '/includes/htmlform/CollapsibleFieldsetLayout.php',
'Collation' => __DIR__ . '/includes/collation/Collation.php',
'CollationCkb' => __DIR__ . '/includes/collation/CollationCkb.php',
'CommentStore' => __DIR__ . '/includes/CommentStore/CommentStore.php',
'CommentStoreComment' => __DIR__ . '/includes/CommentStore/CommentStoreComment.php',
'CompareLanguageConverterOutput' => __DIR__ . '/maintenance/compareLanguageConverterOutput.php',
'CompareParserCache' => __DIR__ . '/maintenance/compareParserCache.php',
'CompareParsers' => __DIR__ . '/maintenance/compareParsers.php',
'ComposerHookHandler' => __DIR__ . '/includes/composer/ComposerHookHandler.php',
'ComposerInstalled' => __DIR__ . '/includes/libs/composer/ComposerInstalled.php',
'ComposerJson' => __DIR__ . '/includes/libs/composer/ComposerJson.php',
'ComposerLock' => __DIR__ . '/includes/libs/composer/ComposerLock.php',
'ComposerPackageModifier' => __DIR__ . '/includes/composer/ComposerPackageModifier.php',
'ComposerPhpunitXmlCoverageEdit' => __DIR__ . '/includes/composer/ComposerPhpunitXmlCoverageEdit.php',
'ComposerVendorHtaccessCreator' => __DIR__ . '/includes/composer/ComposerVendorHtaccessCreator.php',
'ComposerVersionNormalizer' => __DIR__ . '/includes/composer/ComposerVersionNormalizer.php',
'CompressOld' => __DIR__ . '/maintenance/storage/compressOld.php',
'ConcatenatedGzipHistoryBlob' => __DIR__ . '/includes/historyblob/ConcatenatedGzipHistoryBlob.php',
'Config' => __DIR__ . '/includes/config/Config.php',
'ConfigException' => __DIR__ . '/includes/config/ConfigException.php',
'ConfigFactory' => __DIR__ . '/includes/config/ConfigFactory.php',
'ConfiguredReadOnlyMode' => __DIR__ . '/includes/ConfiguredReadOnlyMode.php',
'ConstantDependency' => __DIR__ . '/includes/language/dependency/ConstantDependency.php',
'Content' => __DIR__ . '/includes/content/Content.php',
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelChange' => __DIR__ . '/includes/content/ContentModelChange.php',
'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php',
Initial support for Content Security Policy, disabled by default The primary goal here is a defense in depth measure to stop an attacker who found a bug in the parser allowing them to insert malicious attributes. This wouldn't stop someone who could insert a full script tag (since at current it can't distinguish between malicious and legit user js). It also would not prevent DOM-based or reflected XSS for anons, as the nonce value is guessable for anons when receiving a response cached by varnish. However, the limited protection of just stopping stored XSS where the attacker only has control of attributes, is still a big win in my opinion. (But it wouldn't prevent someone who has that type of xss from abusing things like data-ooui attribute). This will likely break many gadgets. Its expected that any sort of rollout on Wikimedia will be done very slowly, with lots of testing and the report-only option to begin with. This is behind feature flags that are off by default, so merging this patch should not cause any change in default behaviour. This may break some extensions (The most obvious one is charinsert (See fe648d41005), but will probably need some testing in report-only mode to see if anything else breaks) This uses the unsafe-eval option of CSP, in order to support RL's local storage thingy. For better security, we may want to remove some of the sillier uses of eval (e.g. jquery.ui.datepicker.js). For more info, see spec: https://www.w3.org/TR/CSP2/ Additionally see: https://www.mediawiki.org/wiki/Requests_for_comment/Content-Security-Policy Bug: T135963 Change-Id: I80f6f469ba4c0b608385483457df96ccb7429ae5
2016-02-29 04:13:10 +00:00
'ContentSecurityPolicy' => __DIR__ . '/includes/ContentSecurityPolicy.php',
'ContextSource' => __DIR__ . '/includes/context/ContextSource.php',
'ContribsPager' => __DIR__ . '/includes/specials/pagers/ContribsPager.php',
Implement extension registration from an extension.json file Introduces wfLoadExtension()/wfLoadSkin() which should be used in LocalSettings.php rather than require-ing a PHP entry point. Extensions and skins would add "extension.json" or "skin.json" files in their root, which contains all the information typically present in PHP entry point files (classes to autoload, special pages, API modules, etc.) A full schema can be found at docs/extension.schema.json, and a script to validate these to the schema is provided. An additional script is provided to convert typical PHP entry point files into their JSON equivalents. The basic flow of loading an extension goes like: * Get the ExtensionRegistry singleton instance * ExtensionRegistry takes a filename, reads the file or tries to get the parsed JSON from APC if possible. * The JSON is run through a Processor instance, which registers things with the appropriate global settings. * The output of the processor is cached in APC if possible. * The extension/skin is marked as loaded in the ExtensionRegistry and a callback function is executed if one was specified. For ideal performance, a batch loading method is also provided: * The absolute path name to the JSON file is queued in the ExtensionRegistry instance. * When loadFromQueue() is called, it constructs a hash unique to the members of the current queue, and sees if the queue has been cached in APC. If not, it processes each file individually, and combines the result of each Processor into one giant array, which is cached in APC. * The giant array then sets various global settings, defines constants, and calls callbacks. To invalidate the cached processed info, by default the mtime of each JSON file is checked. However that can be slow if you have a large number of extensions, so you can set $wgExtensionInfoMTime to the mtime of one file, and `touch` it whenever you update your extensions. Change-Id: I7074b65d07c5c7d4e3f1fb0755d74a0b07ed4596
2014-10-15 00:31:15 +00:00
'ConvertExtensionToRegistration' => __DIR__ . '/maintenance/convertExtensionToRegistration.php',
'ConverterRule' => __DIR__ . '/includes/language/ConverterRule.php',
'Cookie' => __DIR__ . '/includes/libs/Cookie.php',
'CookieJar' => __DIR__ . '/includes/libs/CookieJar.php',
'CopyFileBackend' => __DIR__ . '/maintenance/copyFileBackend.php',
'CopyFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/CopyFileOp.php',
'CopyJobQueue' => __DIR__ . '/maintenance/copyJobQueue.php',
'CoreMagicVariables' => __DIR__ . '/includes/parser/CoreMagicVariables.php',
'CoreParserFunctions' => __DIR__ . '/includes/parser/CoreParserFunctions.php',
'CoreTagHooks' => __DIR__ . '/includes/parser/CoreTagHooks.php',
'CreateAndPromote' => __DIR__ . '/maintenance/createAndPromote.php',
'CreateBotPassword' => __DIR__ . '/maintenance/createBotPassword.php',
'CreateFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/CreateFileOp.php',
'CreditsAction' => __DIR__ . '/includes/actions/CreditsAction.php',
'CrhConverter' => __DIR__ . '/includes/language/converters/CrhConverter.php',
'CryptHKDF' => __DIR__ . '/includes/libs/CryptHKDF.php',
'CssContent' => __DIR__ . '/includes/content/CssContent.php',
'CssContentHandler' => __DIR__ . '/includes/content/CssContentHandler.php',
'CsvStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'CustomUppercaseCollation' => __DIR__ . '/includes/collation/CustomUppercaseCollation.php',
'DBAccessError' => __DIR__ . '/includes/libs/rdbms/exception/DBAccessError.php',
'DBAccessObjectUtils' => __DIR__ . '/includes/dao/DBAccessObjectUtils.php',
'DBConnRef' => __DIR__ . '/includes/libs/rdbms/database/DBConnRef.php',
'DBConnectionError' => __DIR__ . '/includes/libs/rdbms/exception/DBConnectionError.php',
'DBError' => __DIR__ . '/includes/libs/rdbms/exception/DBError.php',
'DBExpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBExpectedError.php',
'DBQueryError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryError.php',
'DBReadOnlyError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyError.php',
'DBReplicationWaitError' => __DIR__ . '/includes/libs/rdbms/exception/DBReplicationWaitError.php',
'DBSiteStore' => __DIR__ . '/includes/site/DBSiteStore.php',
'DBTransactionError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionError.php',
'DBTransactionSizeError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionSizeError.php',
'DBUnexpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBUnexpectedError.php',
'DataUpdate' => __DIR__ . '/includes/deferred/DataUpdate.php',
'Database' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
'DatabaseBase' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
'DatabaseInstaller' => __DIR__ . '/includes/installer/DatabaseInstaller.php',
'DatabaseLag' => __DIR__ . '/maintenance/lag.php',
'DatabaseLogEntry' => __DIR__ . '/includes/logging/DatabaseLogEntry.php',
'DatabaseMysqlBase' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqlBase.php',
'DatabaseMysqli' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqli.php',
'DatabasePostgres' => __DIR__ . '/includes/libs/rdbms/database/DatabasePostgres.php',
'DatabaseSqlite' => __DIR__ . '/includes/libs/rdbms/database/DatabaseSqlite.php',
'DatabaseUpdater' => __DIR__ . '/includes/installer/DatabaseUpdater.php',
'DateFormats' => __DIR__ . '/maintenance/language/date-formats.php',
'DateFormatter' => __DIR__ . '/includes/parser/DateFormatter.php',
'DateFormatterFactory' => __DIR__ . '/includes/parser/DateFormatterFactory.php',
'DeferrableCallback' => __DIR__ . '/includes/deferred/DeferrableCallback.php',
'DeferrableUpdate' => __DIR__ . '/includes/deferred/DeferrableUpdate.php',
'DeferredUpdates' => __DIR__ . '/includes/deferred/DeferredUpdates.php',
deferred: make DeferredUpdates::doUpdates() recursion more uniform Follow-up ba6490aa1eb. That patch worked around $executeContext iteration errors due to the lack of recursion support in doUpdates()/handleUpdateQueue(). Errors were triggered by MediaWiki::schedulePostSendJobs() enqueueing deferred updates that invoke JobRunner::run(), which, in turn, invoke doUpdates() for each job via JobRunner:: doExecuteJob(). The doUpdates() method was changed to operate on the sub-queue for the in-progress DeferrableUpdate. Further improve the recursion logic: * Use classes for the scope stack and scope queues. * Put *all* updates added during a DeferrableUpdate::doUpdate() call into the subqueue, regardless of "defer until" stage or whether it implements MergeableUpdate. Now, doUpdate() can run *everything* it enqueued instead of a non-obvious subset. Note that the TransactionRoundDefiningUpdate that invokes JobRunner was already a POSTSEND update before ba6490aa1eb; the only effect of this change is that MergeableUpdate instances from jobs will once again run in doExecuteJob(). * Make recursive DeferredUpdates::doUpdate() calls error out immediately unless the DeferrableUpdate responsible is a TransactionRoundAwareUpdate with the TRX_ROUND_ABSENT flag. This covers the schedulePostSendJobs() scenario and only prohibits insane call patterns. Failing early avoids the risk of handleUpdateQueue() dropping all the updates due to the same DBTransactionError error in DeferredUpdates::attemptUpdate(). * Avoid recursion loop in tryOpportunisticExecute() when JobQueueDB is in use and a large number of tasks are pending. This happened due to methods like onTransactionPreCommitOrIdle() being used within JobQueueDB. Mark DeferredUpdates::doUpdates()/tryOpportunisticExecute() as @internal and create a Maintenance::shutdown() method to avoid a direct call in the doMaintenance.php file. Bug: T249069 Bug: T268840 Change-Id: Ib369f0e74243a48ababdb9cd83b155c9a0f5e741
2020-05-06 14:37:00 +00:00
'DeferredUpdatesScope' => __DIR__ . '/includes/deferred/DeferredUpdatesScope.php',
'DeferredUpdatesScopeStack' => __DIR__ . '/includes/deferred/DeferredUpdatesScopeStack.php',
'Deflate' => __DIR__ . '/includes/libs/Deflate.php',
'DeleteAction' => __DIR__ . '/includes/actions/DeleteAction.php',
'DeleteArchivedFiles' => __DIR__ . '/maintenance/deleteArchivedFiles.php',
'DeleteArchivedRevisions' => __DIR__ . '/maintenance/deleteArchivedRevisions.php',
'DeleteAutoPatrolLogs' => __DIR__ . '/maintenance/deleteAutoPatrolLogs.php',
'DeleteBatch' => __DIR__ . '/maintenance/deleteBatch.php',
'DeleteDefaultMessages' => __DIR__ . '/maintenance/deleteDefaultMessages.php',
'DeleteEqualMessages' => __DIR__ . '/maintenance/deleteEqualMessages.php',
'DeleteFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/DeleteFileOp.php',
'DeleteLinksJob' => __DIR__ . '/includes/jobqueue/jobs/DeleteLinksJob.php',
'DeleteLocalPasswords' => __DIR__ . '/maintenance/includes/DeleteLocalPasswords.php',
'DeleteLogFormatter' => __DIR__ . '/includes/logging/DeleteLogFormatter.php',
'DeleteOldRevisions' => __DIR__ . '/maintenance/deleteOldRevisions.php',
'DeleteOrphanedRevisions' => __DIR__ . '/maintenance/deleteOrphanedRevisions.php',
'DeletePageJob' => __DIR__ . '/includes/jobqueue/jobs/DeletePageJob.php',
'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php',
'DeleteTag' => __DIR__ . '/maintenance/deleteTag.php',
'DeleteUserEmail' => __DIR__ . '/maintenance/deleteUserEmail.php',
'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php',
'DependencyWrapper' => __DIR__ . '/includes/language/dependency/DependencyWrapper.php',
'DeprecatedGlobal' => __DIR__ . '/includes/StubObject/DeprecatedGlobal.php',
'DeprecatedInterfaceFinder' => __DIR__ . '/maintenance/findDeprecated.php',
'DeprecationHelper' => __DIR__ . '/includes/debug/DeprecationHelper.php',
'DerivativeContext' => __DIR__ . '/includes/context/DerivativeContext.php',
'DerivativeRequest' => __DIR__ . '/includes/Request/DerivativeRequest.php',
'DerivativeResourceLoaderContext' => __DIR__ . '/includes/ResourceLoader/DerivativeContext.php',
'DescribeFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/DescribeFileOp.php',
'Diff' => __DIR__ . '/includes/diff/Diff.php',
'DiffEngine' => __DIR__ . '/includes/diff/DiffEngine.php',
'DiffFormatter' => __DIR__ . '/includes/diff/DiffFormatter.php',
'DiffHistoryBlob' => __DIR__ . '/includes/historyblob/DiffHistoryBlob.php',
'DiffOp' => __DIR__ . '/includes/diff/DiffOp.php',
'DiffOpAdd' => __DIR__ . '/includes/diff/DiffOpAdd.php',
'DiffOpChange' => __DIR__ . '/includes/diff/DiffOpChange.php',
'DiffOpCopy' => __DIR__ . '/includes/diff/DiffOpCopy.php',
'DiffOpDelete' => __DIR__ . '/includes/diff/DiffOpDelete.php',
'DifferenceEngine' => __DIR__ . '/includes/diff/DifferenceEngine.php',
[MCR] Render multi-slot diffs Move logic for rendering a diff between two content objects out of DifferenceEngine, into a new SlotDiffRenderer class. Make DifferenceEngine use multiple SlotDiffRenderers, one per slot. This separates the class tree for changing high-level diff properties such as the header or the revision selection method (same as before: subclass DifferenceEngine and override ContentHandler::getDiffEngineClass or implement GetDifferenceEngine) and the one for changing the actual diff rendering for a given content type (subclass SlotDiffRenderer and override ContentHandler::getSlotDiffRenderer or implement GetSlotDiffRenderer). To keep B/C, when SlotDiffRenderer is not overridden for a given content type but DifferenceEngine is, that DifferenceEngine will be used instead. The weak point of the scheme is overriding the DifferenceEngine methods passing control to the SlotDiffRenderers (the ones calling getDifferenceEngines), without calling the parent. These are: showDiffStyle, getDiffBody, getDiffBodyCacheKeyParams. Extensions doing that will probably break in unpredictable ways (most likely, only showing the main slot diff). Nothing in gerrit does it, at least. A new GetSlotDiffRenderer hook is added to modify rendering for content models not owned by the extension, much like how GetDifferenceEngine works. Also deprecates public access to mNewRev/mOldRev and creates public getters instead. DifferenceEngine never supported external changes to those properties, this just acknowledges it. Bug: T194731 Change-Id: I2f8a9dbebd2290b7feafb20e2bb2a2693e18ba11 Depends-On: I04e885a33bfce5bccc807b9bcfe1eaa577a9fd47 Depends-On: I203d8895bf436b7fee53fe4718dede8a3b1768bc
2018-07-11 09:24:07 +00:00
'DifferenceEngineSlotDiffRenderer' => __DIR__ . '/includes/diff/DifferenceEngineSlotDiffRenderer.php',
'Digit2Html' => __DIR__ . '/maintenance/language/digit2html.php',
'DisabledSpecialPage' => __DIR__ . '/includes/specialpage/DisabledSpecialPage.php',
'DjVuHandler' => __DIR__ . '/includes/media/DjVuHandler.php',
'DjVuImage' => __DIR__ . '/includes/media/DjVuImage.php',
'DnsSrvDiscoverer' => __DIR__ . '/includes/libs/DnsSrvDiscoverer.php',
'DoubleRedirectJob' => __DIR__ . '/includes/jobqueue/jobs/DoubleRedirectJob.php',
'DummyLinker' => __DIR__ . '/includes/linker/DummyLinker.php',
'DummySearchIndexFieldDefinition' => __DIR__ . '/includes/search/DummySearchIndexFieldDefinition.php',
'Dump7ZipOutput' => __DIR__ . '/includes/export/Dump7ZipOutput.php',
'DumpBZip2Output' => __DIR__ . '/includes/export/DumpBZip2Output.php',
'DumpBackup' => __DIR__ . '/maintenance/dumpBackup.php',
'DumpCategoriesAsRdf' => __DIR__ . '/maintenance/dumpCategoriesAsRdf.php',
'DumpDBZip2Output' => __DIR__ . '/includes/export/DumpDBZip2Output.php',
'DumpFileOutput' => __DIR__ . '/includes/export/DumpFileOutput.php',
'DumpFilter' => __DIR__ . '/includes/export/DumpFilter.php',
'DumpGZipOutput' => __DIR__ . '/includes/export/DumpGZipOutput.php',
'DumpIterator' => __DIR__ . '/maintenance/dumpIterator.php',
'DumpLBZip2Output' => __DIR__ . '/includes/export/DumpLBZip2Output.php',
'DumpLatestFilter' => __DIR__ . '/includes/export/DumpLatestFilter.php',
'DumpLinks' => __DIR__ . '/maintenance/dumpLinks.php',
'DumpMessages' => __DIR__ . '/maintenance/language/dumpMessages.php',
'DumpMultiWriter' => __DIR__ . '/includes/export/DumpMultiWriter.php',
'DumpNamespaceFilter' => __DIR__ . '/includes/export/DumpNamespaceFilter.php',
'DumpNotalkFilter' => __DIR__ . '/includes/export/DumpNotalkFilter.php',
'DumpOutput' => __DIR__ . '/includes/export/DumpOutput.php',
'DumpPipeOutput' => __DIR__ . '/includes/export/DumpPipeOutput.php',
'DumpRenderer' => __DIR__ . '/maintenance/renderDump.php',
'DumpRev' => __DIR__ . '/maintenance/storage/dumpRev.php',
'DumpStringOutput' => __DIR__ . '/includes/export/DumpStringOutput.php',
'DumpUploads' => __DIR__ . '/maintenance/dumpUploads.php',
'DuplicateJob' => __DIR__ . '/includes/jobqueue/jobs/DuplicateJob.php',
'EasyDeflate' => __DIR__ . '/includes/libs/Deflate.php',
'EditAction' => __DIR__ . '/includes/actions/EditAction.php',
'EditCLI' => __DIR__ . '/maintenance/edit.php',
'EditPage' => __DIR__ . '/includes/EditPage.php',
'EditWatchlistCheckboxSeriesField' => __DIR__ . '/includes/specials/formfields/EditWatchlistCheckboxSeriesField.php',
'EditWatchlistNormalHTMLForm' => __DIR__ . '/includes/specials/forms/EditWatchlistNormalHTMLForm.php',
'EmailNotification' => __DIR__ . '/includes/mail/EmailNotification.php',
'EmaillingJob' => __DIR__ . '/includes/jobqueue/jobs/EmaillingJob.php',
'EmptyBagOStuff' => __DIR__ . '/includes/libs/objectcache/EmptyBagOStuff.php',
'EmptyUserGroup' => __DIR__ . '/maintenance/emptyUserGroup.php',
'EnConverter' => __DIR__ . '/includes/language/converters/EnConverter.php',
'EncryptedPassword' => __DIR__ . '/includes/password/EncryptedPassword.php',
'EnhancedChangesList' => __DIR__ . '/includes/changes/EnhancedChangesList.php',
'EnotifNotifyJob' => __DIR__ . '/includes/jobqueue/jobs/EnotifNotifyJob.php',
'EnqueueableDataUpdate' => __DIR__ . '/includes/deferred/EnqueueableDataUpdate.php',
'EraseArchivedFile' => __DIR__ . '/maintenance/eraseArchivedFile.php',
'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php',
'EtcdConfig' => __DIR__ . '/includes/config/EtcdConfig.php',
'EtcdConfigParseError' => __DIR__ . '/includes/config/EtcdConfigParseError.php',
'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
'EventRelayerGroup' => __DIR__ . '/includes/EventRelayerGroup.php',
'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerNull.php',
'ExecutableFinder' => __DIR__ . '/includes/utils/ExecutableFinder.php',
'Exif' => __DIR__ . '/includes/media/Exif.php',
'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmapHandler.php',
'ExplodeIterator' => __DIR__ . '/includes/libs/ExplodeIterator.php',
'ExportProgressFilter' => __DIR__ . '/includes/export/ExportProgressFilter.php',
'ExportSites' => __DIR__ . '/maintenance/exportSites.php',
'ExtensionDependencyError' => __DIR__ . '/includes/registration/ExtensionDependencyError.php',
'ExtensionJsonValidationError' => __DIR__ . '/includes/registration/ExtensionJsonValidationError.php',
'ExtensionJsonValidator' => __DIR__ . '/includes/registration/ExtensionJsonValidator.php',
Implement extension registration from an extension.json file Introduces wfLoadExtension()/wfLoadSkin() which should be used in LocalSettings.php rather than require-ing a PHP entry point. Extensions and skins would add "extension.json" or "skin.json" files in their root, which contains all the information typically present in PHP entry point files (classes to autoload, special pages, API modules, etc.) A full schema can be found at docs/extension.schema.json, and a script to validate these to the schema is provided. An additional script is provided to convert typical PHP entry point files into their JSON equivalents. The basic flow of loading an extension goes like: * Get the ExtensionRegistry singleton instance * ExtensionRegistry takes a filename, reads the file or tries to get the parsed JSON from APC if possible. * The JSON is run through a Processor instance, which registers things with the appropriate global settings. * The output of the processor is cached in APC if possible. * The extension/skin is marked as loaded in the ExtensionRegistry and a callback function is executed if one was specified. For ideal performance, a batch loading method is also provided: * The absolute path name to the JSON file is queued in the ExtensionRegistry instance. * When loadFromQueue() is called, it constructs a hash unique to the members of the current queue, and sees if the queue has been cached in APC. If not, it processes each file individually, and combines the result of each Processor into one giant array, which is cached in APC. * The giant array then sets various global settings, defines constants, and calls callbacks. To invalidate the cached processed info, by default the mtime of each JSON file is checked. However that can be slow if you have a large number of extensions, so you can set $wgExtensionInfoMTime to the mtime of one file, and `touch` it whenever you update your extensions. Change-Id: I7074b65d07c5c7d4e3f1fb0755d74a0b07ed4596
2014-10-15 00:31:15 +00:00
'ExtensionProcessor' => __DIR__ . '/includes/registration/ExtensionProcessor.php',
'ExtensionRegistry' => __DIR__ . '/includes/registration/ExtensionRegistry.php',
'ExternalStore' => __DIR__ . '/includes/externalstore/ExternalStore.php',
'ExternalStoreAccess' => __DIR__ . '/includes/externalstore/ExternalStoreAccess.php',
'ExternalStoreDB' => __DIR__ . '/includes/externalstore/ExternalStoreDB.php',
'ExternalStoreException' => __DIR__ . '/includes/externalstore/ExternalStoreException.php',
'ExternalStoreFactory' => __DIR__ . '/includes/externalstore/ExternalStoreFactory.php',
'ExternalStoreHttp' => __DIR__ . '/includes/externalstore/ExternalStoreHttp.php',
'ExternalStoreMedium' => __DIR__ . '/includes/externalstore/ExternalStoreMedium.php',
'ExternalStoreMemory' => __DIR__ . '/includes/externalstore/ExternalStoreMemory.php',
'ExternalStoreMwstore' => __DIR__ . '/includes/externalstore/ExternalStoreMwstore.php',
'ExternalUserNames' => __DIR__ . '/includes/user/ExternalUserNames.php',
'FSFile' => __DIR__ . '/includes/libs/filebackend/fsfile/FSFile.php',
'FSFileBackend' => __DIR__ . '/includes/libs/filebackend/FSFileBackend.php',
'FSFileBackendDirList' => __DIR__ . '/includes/libs/filebackend/fileiteration/FSFileBackendDirList.php',
'FSFileBackendFileList' => __DIR__ . '/includes/libs/filebackend/fileiteration/FSFileBackendFileList.php',
'FSFileBackendList' => __DIR__ . '/includes/libs/filebackend/fileiteration/FSFileBackendList.php',
'FSFileOpHandle' => __DIR__ . '/includes/libs/filebackend/fileophandle/FSFileOpHandle.php',
'FSLockManager' => __DIR__ . '/includes/libs/lockmanager/FSLockManager.php',
'FakeMaintenance' => __DIR__ . '/maintenance/includes/FakeMaintenance.php',
'FakeResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php',
'FallbackContent' => __DIR__ . '/includes/content/FallbackContent.php',
'FallbackContentHandler' => __DIR__ . '/includes/content/FallbackContentHandler.php',
'FatalError' => __DIR__ . '/includes/exception/FatalError.php',
'FauxRequest' => __DIR__ . '/includes/Request/FauxRequest.php',
'FauxRequestUpload' => __DIR__ . '/includes/Request/FauxRequestUpload.php',
'FauxResponse' => __DIR__ . '/includes/FauxResponse.php',
'FauxSearchResult' => __DIR__ . '/includes/search/FauxSearchResult.php',
'FauxSearchResultSet' => __DIR__ . '/includes/search/FauxSearchResultSet.php',
'FeedItem' => __DIR__ . '/includes/Feed/FeedItem.php',
'FeedUtils' => __DIR__ . '/includes/Feed/FeedUtils.php',
'FetchText' => __DIR__ . '/maintenance/fetchText.php',
'Field' => __DIR__ . '/includes/libs/rdbms/field/Field.php',
'File' => __DIR__ . '/includes/filerepo/file/File.php',
'FileAwareNodeVisitor' => __DIR__ . '/maintenance/findDeprecated.php',
'FileBackend' => __DIR__ . '/includes/libs/filebackend/FileBackend.php',
'FileBackendDBRepoWrapper' => __DIR__ . '/includes/filerepo/FileBackendDBRepoWrapper.php',
'FileBackendError' => __DIR__ . '/includes/libs/filebackend/exception/FileBackendError.php',
'FileBackendGroup' => __DIR__ . '/includes/filebackend/FileBackendGroup.php',
'FileBackendMultiWrite' => __DIR__ . '/includes/libs/filebackend/FileBackendMultiWrite.php',
'FileBackendStore' => __DIR__ . '/includes/libs/filebackend/FileBackendStore.php',
'FileBackendStoreOpHandle' => __DIR__ . '/includes/libs/filebackend/fileophandle/FileBackendStoreOpHandle.php',
'FileBackendStoreShardDirIterator' => __DIR__ . '/includes/libs/filebackend/fileiteration/FileBackendStoreShardDirIterator.php',
'FileBackendStoreShardFileIterator' => __DIR__ . '/includes/libs/filebackend/fileiteration/FileBackendStoreShardFileIterator.php',
'FileBackendStoreShardListIterator' => __DIR__ . '/includes/libs/filebackend/fileiteration/FileBackendStoreShardListIterator.php',
'FileCacheBase' => __DIR__ . '/includes/cache/FileCacheBase.php',
'FileContentHandler' => __DIR__ . '/includes/content/FileContentHandler.php',
'FileContentsHasher' => __DIR__ . '/includes/utils/FileContentsHasher.php',
'FileDeleteForm' => __DIR__ . '/includes/FileDeleteForm.php',
'FileDependency' => __DIR__ . '/includes/language/dependency/FileDependency.php',
'FileOp' => __DIR__ . '/includes/libs/filebackend/fileop/FileOp.php',
'FileOpBatch' => __DIR__ . '/includes/libs/filebackend/FileOpBatch.php',
'FileOpPerfTest' => __DIR__ . '/maintenance/fileOpPerfTest.php',
'FileRepo' => __DIR__ . '/includes/filerepo/FileRepo.php',
'FindBadBlobs' => __DIR__ . '/maintenance/findBadBlobs.php',
'FindClasses' => __DIR__ . '/maintenance/findClasses.php',
'FindDeprecated' => __DIR__ . '/maintenance/findDeprecated.php',
'FindMissingActors' => __DIR__ . '/maintenance/findMissingActors.php',
'FindMissingFiles' => __DIR__ . '/maintenance/findMissingFiles.php',
'FindOrphanedFiles' => __DIR__ . '/maintenance/findOrphanedFiles.php',
'FixDefaultJsonContentPages' => __DIR__ . '/maintenance/fixDefaultJsonContentPages.php',
'FixDoubleRedirects' => __DIR__ . '/maintenance/fixDoubleRedirects.php',
'FixExtLinksProtocolRelative' => __DIR__ . '/maintenance/fixExtLinksProtocolRelative.php',
'FixMergeHistoryCorruption' => __DIR__ . '/maintenance/fixMergeHistoryCorruption.php',
'FixTimestamps' => __DIR__ . '/maintenance/fixTimestamps.php',
'FixUserRegistration' => __DIR__ . '/maintenance/fixUserRegistration.php',
'ForeignAPIFile' => __DIR__ . '/includes/filerepo/file/ForeignAPIFile.php',
'ForeignAPIRepo' => __DIR__ . '/includes/filerepo/ForeignAPIRepo.php',
'ForeignDBFile' => __DIR__ . '/includes/filerepo/file/ForeignDBFile.php',
'ForeignDBRepo' => __DIR__ . '/includes/filerepo/ForeignDBRepo.php',
'ForeignDBViaLBRepo' => __DIR__ . '/includes/filerepo/ForeignDBViaLBRepo.php',
'ForeignResourceManager' => __DIR__ . '/includes/ResourceLoader/ForeignResourceManager.php',
'ForeignTitle' => __DIR__ . '/includes/title/ForeignTitle.php',
'ForeignTitleFactory' => __DIR__ . '/includes/title/ForeignTitleFactory.php',
'ForkController' => __DIR__ . '/includes/Maintenance/ForkController.php',
'FormAction' => __DIR__ . '/includes/actions/FormAction.php',
'FormOptions' => __DIR__ . '/includes/FormOptions.php',
'FormSpecialPage' => __DIR__ . '/includes/specialpage/FormSpecialPage.php',
'FormatInstallDoc' => __DIR__ . '/maintenance/formatInstallDoc.php',
'FormatJson' => __DIR__ . '/includes/json/FormatJson.php',
'FormatMetadata' => __DIR__ . '/includes/media/FormatMetadata.php',
Refactor RCFeed configuration (backwards compatible) Previously: * Engines had to be registered in $wgRCEngines. * The RCFeedEngine classes took no constructor arguments and were expected to send whatever text is previously formatted without any information about it. This generic design was flexible in allowing one to use any formatter with any engine with minimal configuration and no need for additional classes. * Each feed configured their destination by setting a 'uri' option that encodes the name of the engine in PHP as the uri scheme. Other uri components had to be used for any other parameters to the engine (host, port, path). While fairly limited, it was sufficient for the default engines in core. Changes: * Allow feed classes to be directly associated with a feed in $wgRCFeeds via a new 'class' option - without the indirection of 'uri' and $wgRCEngines. All options are passed to the given class constructor. This matches the design used elsewhere in MediaWiki. (ObjectCache, FileRepo, FileBackend, JobQueue, LBFactory, etc.) This means we no longer enforce a 1:1 mapping of internet protocols to a specific feed engine, and it allows settings to be passed without being encoded as a URI neccecarily. Main use case for this refactor is EventBus (see I7edc4d57fa), Interestingly, this matches the (then incorrect) documentation written for $wgRCFeeds in 2961884b43 (which mentions an 'engine' property that would do the same thing). * Move the default 'omit' filters and unrestricted 'formatter' handling to a new FormattedRCFeed class, which remains the default. * Deprecate RecentChange::getEngine() in favour of RCFeed::factory(). * Document wgRCEngines as "@since 1.22". Follows 2961884b43, ffc71cb6af. Change-Id: I8be497c623c5d928762e3d3406a388f4d91add9a
2017-01-06 01:27:43 +00:00
'FormattedRCFeed' => __DIR__ . '/includes/rcfeed/FormattedRCFeed.php',
'FormlessAction' => __DIR__ . '/includes/actions/FormlessAction.php',
'GIFHandler' => __DIR__ . '/includes/media/GIFHandler.php',
'GIFMetadataExtractor' => __DIR__ . '/includes/media/GIFMetadataExtractor.php',
'GanConverter' => __DIR__ . '/includes/language/converters/GanConverter.php',
'GenderCache' => __DIR__ . '/includes/cache/GenderCache.php',
'GenerateCollationData' => __DIR__ . '/maintenance/language/generateCollationData.php',
'GenerateConfigSchema' => __DIR__ . '/maintenance/generateConfigSchema.php',
'GenerateJsonI18n' => __DIR__ . '/maintenance/generateJsonI18n.php',
'GenerateNormalizerDataAr' => __DIR__ . '/maintenance/language/generateNormalizerDataAr.php',
'GenerateNormalizerDataMl' => __DIR__ . '/maintenance/language/generateNormalizerDataMl.php',
'GeneratePhpCharToUpperMappings' => __DIR__ . '/maintenance/mediawiki.Title/generatePhpCharToUpperMappings.php',
'GenerateSchemaChangeSql' => __DIR__ . '/maintenance/generateSchemaChangeSql.php',
'GenerateSchemaSql' => __DIR__ . '/maintenance/generateSchemaSql.php',
'GenerateSitemap' => __DIR__ . '/maintenance/generateSitemap.php',
'GenerateUcfirstOverrides' => __DIR__ . '/maintenance/language/generateUcfirstOverrides.php',
'GenerateUpperCharTable' => __DIR__ . '/maintenance/language/generateUpperCharTable.php',
'GenericArrayObject' => __DIR__ . '/includes/libs/GenericArrayObject.php',
'GenericParameterJob' => __DIR__ . '/includes/jobqueue/GenericParameterJob.php',
'GetConfiguration' => __DIR__ . '/maintenance/getConfiguration.php',
'GetLagTimes' => __DIR__ . '/maintenance/getLagTimes.php',
'GetReplicaServer' => __DIR__ . '/maintenance/getReplicaServer.php',
'GetTextMaint' => __DIR__ . '/maintenance/getText.php',
'GitInfo' => __DIR__ . '/includes/GitInfo.php',
'GlobalDependency' => __DIR__ . '/includes/language/dependency/GlobalDependency.php',
'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php',
'GrepPages' => __DIR__ . '/maintenance/grep.php',
'GuzzleHttpRequest' => __DIR__ . '/includes/http/GuzzleHttpRequest.php',
'HTMLApiField' => __DIR__ . '/includes/htmlform/fields/HTMLApiField.php',
'HTMLAutoCompleteSelectField' => __DIR__ . '/includes/htmlform/fields/HTMLAutoCompleteSelectField.php',
'HTMLButtonField' => __DIR__ . '/includes/htmlform/fields/HTMLButtonField.php',
'HTMLCacheUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/HTMLCacheUpdateJob.php',
'HTMLCheckField' => __DIR__ . '/includes/htmlform/fields/HTMLCheckField.php',
'HTMLCheckMatrix' => __DIR__ . '/includes/htmlform/fields/HTMLCheckMatrix.php',
'HTMLComboboxField' => __DIR__ . '/includes/htmlform/fields/HTMLComboboxField.php',
'HTMLDateTimeField' => __DIR__ . '/includes/htmlform/fields/HTMLDateTimeField.php',
'HTMLEditTools' => __DIR__ . '/includes/htmlform/fields/HTMLEditTools.php',
'HTMLExpiryField' => __DIR__ . '/includes/htmlform/fields/HTMLExpiryField.php',
'HTMLFileCache' => __DIR__ . '/includes/cache/HTMLFileCache.php',
'HTMLFileField' => __DIR__ . '/includes/htmlform/fields/HTMLFileField.php',
'HTMLFloatField' => __DIR__ . '/includes/htmlform/fields/HTMLFloatField.php',
'HTMLForm' => __DIR__ . '/includes/htmlform/HTMLForm.php',
'HTMLFormActionFieldLayout' => __DIR__ . '/includes/htmlform/HTMLFormActionFieldLayout.php',
'HTMLFormElement' => __DIR__ . '/includes/htmlform/HTMLFormElement.php',
'HTMLFormField' => __DIR__ . '/includes/htmlform/HTMLFormField.php',
'HTMLFormFieldCloner' => __DIR__ . '/includes/htmlform/fields/HTMLFormFieldCloner.php',
'HTMLFormFieldLayout' => __DIR__ . '/includes/htmlform/HTMLFormFieldLayout.php',
'HTMLFormFieldRequiredOptionsException' => __DIR__ . '/includes/htmlform/HTMLFormFieldRequiredOptionsException.php',
'HTMLFormFieldWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLFormFieldWithButton.php',
'HTMLHiddenField' => __DIR__ . '/includes/htmlform/fields/HTMLHiddenField.php',
'HTMLInfoField' => __DIR__ . '/includes/htmlform/fields/HTMLInfoField.php',
'HTMLIntField' => __DIR__ . '/includes/htmlform/fields/HTMLIntField.php',
'HTMLMultiSelectField' => __DIR__ . '/includes/htmlform/fields/HTMLMultiSelectField.php',
'HTMLNamespacesMultiselectField' => __DIR__ . '/includes/htmlform/fields/HTMLNamespacesMultiselectField.php',
'HTMLNestedFilterable' => __DIR__ . '/includes/htmlform/HTMLNestedFilterable.php',
'HTMLRadioField' => __DIR__ . '/includes/htmlform/fields/HTMLRadioField.php',
'HTMLRestrictionsField' => __DIR__ . '/includes/htmlform/fields/HTMLRestrictionsField.php',
'HTMLSelectAndOtherField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectAndOtherField.php',
'HTMLSelectField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectField.php',
'HTMLSelectLanguageField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectLanguageField.php',
'HTMLSelectLimitField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectLimitField.php',
'HTMLSelectNamespace' => __DIR__ . '/includes/htmlform/fields/HTMLSelectNamespace.php',
'HTMLSelectNamespaceWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLSelectNamespaceWithButton.php',
'HTMLSelectOrOtherField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectOrOtherField.php',
'HTMLSizeFilterField' => __DIR__ . '/includes/htmlform/fields/HTMLSizeFilterField.php',
'HTMLSubmitField' => __DIR__ . '/includes/htmlform/fields/HTMLSubmitField.php',
'HTMLTagFilter' => __DIR__ . '/includes/htmlform/fields/HTMLTagFilter.php',
'HTMLTagMultiselectField' => __DIR__ . '/includes/htmlform/fields/HTMLTagMultiselectField.php',
'HTMLTextAreaField' => __DIR__ . '/includes/htmlform/fields/HTMLTextAreaField.php',
'HTMLTextField' => __DIR__ . '/includes/htmlform/fields/HTMLTextField.php',
'HTMLTextFieldWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLTextFieldWithButton.php',
'HTMLTimezoneField' => __DIR__ . '/includes/htmlform/fields/HTMLTimezoneField.php',
'HTMLTitleTextField' => __DIR__ . '/includes/htmlform/fields/HTMLTitleTextField.php',
'HTMLTitlesMultiselectField' => __DIR__ . '/includes/htmlform/fields/HTMLTitlesMultiselectField.php',
'HTMLUserTextField' => __DIR__ . '/includes/htmlform/fields/HTMLUserTextField.php',
'HTMLUsersMultiselectField' => __DIR__ . '/includes/htmlform/fields/HTMLUsersMultiselectField.php',
'HTTPFileStreamer' => __DIR__ . '/includes/libs/filebackend/HTTPFileStreamer.php',
'HashBagOStuff' => __DIR__ . '/includes/libs/objectcache/HashBagOStuff.php',
'HashConfig' => __DIR__ . '/includes/config/HashConfig.php',
'HashRing' => __DIR__ . '/includes/libs/HashRing.php',
'HashSiteStore' => __DIR__ . '/includes/site/HashSiteStore.php',
'HistoryAction' => __DIR__ . '/includes/actions/HistoryAction.php',
'HistoryBlob' => __DIR__ . '/includes/historyblob/HistoryBlob.php',
'HistoryBlobCurStub' => __DIR__ . '/includes/historyblob/HistoryBlobCurStub.php',
'HistoryBlobStub' => __DIR__ . '/includes/historyblob/HistoryBlobStub.php',
'HistoryBlobUtils' => __DIR__ . '/includes/historyblob/HistoryBlobUtils.php',
'HistoryPager' => __DIR__ . '/includes/actions/pagers/HistoryPager.php',
'Hooks' => __DIR__ . '/includes/Hooks.php',
'Html' => __DIR__ . '/includes/Html.php',
Add LinkRenderer (rewrite of Linker::link()) This is a rewrite of Linker::link() to a non-static, LinkTarget-based interface. Users of plain Linker::link() with no options can use the LinkRenderer instance provided by MediaWikiServices. Others that have specific options should create and configure their own instance, which can be used to create as many links as necessary. The main entrypoints for making links are: * ->makeLink( $target, $text, $attribs, $query ); * ->makeKnownLink( $target, $text, $attribs, $query ); * ->makeBrokenLink( $target, $text, $attribs, $query ); The order of the parameters are the same as Linker::link(), except $options are now part of the LinkRenderer instance, and known/broken status requires calling the function explicitly. Additionally, instead of passing in raw $html for the link text, the $text parameter will automatically be escaped unless it is specially marked as safe HTML using the MediaWiki\Linker\HtmlArmor class. The LinkBegin and LinkEnd hooks are now deprecated, but still function for backwards-compatability. Clients should migrate to the nearly- equivalent LinkRendererBegin and LinkRendererEnd hooks. The main differences between the hooks are: * Passing HtmlPageLinkRenderer object instead of deprecated DummyLinker * Using LinkTarget instead of Title * Begin hook can no longer change known/broken status of link. Use the TitleIsAlwaysKnown hook for that. * $options are no longer passed, they can be read (but shouldn't be modified!) from the LinkRenderer object. Bug: T469 Change-Id: I057cc86ae6404a080aa3c8e0e956ecbb10a897d5
2016-04-21 20:13:21 +00:00
'HtmlArmor' => __DIR__ . '/includes/libs/HtmlArmor.php',
'HtmlCacheUpdater' => __DIR__ . '/includes/cache/HtmlCacheUpdater.php',
'HtmlFileCacheUpdate' => __DIR__ . '/includes/deferred/HtmlFileCacheUpdate.php',
'Http' => __DIR__ . '/includes/http/Http.php',
'HttpError' => __DIR__ . '/includes/exception/HttpError.php',
'HttpStatus' => __DIR__ . '/includes/libs/HttpStatus.php',
'IApiMessage' => __DIR__ . '/includes/api/IApiMessage.php',
'IBufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/IBufferingStatsdDataFactory.php',
'IContextSource' => __DIR__ . '/includes/context/IContextSource.php',
'IDBAccessObject' => __DIR__ . '/includes/dao/IDBAccessObject.php',
'IDatabase' => __DIR__ . '/includes/libs/rdbms/database/IDatabase.php',
'IEContentAnalyzer' => __DIR__ . '/includes/libs/mime/IEContentAnalyzer.php',
'IExpiringStore' => __DIR__ . '/includes/libs/objectcache/utils/IExpiringStore.php',
'IForeignRepoWithMWApi' => __DIR__ . '/includes/filerepo/IForeignRepoWithMWApi.php',
'IJobSpecification' => __DIR__ . '/includes/jobqueue/IJobSpecification.php',
'ILanguageConverter' => __DIR__ . '/includes/language/ILanguageConverter.php',
'ILocalizedException' => __DIR__ . '/includes/exception/ILocalizedException.php',
'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php',
'IPTC' => __DIR__ . '/includes/media/IPTC.php',
'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
'ISearchResultSet' => __DIR__ . '/includes/search/ISearchResultSet.php',
'IStoreKeyEncoder' => __DIR__ . '/includes/libs/objectcache/IStoreKeyEncoder.php',
'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php',
'IdentityCollation' => __DIR__ . '/includes/collation/IdentityCollation.php',
'ImageBuilder' => __DIR__ . '/maintenance/rebuildImages.php',
'ImageGalleryBase' => __DIR__ . '/includes/gallery/ImageGalleryBase.php',
'ImageGalleryClassNotFoundException' => __DIR__ . '/includes/gallery/ImageGalleryClassNotFoundException.php',
'ImageHandler' => __DIR__ . '/includes/media/ImageHandler.php',
'ImageHistoryList' => __DIR__ . '/includes/page/ImageHistoryList.php',
'ImageHistoryPseudoPager' => __DIR__ . '/includes/page/ImageHistoryPseudoPager.php',
'ImageListPager' => __DIR__ . '/includes/specials/pagers/ImageListPager.php',
'ImagePage' => __DIR__ . '/includes/page/ImagePage.php',
'ImageQueryPage' => __DIR__ . '/includes/specialpage/ImageQueryPage.php',
'ImportImages' => __DIR__ . '/maintenance/importImages.php',
'ImportLogFormatter' => __DIR__ . '/includes/logging/ImportLogFormatter.php',
'ImportReporter' => __DIR__ . '/includes/specials/helpers/ImportReporter.php',
'ImportSiteScripts' => __DIR__ . '/maintenance/importSiteScripts.php',
'ImportSites' => __DIR__ . '/maintenance/importSites.php',
'ImportSource' => __DIR__ . '/includes/import/ImportSource.php',
'ImportStreamSource' => __DIR__ . '/includes/import/ImportStreamSource.php',
'ImportStringSource' => __DIR__ . '/includes/import/ImportStringSource.php',
'ImportTextFiles' => __DIR__ . '/maintenance/importTextFiles.php',
'ImportTitleFactory' => __DIR__ . '/includes/title/ImportTitleFactory.php',
'ImportableOldRevision' => __DIR__ . '/includes/import/ImportableOldRevision.php',
'ImportableOldRevisionImporter' => __DIR__ . '/includes/import/ImportableOldRevisionImporter.php',
'ImportableUploadRevision' => __DIR__ . '/includes/import/ImportableUploadRevision.php',
'ImportableUploadRevisionImporter' => __DIR__ . '/includes/import/ImportableUploadRevisionImporter.php',
'IncludableSpecialPage' => __DIR__ . '/includes/specialpage/IncludableSpecialPage.php',
'IndexPager' => __DIR__ . '/includes/pager/IndexPager.php',
'InfoAction' => __DIR__ . '/includes/actions/InfoAction.php',
'InitEditCount' => __DIR__ . '/maintenance/initEditCount.php',
'InitSiteStats' => __DIR__ . '/maintenance/initSiteStats.php',
'InitUserPreference' => __DIR__ . '/maintenance/initUserPreference.php',
'InstallDocFormatter' => __DIR__ . '/includes/installer/InstallDocFormatter.php',
'Installer' => __DIR__ . '/includes/installer/Installer.php',
'InstallerOverrides' => __DIR__ . '/includes/installer/InstallerOverrides.php',
'InstallerSessionProvider' => __DIR__ . '/includes/installer/InstallerSessionProvider.php',
'Interwiki' => __DIR__ . '/includes/interwiki/Interwiki.php',
'InvalidPassword' => __DIR__ . '/includes/password/InvalidPassword.php',
'InvalidateBotPasswords' => __DIR__ . '/maintenance/invalidateBotPasswords.php',
'InvalidateUserSessions' => __DIR__ . '/maintenance/invalidateUserSessions.php',
'IteratorDecorator' => __DIR__ . '/includes/libs/iterators/IteratorDecorator.php',
'IuConverter' => __DIR__ . '/includes/language/converters/IuConverter.php',
'JSCompilerContext' => __DIR__ . '/includes/libs/jsminplus.php',
'JSMinPlus' => __DIR__ . '/includes/libs/jsminplus.php',
'JSNode' => __DIR__ . '/includes/libs/jsminplus.php',
'JSONRCFeedFormatter' => __DIR__ . '/includes/rcfeed/JSONRCFeedFormatter.php',
'JSParseHelper' => __DIR__ . '/maintenance/jsparse.php',
'JSParser' => __DIR__ . '/includes/libs/jsminplus.php',
'JSToken' => __DIR__ . '/includes/libs/jsminplus.php',
'JSTokenizer' => __DIR__ . '/includes/libs/jsminplus.php',
'JavaScriptContent' => __DIR__ . '/includes/content/JavaScriptContent.php',
'JavaScriptContentHandler' => __DIR__ . '/includes/content/JavaScriptContentHandler.php',
'Job' => __DIR__ . '/includes/jobqueue/Job.php',
'JobQueue' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueConnectionError' => __DIR__ . '/includes/jobqueue/exception/JobQueueConnectionError.php',
'JobQueueDB' => __DIR__ . '/includes/jobqueue/JobQueueDB.php',
'JobQueueEnqueueUpdate' => __DIR__ . '/includes/deferred/JobQueueEnqueueUpdate.php',
'JobQueueError' => __DIR__ . '/includes/jobqueue/exception/JobQueueError.php',
'JobQueueFederated' => __DIR__ . '/includes/jobqueue/JobQueueFederated.php',
'JobQueueGroup' => __DIR__ . '/includes/jobqueue/JobQueueGroup.php',
'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php',
'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/exception/JobQueueReadOnlyError.php',
'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php',
'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php',
'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
'Jpeg2000Handler' => __DIR__ . '/includes/media/Jpeg2000Handler.php',
'JpegHandler' => __DIR__ . '/includes/media/JpegHandler.php',
'JpegMetadataExtractor' => __DIR__ . '/includes/media/JpegMetadataExtractor.php',
'JsonContent' => __DIR__ . '/includes/content/JsonContent.php',
'JsonContentHandler' => __DIR__ . '/includes/content/JsonContentHandler.php',
'KkConverter' => __DIR__ . '/includes/language/converters/KkConverter.php',
'KuConverter' => __DIR__ . '/includes/language/converters/KuConverter.php',
'LCStore' => __DIR__ . '/includes/language/LCStore.php',
'LCStoreCDB' => __DIR__ . '/includes/language/LCStoreCDB.php',
'LCStoreDB' => __DIR__ . '/includes/language/LCStoreDB.php',
'LCStoreNull' => __DIR__ . '/includes/language/LCStoreNull.php',
'LCStoreStaticArray' => __DIR__ . '/includes/language/LCStoreStaticArray.php',
'LangMemUsage' => __DIR__ . '/maintenance/language/langmemusage.php',
'Language' => __DIR__ . '/includes/language/Language.php',
'LanguageAr' => __DIR__ . '/includes/languages/LanguageAr.php',
'LanguageAz' => __DIR__ . '/includes/languages/LanguageAz.php',
'LanguageBe_tarask' => __DIR__ . '/includes/languages/LanguageBe_tarask.php',
'LanguageBs' => __DIR__ . '/includes/languages/LanguageBs.php',
'LanguageCode' => __DIR__ . '/includes/language/LanguageCode.php',
'LanguageConverter' => __DIR__ . '/includes/language/LanguageConverter.php',
'LanguageConverterIcu' => __DIR__ . '/includes/language/LanguageConverterIcu.php',
'LanguageConverterSpecific' => __DIR__ . '/includes/language/LanguageConverterSpecific.php',
'LanguageCu' => __DIR__ . '/includes/languages/LanguageCu.php',
'LanguageDsb' => __DIR__ . '/includes/languages/LanguageDsb.php',
'LanguageEn' => __DIR__ . '/includes/languages/LanguageEn.php',
'LanguageFi' => __DIR__ . '/includes/languages/LanguageFi.php',
'LanguageGa' => __DIR__ . '/includes/languages/LanguageGa.php',
'LanguageGan' => __DIR__ . '/includes/languages/LanguageGan.php',
'LanguageHsb' => __DIR__ . '/includes/languages/LanguageHsb.php',
'LanguageHu' => __DIR__ . '/includes/languages/LanguageHu.php',
'LanguageHy' => __DIR__ . '/includes/languages/LanguageHy.php',
'LanguageJa' => __DIR__ . '/includes/languages/LanguageJa.php',
'LanguageKaa' => __DIR__ . '/includes/languages/LanguageKaa.php',
'LanguageKk' => __DIR__ . '/includes/languages/LanguageKk.php',
'LanguageKk_cyrl' => __DIR__ . '/includes/languages/LanguageKk_cyrl.php',
'LanguageKm' => __DIR__ . '/includes/languages/LanguageKm.php',
'LanguageKsh' => __DIR__ . '/includes/languages/LanguageKsh.php',
'LanguageLa' => __DIR__ . '/includes/languages/LanguageLa.php',
'LanguageMl' => __DIR__ . '/includes/languages/LanguageMl.php',
'LanguageMy' => __DIR__ . '/includes/languages/LanguageMy.php',
'LanguageOs' => __DIR__ . '/includes/languages/LanguageOs.php',
'LanguageQqx' => __DIR__ . '/includes/languages/LanguageQqx.php',
'LanguageSl' => __DIR__ . '/includes/languages/LanguageSl.php',
'LanguageTr' => __DIR__ . '/includes/languages/LanguageTr.php',
'LanguageTyv' => __DIR__ . '/includes/languages/LanguageTyv.php',
'LanguageWa' => __DIR__ . '/includes/languages/LanguageWa.php',
'LanguageYue' => __DIR__ . '/includes/languages/LanguageYue.php',
'LanguageZh' => __DIR__ . '/includes/languages/LanguageZh.php',
'LanguageZh_hans' => __DIR__ . '/includes/languages/LanguageZh_hans.php',
'LayeredParameterizedPassword' => __DIR__ . '/includes/password/LayeredParameterizedPassword.php',
'LegacyLogFormatter' => __DIR__ . '/includes/logging/LegacyLogFormatter.php',
'License' => __DIR__ . '/includes/specials/helpers/License.php',
'Licenses' => __DIR__ . '/includes/specials/formfields/Licenses.php',
'LinkBatch' => __DIR__ . '/includes/cache/LinkBatch.php',
'LinkCache' => __DIR__ . '/includes/cache/LinkCache.php',
'LinkFilter' => __DIR__ . '/includes/LinkFilter.php',
'LinkHolderArray' => __DIR__ . '/includes/parser/LinkHolderArray.php',
'Linker' => __DIR__ . '/includes/linker/Linker.php',
'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksUpdate/LinksDeletionUpdate.php',
'LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate/LinksUpdate.php',
'ListToggle' => __DIR__ . '/includes/ListToggle.php',
'ListVariants' => __DIR__ . '/maintenance/language/listVariants.php',
'LoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancer.php',
'LoadBalancerSingle' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php',
'LocalFile' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileDeleteBatch' => __DIR__ . '/includes/filerepo/file/LocalFileDeleteBatch.php',
'LocalFileLockError' => __DIR__ . '/includes/filerepo/file/LocalFileLockError.php',
'LocalFileMoveBatch' => __DIR__ . '/includes/filerepo/file/LocalFileMoveBatch.php',
'LocalFileRestoreBatch' => __DIR__ . '/includes/filerepo/file/LocalFileRestoreBatch.php',
'LocalIdLookup' => __DIR__ . '/includes/user/CentralId/LocalIdLookup.php',
'LocalRepo' => __DIR__ . '/includes/filerepo/LocalRepo.php',
'LocalSettingsGenerator' => __DIR__ . '/includes/installer/LocalSettingsGenerator.php',
'LocalisationCache' => __DIR__ . '/includes/language/LocalisationCache.php',
'LocalisationCacheBulkLoad' => __DIR__ . '/includes/language/LocalisationCacheBulkLoad.php',
'LocalizedException' => __DIR__ . '/includes/exception/LocalizedException.php',
'LockManager' => __DIR__ . '/includes/libs/lockmanager/LockManager.php',
'LockManagerGroup' => __DIR__ . '/includes/filebackend/lockmanager/LockManagerGroup.php',
'LogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'LogEntryBase' => __DIR__ . '/includes/logging/LogEntryBase.php',
'LogEventsList' => __DIR__ . '/includes/logging/LogEventsList.php',
'LogFormatter' => __DIR__ . '/includes/logging/LogFormatter.php',
'LogPage' => __DIR__ . '/includes/logging/LogPage.php',
'LogPager' => __DIR__ . '/includes/logging/LogPager.php',
'LoggedOutEditToken' => __DIR__ . '/includes/user/LoggedOutEditToken.php',
'LoggedUpdateMaintenance' => __DIR__ . '/maintenance/includes/LoggedUpdateMaintenance.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'LoginHelper' => __DIR__ . '/includes/specials/helpers/LoginHelper.php',
'LoginSignupSpecialPage' => __DIR__ . '/includes/specialpage/LoginSignupSpecialPage.php',
'MSCompoundFileReader' => __DIR__ . '/includes/libs/mime/MSCompoundFileReader.php',
'MWCallableUpdate' => __DIR__ . '/includes/deferred/MWCallableUpdate.php',
'MWCallbackStream' => __DIR__ . '/includes/http/MWCallbackStream.php',
'MWContentSerializationException' => __DIR__ . '/includes/exception/MWContentSerializationException.php',
'MWCryptHKDF' => __DIR__ . '/includes/utils/MWCryptHKDF.php',
'MWCryptHash' => __DIR__ . '/includes/libs/MWCryptHash.php',
'MWCryptRand' => __DIR__ . '/includes/utils/MWCryptRand.php',
'MWDebug' => __DIR__ . '/includes/debug/MWDebug.php',
'MWDocGen' => __DIR__ . '/maintenance/mwdocgen.php',
'MWDoxygenFilter' => __DIR__ . '/maintenance/includes/MWDoxygenFilter.php',
'MWException' => __DIR__ . '/includes/exception/MWException.php',
'MWExceptionHandler' => __DIR__ . '/includes/exception/MWExceptionHandler.php',
'MWExceptionRenderer' => __DIR__ . '/includes/exception/MWExceptionRenderer.php',
'MWFileProps' => __DIR__ . '/includes/utils/MWFileProps.php',
'MWHttpRequest' => __DIR__ . '/includes/http/MWHttpRequest.php',
'MWLBFactory' => __DIR__ . '/includes/db/MWLBFactory.php',
'MWOldPassword' => __DIR__ . '/includes/password/MWOldPassword.php',
'MWRestrictions' => __DIR__ . '/includes/utils/MWRestrictions.php',
'MWSaltedPassword' => __DIR__ . '/includes/password/MWSaltedPassword.php',
'MWTidy' => __DIR__ . '/includes/parser/MWTidy.php',
'MWTimestamp' => __DIR__ . '/includes/MWTimestamp.php',
'MWUnknownContentModelException' => __DIR__ . '/includes/exception/MWUnknownContentModelException.php',
'MachineReadableRCFeedFormatter' => __DIR__ . '/includes/rcfeed/MachineReadableRCFeedFormatter.php',
'MagicWord' => __DIR__ . '/includes/parser/MagicWord.php',
'MagicWordArray' => __DIR__ . '/includes/parser/MagicWordArray.php',
'MagicWordFactory' => __DIR__ . '/includes/parser/MagicWordFactory.php',
'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php',
'MainConfigDependency' => __DIR__ . '/includes/language/dependency/MainConfigDependency.php',
'MaintainableDBConnRef' => __DIR__ . '/includes/libs/rdbms/database/MaintainableDBConnRef.php',
'Maintenance' => __DIR__ . '/maintenance/includes/Maintenance.php',
'MakeTestEdits' => __DIR__ . '/maintenance/makeTestEdits.php',
'MalformedTitleException' => __DIR__ . '/includes/title/MalformedTitleException.php',
'ManageForeignResources' => __DIR__ . '/maintenance/manageForeignResources.php',
'ManageJobs' => __DIR__ . '/maintenance/manageJobs.php',
'ManualLogEntry' => __DIR__ . '/includes/logging/ManualLogEntry.php',
'MapCacheLRU' => __DIR__ . '/includes/libs/MapCacheLRU.php',
'MappedIterator' => __DIR__ . '/includes/libs/MappedIterator.php',
'MarkpatrolledAction' => __DIR__ . '/includes/actions/MarkpatrolledAction.php',
'McTest' => __DIR__ . '/maintenance/mctest.php',
'Mcc' => __DIR__ . '/maintenance/mcc.php',
'McrRestoreAction' => __DIR__ . '/includes/actions/McrRestoreAction.php',
'McrUndoAction' => __DIR__ . '/includes/actions/McrUndoAction.php',
'MediaFileTrait' => __DIR__ . '/includes/filerepo/file/MediaFileTrait.php',
'MediaHandler' => __DIR__ . '/includes/media/MediaHandler.php',
'MediaHandlerFactory' => __DIR__ . '/includes/media/MediaHandlerFactory.php',
'MediaHandlerState' => __DIR__ . '/includes/media/MediaHandlerState.php',
'MediaTransformError' => __DIR__ . '/includes/media/MediaTransformError.php',
'MediaTransformInvalidParametersException' => __DIR__ . '/includes/media/MediaTransformInvalidParametersException.php',
'MediaTransformOutput' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'MediaWiki' => __DIR__ . '/includes/MediaWiki.php',
'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
'MediaWiki\\Actions\\ActionFactory' => __DIR__ . '/includes/actions/ActionFactory.php',
'MediaWiki\\Actions\\FileDeleteAction' => __DIR__ . '/includes/actions/FileDeleteAction.php',
'MediaWiki\\Actions\\Hook\\GetActionNameHook' => __DIR__ . '/includes/actions/Hook/GetActionNameHook.php',
'MediaWiki\\Api\\ApiHookRunner' => __DIR__ . '/includes/api/ApiHookRunner.php',
'MediaWiki\\Api\\Hook\\APIAfterExecuteHook' => __DIR__ . '/includes/api/Hook/APIAfterExecuteHook.php',
'MediaWiki\\Api\\Hook\\APIGetAllowedParamsHook' => __DIR__ . '/includes/api/Hook/APIGetAllowedParamsHook.php',
'MediaWiki\\Api\\Hook\\APIGetDescriptionMessagesHook' => __DIR__ . '/includes/api/Hook/APIGetDescriptionMessagesHook.php',
'MediaWiki\\Api\\Hook\\APIGetParamDescriptionMessagesHook' => __DIR__ . '/includes/api/Hook/APIGetParamDescriptionMessagesHook.php',
'MediaWiki\\Api\\Hook\\APIHelpModifyOutputHook' => __DIR__ . '/includes/api/Hook/APIHelpModifyOutputHook.php',
'MediaWiki\\Api\\Hook\\APIQueryAfterExecuteHook' => __DIR__ . '/includes/api/Hook/APIQueryAfterExecuteHook.php',
'MediaWiki\\Api\\Hook\\APIQueryGeneratorAfterExecuteHook' => __DIR__ . '/includes/api/Hook/APIQueryGeneratorAfterExecuteHook.php',
'MediaWiki\\Api\\Hook\\APIQuerySiteInfoGeneralInfoHook' => __DIR__ . '/includes/api/Hook/APIQuerySiteInfoGeneralInfoHook.php',
'MediaWiki\\Api\\Hook\\APIQuerySiteInfoStatisticsInfoHook' => __DIR__ . '/includes/api/Hook/APIQuerySiteInfoStatisticsInfoHook.php',
'MediaWiki\\Api\\Hook\\ApiCheckCanExecuteHook' => __DIR__ . '/includes/api/Hook/ApiCheckCanExecuteHook.php',
'MediaWiki\\Api\\Hook\\ApiDeprecationHelpHook' => __DIR__ . '/includes/api/Hook/ApiDeprecationHelpHook.php',
'MediaWiki\\Api\\Hook\\ApiFeedContributions__feedItemHook' => __DIR__ . '/includes/api/Hook/ApiFeedContributions__feedItemHook.php',
'MediaWiki\\Api\\Hook\\ApiFormatHighlightHook' => __DIR__ . '/includes/api/Hook/ApiFormatHighlightHook.php',
'MediaWiki\\Api\\Hook\\ApiMain__moduleManagerHook' => __DIR__ . '/includes/api/Hook/ApiMain__moduleManagerHook.php',
'MediaWiki\\Api\\Hook\\ApiMain__onExceptionHook' => __DIR__ . '/includes/api/Hook/ApiMain__onExceptionHook.php',
'MediaWiki\\Api\\Hook\\ApiMakeParserOptionsHook' => __DIR__ . '/includes/api/Hook/ApiMakeParserOptionsHook.php',
'MediaWiki\\Api\\Hook\\ApiMaxLagInfoHook' => __DIR__ . '/includes/api/Hook/ApiMaxLagInfoHook.php',
'MediaWiki\\Api\\Hook\\ApiOpenSearchSuggestHook' => __DIR__ . '/includes/api/Hook/ApiOpenSearchSuggestHook.php',
'MediaWiki\\Api\\Hook\\ApiOptionsHook' => __DIR__ . '/includes/api/Hook/ApiOptionsHook.php',
'MediaWiki\\Api\\Hook\\ApiParseMakeOutputPageHook' => __DIR__ . '/includes/api/Hook/ApiParseMakeOutputPageHook.php',
'MediaWiki\\Api\\Hook\\ApiQueryBaseAfterQueryHook' => __DIR__ . '/includes/api/Hook/ApiQueryBaseAfterQueryHook.php',
'MediaWiki\\Api\\Hook\\ApiQueryBaseBeforeQueryHook' => __DIR__ . '/includes/api/Hook/ApiQueryBaseBeforeQueryHook.php',
'MediaWiki\\Api\\Hook\\ApiQueryBaseProcessRowHook' => __DIR__ . '/includes/api/Hook/ApiQueryBaseProcessRowHook.php',
'MediaWiki\\Api\\Hook\\ApiQueryTokensRegisterTypesHook' => __DIR__ . '/includes/api/Hook/ApiQueryTokensRegisterTypesHook.php',
'MediaWiki\\Api\\Hook\\ApiQueryWatchlistExtractOutputDataHook' => __DIR__ . '/includes/api/Hook/ApiQueryWatchlistExtractOutputDataHook.php',
'MediaWiki\\Api\\Hook\\ApiQueryWatchlistPrepareWatchedItemQueryServiceOptionsHook' => __DIR__ . '/includes/api/Hook/ApiQueryWatchlistPrepareWatchedItemQueryServiceOptionsHook.php',
'MediaWiki\\Api\\Hook\\ApiQuery__moduleManagerHook' => __DIR__ . '/includes/api/Hook/ApiQuery__moduleManagerHook.php',
'MediaWiki\\Api\\Hook\\ApiRsdServiceApisHook' => __DIR__ . '/includes/api/Hook/ApiRsdServiceApisHook.php',
'MediaWiki\\Api\\Hook\\ApiValidatePasswordHook' => __DIR__ . '/includes/api/Hook/ApiValidatePasswordHook.php',
'MediaWiki\\Api\\Hook\\RequestHasSameOriginSecurityHook' => __DIR__ . '/includes/api/Hook/RequestHasSameOriginSecurityHook.php',
'MediaWiki\\Api\\Validator\\ApiParamValidator' => __DIR__ . '/includes/api/Validator/ApiParamValidator.php',
'MediaWiki\\Api\\Validator\\ApiParamValidatorCallbacks' => __DIR__ . '/includes/api/Validator/ApiParamValidatorCallbacks.php',
'MediaWiki\\Api\\Validator\\SubmoduleDef' => __DIR__ . '/includes/api/Validator/SubmoduleDef.php',
'MediaWiki\\Auth\\AbstractAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPreAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPreAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AuthManager' => __DIR__ . '/includes/auth/AuthManager.php',
'MediaWiki\\Auth\\AuthenticationProvider' => __DIR__ . '/includes/auth/AuthenticationProvider.php',
'MediaWiki\\Auth\\AuthenticationRequest' => __DIR__ . '/includes/auth/AuthenticationRequest.php',
'MediaWiki\\Auth\\AuthenticationResponse' => __DIR__ . '/includes/auth/AuthenticationResponse.php',
'MediaWiki\\Auth\\ButtonAuthenticationRequest' => __DIR__ . '/includes/auth/ButtonAuthenticationRequest.php',
'MediaWiki\\Auth\\CheckBlocksSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\ConfirmLinkAuthenticationRequest' => __DIR__ . '/includes/auth/ConfirmLinkAuthenticationRequest.php',
'MediaWiki\\Auth\\ConfirmLinkSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/ConfirmLinkSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\CreateFromLoginAuthenticationRequest' => __DIR__ . '/includes/auth/CreateFromLoginAuthenticationRequest.php',
'MediaWiki\\Auth\\CreatedAccountAuthenticationRequest' => __DIR__ . '/includes/auth/CreatedAccountAuthenticationRequest.php',
'MediaWiki\\Auth\\CreationReasonAuthenticationRequest' => __DIR__ . '/includes/auth/CreationReasonAuthenticationRequest.php',
'MediaWiki\\Auth\\EmailNotificationSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/EmailNotificationSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\Hook\\AuthManagerLoginAuthenticateAuditHook' => __DIR__ . '/includes/auth/Hook/AuthManagerLoginAuthenticateAuditHook.php',
'MediaWiki\\Auth\\Hook\\ExemptFromAccountCreationThrottleHook' => __DIR__ . '/includes/auth/Hook/ExemptFromAccountCreationThrottleHook.php',
'MediaWiki\\Auth\\Hook\\LocalUserCreatedHook' => __DIR__ . '/includes/auth/Hook/LocalUserCreatedHook.php',
'MediaWiki\\Auth\\Hook\\ResetPasswordExpirationHook' => __DIR__ . '/includes/auth/Hook/ResetPasswordExpirationHook.php',
'MediaWiki\\Auth\\Hook\\SecuritySensitiveOperationStatusHook' => __DIR__ . '/includes/auth/Hook/SecuritySensitiveOperationStatusHook.php',
'MediaWiki\\Auth\\Hook\\UserLoggedInHook' => __DIR__ . '/includes/auth/Hook/UserLoggedInHook.php',
'MediaWiki\\Auth\\LocalPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/LocalPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\PasswordAuthenticationRequest' => __DIR__ . '/includes/auth/PasswordAuthenticationRequest.php',
'MediaWiki\\Auth\\PasswordDomainAuthenticationRequest' => __DIR__ . '/includes/auth/PasswordDomainAuthenticationRequest.php',
'MediaWiki\\Auth\\PreAuthenticationProvider' => __DIR__ . '/includes/auth/PreAuthenticationProvider.php',
'MediaWiki\\Auth\\PrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/PrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\RememberMeAuthenticationRequest' => __DIR__ . '/includes/auth/RememberMeAuthenticationRequest.php',
'MediaWiki\\Auth\\ResetPasswordSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/ResetPasswordSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\SecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/SecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\TemporaryPasswordAuthenticationRequest' => __DIR__ . '/includes/auth/TemporaryPasswordAuthenticationRequest.php',
'MediaWiki\\Auth\\TemporaryPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/TemporaryPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\ThrottlePreAuthenticationProvider' => __DIR__ . '/includes/auth/ThrottlePreAuthenticationProvider.php',
'MediaWiki\\Auth\\Throttler' => __DIR__ . '/includes/auth/Throttler.php',
'MediaWiki\\Auth\\UserDataAuthenticationRequest' => __DIR__ . '/includes/auth/UserDataAuthenticationRequest.php',
'MediaWiki\\Auth\\UsernameAuthenticationRequest' => __DIR__ . '/includes/auth/UsernameAuthenticationRequest.php',
'MediaWiki\\BadFileLookup' => __DIR__ . '/includes/BadFileLookup.php',
'MediaWiki\\Block\\AbstractBlock' => __DIR__ . '/includes/block/AbstractBlock.php',
'MediaWiki\\Block\\Block' => __DIR__ . '/includes/block/Block.php',
'MediaWiki\\Block\\BlockActionInfo' => __DIR__ . '/includes/block/BlockActionInfo.php',
'MediaWiki\\Block\\BlockErrorFormatter' => __DIR__ . '/includes/block/BlockErrorFormatter.php',
'MediaWiki\\Block\\BlockManager' => __DIR__ . '/includes/block/BlockManager.php',
'MediaWiki\\Block\\BlockPermissionChecker' => __DIR__ . '/includes/block/BlockPermissionChecker.php',
'MediaWiki\\Block\\BlockPermissionCheckerFactory' => __DIR__ . '/includes/block/BlockPermissionCheckerFactory.php',
'MediaWiki\\Block\\BlockRestrictionStore' => __DIR__ . '/includes/block/BlockRestrictionStore.php',
'MediaWiki\\Block\\BlockRestrictionStoreFactory' => __DIR__ . '/includes/block/BlockRestrictionStoreFactory.php',
'MediaWiki\\Block\\BlockUser' => __DIR__ . '/includes/block/BlockUser.php',
'MediaWiki\\Block\\BlockUserFactory' => __DIR__ . '/includes/block/BlockUserFactory.php',
'MediaWiki\\Block\\BlockUtils' => __DIR__ . '/includes/block/BlockUtils.php',
'MediaWiki\\Block\\CompositeBlock' => __DIR__ . '/includes/block/CompositeBlock.php',
'MediaWiki\\Block\\DatabaseBlock' => __DIR__ . '/includes/block/DatabaseBlock.php',
'MediaWiki\\Block\\DatabaseBlockStore' => __DIR__ . '/includes/block/DatabaseBlockStore.php',
'MediaWiki\\Block\\Hook\\AbortAutoblockHook' => __DIR__ . '/includes/block/Hook/AbortAutoblockHook.php',
'MediaWiki\\Block\\Hook\\GetAllBlockActionsHook' => __DIR__ . '/includes/block/Hook/GetAllBlockActionsHook.php',
'MediaWiki\\Block\\Hook\\GetUserBlockHook' => __DIR__ . '/includes/block/Hook/GetUserBlockHook.php',
'MediaWiki\\Block\\Hook\\PerformRetroactiveAutoblockHook' => __DIR__ . '/includes/block/Hook/PerformRetroactiveAutoblockHook.php',
'MediaWiki\\Block\\Restriction\\AbstractRestriction' => __DIR__ . '/includes/block/Restriction/AbstractRestriction.php',
'MediaWiki\\Block\\Restriction\\ActionRestriction' => __DIR__ . '/includes/block/Restriction/ActionRestriction.php',
'MediaWiki\\Block\\Restriction\\NamespaceRestriction' => __DIR__ . '/includes/block/Restriction/NamespaceRestriction.php',
'MediaWiki\\Block\\Restriction\\PageRestriction' => __DIR__ . '/includes/block/Restriction/PageRestriction.php',
'MediaWiki\\Block\\Restriction\\Restriction' => __DIR__ . '/includes/block/Restriction/Restriction.php',
'MediaWiki\\Block\\SystemBlock' => __DIR__ . '/includes/block/SystemBlock.php',
'MediaWiki\\Block\\UnblockUser' => __DIR__ . '/includes/block/UnblockUser.php',
'MediaWiki\\Block\\UnblockUserFactory' => __DIR__ . '/includes/block/UnblockUserFactory.php',
'MediaWiki\\Block\\UserBlockCommandFactory' => __DIR__ . '/includes/block/UserBlockCommandFactory.php',
'MediaWiki\\Cache\\BacklinkCacheFactory' => __DIR__ . '/includes/cache/BacklinkCacheFactory.php',
'MediaWiki\\Cache\\CacheKeyHelper' => __DIR__ . '/includes/cache/CacheKeyHelper.php',
'MediaWiki\\Cache\\Hook\\BacklinkCacheGetConditionsHook' => __DIR__ . '/includes/cache/Hook/BacklinkCacheGetConditionsHook.php',
'MediaWiki\\Cache\\Hook\\BacklinkCacheGetPrefixHook' => __DIR__ . '/includes/cache/Hook/BacklinkCacheGetPrefixHook.php',
'MediaWiki\\Cache\\Hook\\HTMLFileCache__useFileCacheHook' => __DIR__ . '/includes/cache/Hook/HTMLFileCache__useFileCacheHook.php',
'MediaWiki\\Cache\\Hook\\HtmlCacheUpdaterAppendUrlsHook' => __DIR__ . '/includes/cache/Hook/HtmlCacheUpdaterAppendUrlsHook.php',
'MediaWiki\\Cache\\Hook\\HtmlCacheUpdaterVaryUrlsHook' => __DIR__ . '/includes/cache/Hook/HtmlCacheUpdaterVaryUrlsHook.php',
'MediaWiki\\Cache\\Hook\\MessageCacheReplaceHook' => __DIR__ . '/includes/language/Hook/MessageCacheReplaceHook.php',
'MediaWiki\\Cache\\Hook\\MessageCache__getHook' => __DIR__ . '/includes/language/Hook/MessageCache__getHook.php',
'MediaWiki\\Cache\\Hook\\MessagesPreLoadHook' => __DIR__ . '/includes/language/Hook/MessagesPreLoadHook.php',
'MediaWiki\\Cache\\LinkBatchFactory' => __DIR__ . '/includes/cache/LinkBatchFactory.php',
'MediaWiki\\ChangeTags\\Hook\\ChangeTagAfterDeleteHook' => __DIR__ . '/includes/changetags/Hook/ChangeTagAfterDeleteHook.php',
'MediaWiki\\ChangeTags\\Hook\\ChangeTagCanCreateHook' => __DIR__ . '/includes/changetags/Hook/ChangeTagCanCreateHook.php',
'MediaWiki\\ChangeTags\\Hook\\ChangeTagCanDeleteHook' => __DIR__ . '/includes/changetags/Hook/ChangeTagCanDeleteHook.php',
'MediaWiki\\ChangeTags\\Hook\\ChangeTagsAfterUpdateTagsHook' => __DIR__ . '/includes/changetags/Hook/ChangeTagsAfterUpdateTagsHook.php',
'MediaWiki\\ChangeTags\\Hook\\ChangeTagsAllowedAddHook' => __DIR__ . '/includes/changetags/Hook/ChangeTagsAllowedAddHook.php',
'MediaWiki\\ChangeTags\\Hook\\ChangeTagsListActiveHook' => __DIR__ . '/includes/changetags/Hook/ChangeTagsListActiveHook.php',
'MediaWiki\\ChangeTags\\Hook\\ListDefinedTagsHook' => __DIR__ . '/includes/changetags/Hook/ListDefinedTagsHook.php',
'MediaWiki\\ChangeTags\\Taggable' => __DIR__ . '/includes/changetags/Taggable.php',
'MediaWiki\\Collation\\CollationFactory' => __DIR__ . '/includes/collation/CollationFactory.php',
'MediaWiki\\CommentFormatter\\CommentBatch' => __DIR__ . '/includes/CommentFormatter/CommentBatch.php',
'MediaWiki\\CommentFormatter\\CommentFormatter' => __DIR__ . '/includes/CommentFormatter/CommentFormatter.php',
'MediaWiki\\CommentFormatter\\CommentItem' => __DIR__ . '/includes/CommentFormatter/CommentItem.php',
'MediaWiki\\CommentFormatter\\CommentParser' => __DIR__ . '/includes/CommentFormatter/CommentParser.php',
'MediaWiki\\CommentFormatter\\CommentParserFactory' => __DIR__ . '/includes/CommentFormatter/CommentParserFactory.php',
'MediaWiki\\CommentFormatter\\RevisionCommentBatch' => __DIR__ . '/includes/CommentFormatter/RevisionCommentBatch.php',
'MediaWiki\\CommentFormatter\\RowCommentFormatter' => __DIR__ . '/includes/CommentFormatter/RowCommentFormatter.php',
'MediaWiki\\CommentFormatter\\RowCommentIterator' => __DIR__ . '/includes/CommentFormatter/RowCommentIterator.php',
'MediaWiki\\CommentFormatter\\StringCommentIterator' => __DIR__ . '/includes/CommentFormatter/StringCommentIterator.php',
'MediaWiki\\CommentStore\\CommentStore' => __DIR__ . '/includes/CommentStore/CommentStore.php',
'MediaWiki\\CommentStore\\CommentStoreBase' => __DIR__ . '/includes/CommentStore/CommentStoreBase.php',
'MediaWiki\\CommentStore\\CommentStoreComment' => __DIR__ . '/includes/CommentStore/CommentStoreComment.php',
'MediaWiki\\Config\\ConfigRepository' => __DIR__ . '/includes/config/ConfigRepository.php',
'MediaWiki\\Config\\IterableConfig' => __DIR__ . '/includes/config/IterableConfig.php',
'MediaWiki\\Config\\ServiceOptions' => __DIR__ . '/includes/config/ServiceOptions.php',
'MediaWiki\\Content\\ContentHandlerFactory' => __DIR__ . '/includes/content/ContentHandlerFactory.php',
'MediaWiki\\Content\\Hook\\ContentAlterParserOutputHook' => __DIR__ . '/includes/content/Hook/ContentAlterParserOutputHook.php',
'MediaWiki\\Content\\Hook\\ContentGetParserOutputHook' => __DIR__ . '/includes/content/Hook/ContentGetParserOutputHook.php',
'MediaWiki\\Content\\Hook\\ContentHandlerForModelIDHook' => __DIR__ . '/includes/content/Hook/ContentHandlerForModelIDHook.php',
'MediaWiki\\Content\\Hook\\ContentModelCanBeUsedOnHook' => __DIR__ . '/includes/content/Hook/ContentModelCanBeUsedOnHook.php',
'MediaWiki\\Content\\Hook\\ConvertContentHook' => __DIR__ . '/includes/content/Hook/ConvertContentHook.php',
'MediaWiki\\Content\\Hook\\GetContentModelsHook' => __DIR__ . '/includes/content/Hook/GetContentModelsHook.php',
'MediaWiki\\Content\\Hook\\GetDifferenceEngineHook' => __DIR__ . '/includes/content/Hook/GetDifferenceEngineHook.php',
'MediaWiki\\Content\\Hook\\GetSlotDiffRendererHook' => __DIR__ . '/includes/content/Hook/GetSlotDiffRendererHook.php',
'MediaWiki\\Content\\Hook\\JsonValidateSaveHook' => __DIR__ . '/includes/content/Hook/JsonValidateSaveHook.php',
'MediaWiki\\Content\\Hook\\PageContentLanguageHook' => __DIR__ . '/includes/content/Hook/PageContentLanguageHook.php',
'MediaWiki\\Content\\Hook\\PlaceNewSectionHook' => __DIR__ . '/includes/content/Hook/PlaceNewSectionHook.php',
'MediaWiki\\Content\\Hook\\SearchDataForIndex2Hook' => __DIR__ . '/includes/content/Hook/SearchDataForIndex2Hook.php',
'MediaWiki\\Content\\Hook\\SearchDataForIndexHook' => __DIR__ . '/includes/content/Hook/SearchDataForIndexHook.php',
'MediaWiki\\Content\\IContentHandlerFactory' => __DIR__ . '/includes/content/IContentHandlerFactory.php',
'MediaWiki\\Content\\Renderer\\ContentParseParams' => __DIR__ . '/includes/content/Renderer/ContentParseParams.php',
'MediaWiki\\Content\\Renderer\\ContentRenderer' => __DIR__ . '/includes/content/Renderer/ContentRenderer.php',
'MediaWiki\\Content\\Transform\\ContentTransformer' => __DIR__ . '/includes/content/Transform/ContentTransformer.php',
'MediaWiki\\Content\\Transform\\PreSaveTransformParams' => __DIR__ . '/includes/content/Transform/PreSaveTransformParams.php',
'MediaWiki\\Content\\Transform\\PreSaveTransformParamsValue' => __DIR__ . '/includes/content/Transform/PreSaveTransformParamsValue.php',
'MediaWiki\\Content\\Transform\\PreloadTransformParams' => __DIR__ . '/includes/content/Transform/PreloadTransformParams.php',
'MediaWiki\\Content\\Transform\\PreloadTransformParamsValue' => __DIR__ . '/includes/content/Transform/PreloadTransformParamsValue.php',
'MediaWiki\\Content\\ValidationParams' => __DIR__ . '/includes/content/ValidationParams.php',
'MediaWiki\\DAO\\WikiAwareEntity' => __DIR__ . '/includes/dao/WikiAwareEntity.php',
'MediaWiki\\DAO\\WikiAwareEntityTrait' => __DIR__ . '/includes/dao/WikiAwareEntityTrait.php',
'MediaWiki\\DB\\AbstractSchemaValidationError' => __DIR__ . '/includes/db/AbstractSchemaValidationError.php',
'MediaWiki\\DB\\AbstractSchemaValidator' => __DIR__ . '/includes/db/AbstractSchemaValidator.php',
'MediaWiki\\Debug\\DeprecatablePropertyArray' => __DIR__ . '/includes/debug/DeprecatablePropertyArray.php',
'MediaWiki\\Deferred\\LinksUpdate\\CategoryLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/CategoryLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\ExternalLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/ExternalLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\GenericPageLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/GenericPageLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\ImageLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/ImageLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\InterwikiLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/InterwikiLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\LangLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/LangLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksUpdate/LinksDeletionUpdate.php',
'MediaWiki\\Deferred\\LinksUpdate\\LinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/LinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\LinksTableGroup' => __DIR__ . '/includes/deferred/LinksUpdate/LinksTableGroup.php',
'MediaWiki\\Deferred\\LinksUpdate\\LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate/LinksUpdate.php',
'MediaWiki\\Deferred\\LinksUpdate\\PageLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/PageLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\PagePropsTable' => __DIR__ . '/includes/deferred/LinksUpdate/PagePropsTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\TemplateLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/TemplateLinksTable.php',
'MediaWiki\\Deferred\\LinksUpdate\\TitleLinksTable' => __DIR__ . '/includes/deferred/LinksUpdate/TitleLinksTable.php',
'MediaWiki\\Diff\\ComplexityException' => __DIR__ . '/includes/diff/ComplexityException.php',
'MediaWiki\\Diff\\Hook\\AbortDiffCacheHook' => __DIR__ . '/includes/diff/Hook/AbortDiffCacheHook.php',
'MediaWiki\\Diff\\Hook\\ArticleContentOnDiffHook' => __DIR__ . '/includes/diff/Hook/ArticleContentOnDiffHook.php',
'MediaWiki\\Diff\\Hook\\DiffToolsHook' => __DIR__ . '/includes/diff/Hook/DiffToolsHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineAfterLoadNewTextHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineAfterLoadNewTextHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineLoadTextAfterNewContentIsLoadedHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineLoadTextAfterNewContentIsLoadedHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineMarkPatrolledLinkHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineMarkPatrolledLinkHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineMarkPatrolledRCIDHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineMarkPatrolledRCIDHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineNewHeaderHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineNewHeaderHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineOldHeaderHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineOldHeaderHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineOldHeaderNoOldRevHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineOldHeaderNoOldRevHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineRenderRevisionAddParserOutputHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineRenderRevisionAddParserOutputHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineRenderRevisionShowFinalPatrolLinkHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineRenderRevisionShowFinalPatrolLinkHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineShowDiffHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineShowDiffHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineShowDiffPageHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineShowDiffPageHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineShowDiffPageMaybeShowMissingRevisionHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineShowDiffPageMaybeShowMissingRevisionHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineShowEmptyOldContentHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineShowEmptyOldContentHook.php',
'MediaWiki\\Diff\\Hook\\DifferenceEngineViewHeaderHook' => __DIR__ . '/includes/diff/Hook/DifferenceEngineViewHeaderHook.php',
'MediaWiki\\Diff\\Hook\\NewDifferenceEngineHook' => __DIR__ . '/includes/diff/Hook/NewDifferenceEngineHook.php',
'MediaWiki\\Diff\\WordAccumulator' => __DIR__ . '/includes/diff/WordAccumulator.php',
'MediaWiki\\EditPage\\Constraint\\AccidentalRecreationConstraint' => __DIR__ . '/includes/editpage/Constraint/AccidentalRecreationConstraint.php',
'MediaWiki\\EditPage\\Constraint\\AutoSummaryMissingSummaryConstraint' => __DIR__ . '/includes/editpage/Constraint/AutoSummaryMissingSummaryConstraint.php',
'MediaWiki\\EditPage\\Constraint\\ChangeTagsConstraint' => __DIR__ . '/includes/editpage/Constraint/ChangeTagsConstraint.php',
'MediaWiki\\EditPage\\Constraint\\ContentModelChangeConstraint' => __DIR__ . '/includes/editpage/Constraint/ContentModelChangeConstraint.php',
'MediaWiki\\EditPage\\Constraint\\CreationPermissionConstraint' => __DIR__ . '/includes/editpage/Constraint/CreationPermissionConstraint.php',
'MediaWiki\\EditPage\\Constraint\\DefaultTextConstraint' => __DIR__ . '/includes/editpage/Constraint/DefaultTextConstraint.php',
'MediaWiki\\EditPage\\Constraint\\EditConstraintFactory' => __DIR__ . '/includes/editpage/Constraint/EditConstraintFactory.php',
'MediaWiki\\EditPage\\Constraint\\EditConstraintRunner' => __DIR__ . '/includes/editpage/Constraint/EditConstraintRunner.php',
'MediaWiki\\EditPage\\Constraint\\EditFilterMergedContentHookConstraint' => __DIR__ . '/includes/editpage/Constraint/EditFilterMergedContentHookConstraint.php',
'MediaWiki\\EditPage\\Constraint\\EditRightConstraint' => __DIR__ . '/includes/editpage/Constraint/EditRightConstraint.php',
'MediaWiki\\EditPage\\Constraint\\IEditConstraint' => __DIR__ . '/includes/editpage/Constraint/IEditConstraint.php',
'MediaWiki\\EditPage\\Constraint\\ImageRedirectConstraint' => __DIR__ . '/includes/editpage/Constraint/ImageRedirectConstraint.php',
'MediaWiki\\EditPage\\Constraint\\MissingCommentConstraint' => __DIR__ . '/includes/editpage/Constraint/MissingCommentConstraint.php',
'MediaWiki\\EditPage\\Constraint\\NewSectionMissingSubjectConstraint' => __DIR__ . '/includes/editpage/Constraint/NewSectionMissingSubjectConstraint.php',
'MediaWiki\\EditPage\\Constraint\\PageSizeConstraint' => __DIR__ . '/includes/editpage/Constraint/PageSizeConstraint.php',
'MediaWiki\\EditPage\\Constraint\\ReadOnlyConstraint' => __DIR__ . '/includes/editpage/Constraint/ReadOnlyConstraint.php',
'MediaWiki\\EditPage\\Constraint\\SelfRedirectConstraint' => __DIR__ . '/includes/editpage/Constraint/SelfRedirectConstraint.php',
'MediaWiki\\EditPage\\Constraint\\SimpleAntiSpamConstraint' => __DIR__ . '/includes/editpage/Constraint/SimpleAntiSpamConstraint.php',
'MediaWiki\\EditPage\\Constraint\\SpamRegexConstraint' => __DIR__ . '/includes/editpage/Constraint/SpamRegexConstraint.php',
'MediaWiki\\EditPage\\Constraint\\UnicodeConstraint' => __DIR__ . '/includes/editpage/Constraint/UnicodeConstraint.php',
'MediaWiki\\EditPage\\Constraint\\UserBlockConstraint' => __DIR__ . '/includes/editpage/Constraint/UserBlockConstraint.php',
'MediaWiki\\EditPage\\Constraint\\UserRateLimitConstraint' => __DIR__ . '/includes/editpage/Constraint/UserRateLimitConstraint.php',
'MediaWiki\\EditPage\\IEditObject' => __DIR__ . '/includes/editpage/IEditObject.php',
'MediaWiki\\EditPage\\SpamChecker' => __DIR__ . '/includes/editpage/SpamChecker.php',
'MediaWiki\\EditPage\\TextConflictHelper' => __DIR__ . '/includes/editpage/TextConflictHelper.php',
'MediaWiki\\EditPage\\TextboxBuilder' => __DIR__ . '/includes/editpage/TextboxBuilder.php',
'MediaWiki\\Edit\\ParsoidOutputStash' => __DIR__ . '/includes/edit/ParsoidOutputStash.php',
'MediaWiki\\Edit\\PreparedEdit' => __DIR__ . '/includes/edit/PreparedEdit.php',
'MediaWiki\\Edit\\SelserContext' => __DIR__ . '/includes/edit/SelserContext.php',
'MediaWiki\\Edit\\SimpleParsoidOutputStash' => __DIR__ . '/includes/edit/SimpleParsoidOutputStash.php',
'MediaWiki\\Emptiable' => __DIR__ . '/includes/Emptiable.php',
'MediaWiki\\Export\\WikiExporterFactory' => __DIR__ . '/includes/export/WikiExporterFactory.php',
'MediaWiki\\ExtensionInfo' => __DIR__ . '/includes/ExtensionInfo.php',
'MediaWiki\\Feed\\AtomFeed' => __DIR__ . '/includes/Feed/AtomFeed.php',
'MediaWiki\\Feed\\ChannelFeed' => __DIR__ . '/includes/Feed/ChannelFeed.php',
'MediaWiki\\Feed\\FeedItem' => __DIR__ . '/includes/Feed/FeedItem.php',
'MediaWiki\\Feed\\FeedUtils' => __DIR__ . '/includes/Feed/FeedUtils.php',
'MediaWiki\\Feed\\RSSFeed' => __DIR__ . '/includes/Feed/RSSFeed.php',
'MediaWiki\\FileBackend\\FSFile\\TempFSFileFactory' => __DIR__ . '/includes/libs/filebackend/fsfile/TempFSFileFactory.php',
'MediaWiki\\FileBackend\\LockManager\\LockManagerGroupFactory' => __DIR__ . '/includes/filebackend/lockmanager/LockManagerGroupFactory.php',
'MediaWiki\\HeaderCallback' => __DIR__ . '/includes/Request/HeaderCallback.php',
'MediaWiki\\HookContainer\\DeprecatedHooks' => __DIR__ . '/includes/HookContainer/DeprecatedHooks.php',
'MediaWiki\\HookContainer\\GlobalHookRegistry' => __DIR__ . '/includes/HookContainer/GlobalHookRegistry.php',
'MediaWiki\\HookContainer\\HookContainer' => __DIR__ . '/includes/HookContainer/HookContainer.php',
'MediaWiki\\HookContainer\\HookRegistry' => __DIR__ . '/includes/HookContainer/HookRegistry.php',
'MediaWiki\\HookContainer\\HookRunner' => __DIR__ . '/includes/HookContainer/HookRunner.php',
'MediaWiki\\HookContainer\\ProtectedHookAccessorTrait' => __DIR__ . '/includes/HookContainer/ProtectedHookAccessorTrait.php',
'MediaWiki\\HookContainer\\StaticHookRegistry' => __DIR__ . '/includes/HookContainer/StaticHookRegistry.php',
'MediaWiki\\Hook\\AbortEmailNotificationHook' => __DIR__ . '/includes/changes/Hook/AbortEmailNotificationHook.php',
'MediaWiki\\Hook\\AbortTalkPageEmailNotificationHook' => __DIR__ . '/includes/mail/Hook/AbortTalkPageEmailNotificationHook.php',
'MediaWiki\\Hook\\ActionBeforeFormDisplayHook' => __DIR__ . '/includes/actions/Hook/ActionBeforeFormDisplayHook.php',
'MediaWiki\\Hook\\ActionModifyFormFieldsHook' => __DIR__ . '/includes/actions/Hook/ActionModifyFormFieldsHook.php',
'MediaWiki\\Hook\\AddNewAccountHook' => __DIR__ . '/includes/specials/Hook/AddNewAccountHook.php',
'MediaWiki\\Hook\\AfterBuildFeedLinksHook' => __DIR__ . '/includes/Hook/AfterBuildFeedLinksHook.php',
'MediaWiki\\Hook\\AfterFinalPageOutputHook' => __DIR__ . '/includes/Hook/AfterFinalPageOutputHook.php',
'MediaWiki\\Hook\\AfterImportPageHook' => __DIR__ . '/includes/import/Hook/AfterImportPageHook.php',
'MediaWiki\\Hook\\AfterParserFetchFileAndTitleHook' => __DIR__ . '/includes/parser/Hook/AfterParserFetchFileAndTitleHook.php',
'MediaWiki\\Hook\\AlternateEditHook' => __DIR__ . '/includes/Hook/AlternateEditHook.php',
'MediaWiki\\Hook\\AlternateEditPreviewHook' => __DIR__ . '/includes/Hook/AlternateEditPreviewHook.php',
'MediaWiki\\Hook\\AlternateUserMailerHook' => __DIR__ . '/includes/mail/Hook/AlternateUserMailerHook.php',
'MediaWiki\\Hook\\AncientPagesQueryHook' => __DIR__ . '/includes/specials/Hook/AncientPagesQueryHook.php',
'MediaWiki\\Hook\\ApiBeforeMainHook' => __DIR__ . '/includes/Hook/ApiBeforeMainHook.php',
'MediaWiki\\Hook\\ArticleMergeCompleteHook' => __DIR__ . '/includes/Hook/ArticleMergeCompleteHook.php',
'MediaWiki\\Hook\\ArticleRevisionVisibilitySetHook' => __DIR__ . '/includes/revisiondelete/Hook/ArticleRevisionVisibilitySetHook.php',
'MediaWiki\\Hook\\ArticleUpdateBeforeRedirectHook' => __DIR__ . '/includes/Hook/ArticleUpdateBeforeRedirectHook.php',
'MediaWiki\\Hook\\BadImageHook' => __DIR__ . '/includes/Hook/BadImageHook.php',
'MediaWiki\\Hook\\BeforeInitializeHook' => __DIR__ . '/includes/Hook/BeforeInitializeHook.php',
'MediaWiki\\Hook\\BeforePageDisplayHook' => __DIR__ . '/includes/Hook/BeforePageDisplayHook.php',
'MediaWiki\\Hook\\BeforePageRedirectHook' => __DIR__ . '/includes/Hook/BeforePageRedirectHook.php',
'MediaWiki\\Hook\\BeforeParserFetchFileAndTitleHook' => __DIR__ . '/includes/parser/Hook/BeforeParserFetchFileAndTitleHook.php',
parser: new BeforeParserFetchTemplateRevisionRecord hook This new hook provides for the use case in T47096 (allowing the Translate extension to transclude a page from another language) by adding a new hook which would let us deprecate and replace two awkward legacy hooks (one with an embarrassing capitalization issue). The new hook is a little more tightly scoped in terms of what it allows and gives access to, and it uses the new RevisionRecord API. In addition, the new hook uses LinkTarget instead of Title per current best practices. (PageIdentity is not appropriate for reasons documented at the hook invocation site.) The original BeforeParserFetchTemplateAndtitle (sic) hook allowed redirecting the revision id of a template inclusion, but not the title. The only known current use is Extension:ApprovedRevs; the FlaggedRevs extension replaces the entire function using ParserOptions::setCurrentRevisionRecordCallback(). Extension:Translate would like to redirect the title as well, possibly recursively (for a limited number of hops) to handle fallback languages. That is, when invoked on Foo/fr, including Template:Bar would redirect to Template:Bar/fr -- and, if that doesn't exist, then Template:Bar/fr would redirect to its fallback language, say Template:Bar/en. It uses the top-level page title as context to set the desired page language. This would require 2 invocations of the hook; we've set the recursion limit to 3 to provide a little bit of future-proofing. The hook added in this patch uses RevisionRecord instead of int $rev_id, and thus can handle the case where the redirect is to a page which doesn't exist (by setting the RevisionRecord to a MutableRevisionRecord with the correct title and no main slot content) in the fallback language case above. The new hook deprecates BeforeParserFetchTemplateAndtitle and replaces ParserFetchTemplate as well (deprecated in 1.35). Code search: https://codesearch.wmcloud.org/search/?q=BeforeParserFetchTemplateAndtitle&i=nope&files=&repos= Bug: T47096 Change-Id: Ia5b5d339706ce4084c16948300e0e3418b11792e
2020-07-29 23:32:45 +00:00
'MediaWiki\\Hook\\BeforeParserFetchTemplateRevisionRecordHook' => __DIR__ . '/includes/parser/Hook/BeforeParserFetchTemplateRevisionRecordHook.php',
'MediaWiki\\Hook\\BeforeWelcomeCreationHook' => __DIR__ . '/includes/specials/Hook/BeforeWelcomeCreationHook.php',
'MediaWiki\\Hook\\BitmapHandlerCheckImageAreaHook' => __DIR__ . '/includes/media/Hook/BitmapHandlerCheckImageAreaHook.php',
'MediaWiki\\Hook\\BitmapHandlerTransformHook' => __DIR__ . '/includes/media/Hook/BitmapHandlerTransformHook.php',
'MediaWiki\\Hook\\BlockIpCompleteHook' => __DIR__ . '/includes/specials/Hook/BlockIpCompleteHook.php',
'MediaWiki\\Hook\\BlockIpHook' => __DIR__ . '/includes/specials/Hook/BlockIpHook.php',
'MediaWiki\\Hook\\BookInformationHook' => __DIR__ . '/includes/specials/Hook/BookInformationHook.php',
'MediaWiki\\Hook\\CanonicalNamespacesHook' => __DIR__ . '/includes/title/Hook/CanonicalNamespacesHook.php',
'MediaWiki\\Hook\\CategoryViewer__doCategoryQueryHook' => __DIR__ . '/includes/Hook/CategoryViewer__doCategoryQueryHook.php',
'MediaWiki\\Hook\\CategoryViewer__generateLinkHook' => __DIR__ . '/includes/Hook/CategoryViewer__generateLinkHook.php',
'MediaWiki\\Hook\\ChangeUserGroupsHook' => __DIR__ . '/includes/specials/Hook/ChangeUserGroupsHook.php',
'MediaWiki\\Hook\\ChangesListInitRowsHook' => __DIR__ . '/includes/changes/Hook/ChangesListInitRowsHook.php',
'MediaWiki\\Hook\\ChangesListInsertArticleLinkHook' => __DIR__ . '/includes/changes/Hook/ChangesListInsertArticleLinkHook.php',
'MediaWiki\\Hook\\Collation__factoryHook' => __DIR__ . '/includes/collation/Hook/Collation__factoryHook.php',
'MediaWiki\\Hook\\ContentSecurityPolicyDefaultSourceHook' => __DIR__ . '/includes/Hook/ContentSecurityPolicyDefaultSourceHook.php',
'MediaWiki\\Hook\\ContentSecurityPolicyDirectivesHook' => __DIR__ . '/includes/Hook/ContentSecurityPolicyDirectivesHook.php',
'MediaWiki\\Hook\\ContentSecurityPolicyScriptSourceHook' => __DIR__ . '/includes/Hook/ContentSecurityPolicyScriptSourceHook.php',
'MediaWiki\\Hook\\ContribsPager__getQueryInfoHook' => __DIR__ . '/includes/specials/Hook/ContribsPager__getQueryInfoHook.php',
'MediaWiki\\Hook\\ContribsPager__reallyDoQueryHook' => __DIR__ . '/includes/specials/Hook/ContribsPager__reallyDoQueryHook.php',
'MediaWiki\\Hook\\ContributionsLineEndingHook' => __DIR__ . '/includes/specials/Hook/ContributionsLineEndingHook.php',
'MediaWiki\\Hook\\ContributionsToolLinksHook' => __DIR__ . '/includes/specials/Hook/ContributionsToolLinksHook.php',
'MediaWiki\\Hook\\CustomEditorHook' => __DIR__ . '/includes/actions/Hook/CustomEditorHook.php',
'MediaWiki\\Hook\\DeleteUnknownPreferencesHook' => __DIR__ . '/includes/Hook/DeleteUnknownPreferencesHook.php',
'MediaWiki\\Hook\\DeletedContribsPager__reallyDoQueryHook' => __DIR__ . '/includes/specials/Hook/DeletedContribsPager__reallyDoQueryHook.php',
'MediaWiki\\Hook\\DeletedContributionsLineEndingHook' => __DIR__ . '/includes/specials/Hook/DeletedContributionsLineEndingHook.php',
'MediaWiki\\Hook\\EditFilterHook' => __DIR__ . '/includes/Hook/EditFilterHook.php',
'MediaWiki\\Hook\\EditFilterMergedContentHook' => __DIR__ . '/includes/Hook/EditFilterMergedContentHook.php',
'MediaWiki\\Hook\\EditFormInitialTextHook' => __DIR__ . '/includes/Hook/EditFormInitialTextHook.php',
'MediaWiki\\Hook\\EditFormPreloadTextHook' => __DIR__ . '/includes/Hook/EditFormPreloadTextHook.php',
'MediaWiki\\Hook\\EditPageBeforeConflictDiffHook' => __DIR__ . '/includes/Hook/EditPageBeforeConflictDiffHook.php',
'MediaWiki\\Hook\\EditPageBeforeEditButtonsHook' => __DIR__ . '/includes/Hook/EditPageBeforeEditButtonsHook.php',
'MediaWiki\\Hook\\EditPageBeforeEditToolbarHook' => __DIR__ . '/includes/Hook/EditPageBeforeEditToolbarHook.php',
'MediaWiki\\Hook\\EditPageCopyrightWarningHook' => __DIR__ . '/includes/Hook/EditPageCopyrightWarningHook.php',
'MediaWiki\\Hook\\EditPageGetCheckboxesDefinitionHook' => __DIR__ . '/includes/Hook/EditPageGetCheckboxesDefinitionHook.php',
'MediaWiki\\Hook\\EditPageGetDiffContentHook' => __DIR__ . '/includes/Hook/EditPageGetDiffContentHook.php',
'MediaWiki\\Hook\\EditPageGetPreviewContentHook' => __DIR__ . '/includes/Hook/EditPageGetPreviewContentHook.php',
'MediaWiki\\Hook\\EditPageNoSuchSectionHook' => __DIR__ . '/includes/Hook/EditPageNoSuchSectionHook.php',
'MediaWiki\\Hook\\EditPageTosSummaryHook' => __DIR__ . '/includes/Hook/EditPageTosSummaryHook.php',
'MediaWiki\\Hook\\EditPage__attemptSaveHook' => __DIR__ . '/includes/Hook/EditPage__attemptSaveHook.php',
'MediaWiki\\Hook\\EditPage__attemptSave_afterHook' => __DIR__ . '/includes/Hook/EditPage__attemptSave_afterHook.php',
'MediaWiki\\Hook\\EditPage__importFormDataHook' => __DIR__ . '/includes/Hook/EditPage__importFormDataHook.php',
'MediaWiki\\Hook\\EditPage__showEditForm_fieldsHook' => __DIR__ . '/includes/Hook/EditPage__showEditForm_fieldsHook.php',
'MediaWiki\\Hook\\EditPage__showEditForm_initialHook' => __DIR__ . '/includes/Hook/EditPage__showEditForm_initialHook.php',
'MediaWiki\\Hook\\EditPage__showReadOnlyForm_initialHook' => __DIR__ . '/includes/Hook/EditPage__showReadOnlyForm_initialHook.php',
'MediaWiki\\Hook\\EditPage__showStandardInputs_optionsHook' => __DIR__ . '/includes/Hook/EditPage__showStandardInputs_optionsHook.php',
'MediaWiki\\Hook\\EmailUserCCHook' => __DIR__ . '/includes/specials/Hook/EmailUserCCHook.php',
'MediaWiki\\Hook\\EmailUserCompleteHook' => __DIR__ . '/includes/specials/Hook/EmailUserCompleteHook.php',
'MediaWiki\\Hook\\EmailUserFormHook' => __DIR__ . '/includes/specials/Hook/EmailUserFormHook.php',
'MediaWiki\\Hook\\EmailUserHook' => __DIR__ . '/includes/specials/Hook/EmailUserHook.php',
'MediaWiki\\Hook\\EmailUserPermissionsErrorsHook' => __DIR__ . '/includes/specials/Hook/EmailUserPermissionsErrorsHook.php',
'MediaWiki\\Hook\\EnhancedChangesListModifyBlockLineDataHook' => __DIR__ . '/includes/changes/Hook/EnhancedChangesListModifyBlockLineDataHook.php',
'MediaWiki\\Hook\\EnhancedChangesListModifyLineDataHook' => __DIR__ . '/includes/changes/Hook/EnhancedChangesListModifyLineDataHook.php',
'MediaWiki\\Hook\\EnhancedChangesList__getLogTextHook' => __DIR__ . '/includes/changes/Hook/EnhancedChangesList__getLogTextHook.php',
'MediaWiki\\Hook\\ExtensionTypesHook' => __DIR__ . '/includes/specials/Hook/ExtensionTypesHook.php',
'MediaWiki\\Hook\\FetchChangesListHook' => __DIR__ . '/includes/changes/Hook/FetchChangesListHook.php',
'MediaWiki\\Hook\\FileDeleteCompleteHook' => __DIR__ . '/includes/Hook/FileDeleteCompleteHook.php',
'MediaWiki\\Hook\\FileTransformedHook' => __DIR__ . '/includes/filerepo/Hook/FileTransformedHook.php',
'MediaWiki\\Hook\\FileUndeleteCompleteHook' => __DIR__ . '/includes/specials/Hook/FileUndeleteCompleteHook.php',
'MediaWiki\\Hook\\FileUploadHook' => __DIR__ . '/includes/filerepo/Hook/FileUploadHook.php',
'MediaWiki\\Hook\\FormatAutocommentsHook' => __DIR__ . '/includes/Hook/FormatAutocommentsHook.php',
'MediaWiki\\Hook\\GalleryGetModesHook' => __DIR__ . '/includes/gallery/Hook/GalleryGetModesHook.php',
'MediaWiki\\Hook\\GetBlockErrorMessageKey' => __DIR__ . '/includes/Hook/GetBlockErrorMessageKey.php',
'MediaWiki\\Hook\\GetCacheVaryCookiesHook' => __DIR__ . '/includes/Hook/GetCacheVaryCookiesHook.php',
'MediaWiki\\Hook\\GetCanonicalURLHook' => __DIR__ . '/includes/Hook/GetCanonicalURLHook.php',
'MediaWiki\\Hook\\GetDefaultSortkeyHook' => __DIR__ . '/includes/Hook/GetDefaultSortkeyHook.php',
'MediaWiki\\Hook\\GetDoubleUnderscoreIDsHook' => __DIR__ . '/includes/Hook/GetDoubleUnderscoreIDsHook.php',
'MediaWiki\\Hook\\GetExtendedMetadataHook' => __DIR__ . '/includes/media/Hook/GetExtendedMetadataHook.php',
'MediaWiki\\Hook\\GetFullURLHook' => __DIR__ . '/includes/Hook/GetFullURLHook.php',
'MediaWiki\\Hook\\GetHumanTimestampHook' => __DIR__ . '/includes/language/Hook/GetHumanTimestampHook.php',
'MediaWiki\\Hook\\GetIPHook' => __DIR__ . '/includes/Hook/GetIPHook.php',
'MediaWiki\\Hook\\GetInternalURLHook' => __DIR__ . '/includes/Hook/GetInternalURLHook.php',
'MediaWiki\\Hook\\GetLangPreferredVariantHook' => __DIR__ . '/includes/language/Hook/GetLangPreferredVariantHook.php',
'MediaWiki\\Hook\\GetLinkColoursHook' => __DIR__ . '/includes/parser/Hook/GetLinkColoursHook.php',
'MediaWiki\\Hook\\GetLocalURLHook' => __DIR__ . '/includes/Hook/GetLocalURLHook.php',
'MediaWiki\\Hook\\GetLocalURL__ArticleHook' => __DIR__ . '/includes/Hook/GetLocalURL__ArticleHook.php',
'MediaWiki\\Hook\\GetLocalURL__InternalHook' => __DIR__ . '/includes/Hook/GetLocalURL__InternalHook.php',
'MediaWiki\\Hook\\GetLogTypesOnUserHook' => __DIR__ . '/includes/specials/Hook/GetLogTypesOnUserHook.php',
'MediaWiki\\Hook\\GetMagicVariableIDsHook' => __DIR__ . '/includes/Hook/GetMagicVariableIDsHook.php',
'MediaWiki\\Hook\\GetMetadataVersionHook' => __DIR__ . '/includes/media/Hook/GetMetadataVersionHook.php',
'MediaWiki\\Hook\\GetNewMessagesAlertHook' => __DIR__ . '/includes/skins/Hook/GetNewMessagesAlertHook.php',
'MediaWiki\\Hook\\GetRelativeTimestampHook' => __DIR__ . '/includes/Hook/GetRelativeTimestampHook.php',
'MediaWiki\\Hook\\GitViewersHook' => __DIR__ . '/includes/Hook/GitViewersHook.php',
'MediaWiki\\Hook\\HistoryPageToolLinksHook' => __DIR__ . '/includes/actions/Hook/HistoryPageToolLinksHook.php',
'MediaWiki\\Hook\\HistoryToolsHook' => __DIR__ . '/includes/actions/Hook/HistoryToolsHook.php',
'MediaWiki\\Hook\\IRCLineURLHook' => __DIR__ . '/includes/rcfeed/Hook/IRCLineURLHook.php',
'MediaWiki\\Hook\\ImageBeforeProduceHTMLHook' => __DIR__ . '/includes/Hook/ImageBeforeProduceHTMLHook.php',
'MediaWiki\\Hook\\ImgAuthBeforeStreamHook' => __DIR__ . '/includes/Hook/ImgAuthBeforeStreamHook.php',
'MediaWiki\\Hook\\ImgAuthModifyHeadersHook' => __DIR__ . '/includes/Hook/ImgAuthModifyHeadersHook.php',
'MediaWiki\\Hook\\ImportHandleContentXMLTagHook' => __DIR__ . '/includes/import/Hook/ImportHandleContentXMLTagHook.php',
'MediaWiki\\Hook\\ImportHandleLogItemXMLTagHook' => __DIR__ . '/includes/import/Hook/ImportHandleLogItemXMLTagHook.php',
'MediaWiki\\Hook\\ImportHandlePageXMLTagHook' => __DIR__ . '/includes/import/Hook/ImportHandlePageXMLTagHook.php',
'MediaWiki\\Hook\\ImportHandleRevisionXMLTagHook' => __DIR__ . '/includes/import/Hook/ImportHandleRevisionXMLTagHook.php',
'MediaWiki\\Hook\\ImportHandleToplevelXMLTagHook' => __DIR__ . '/includes/import/Hook/ImportHandleToplevelXMLTagHook.php',
'MediaWiki\\Hook\\ImportHandleUnknownUserHook' => __DIR__ . '/includes/Hook/ImportHandleUnknownUserHook.php',
'MediaWiki\\Hook\\ImportHandleUploadXMLTagHook' => __DIR__ . '/includes/import/Hook/ImportHandleUploadXMLTagHook.php',
'MediaWiki\\Hook\\ImportLogInterwikiLinkHook' => __DIR__ . '/includes/specials/Hook/ImportLogInterwikiLinkHook.php',
'MediaWiki\\Hook\\ImportSourcesHook' => __DIR__ . '/includes/specials/Hook/ImportSourcesHook.php',
'MediaWiki\\Hook\\InfoActionHook' => __DIR__ . '/includes/actions/Hook/InfoActionHook.php',
'MediaWiki\\Hook\\InitializeArticleMaybeRedirectHook' => __DIR__ . '/includes/Hook/InitializeArticleMaybeRedirectHook.php',
'MediaWiki\\Hook\\InternalParseBeforeLinksHook' => __DIR__ . '/includes/parser/Hook/InternalParseBeforeLinksHook.php',
'MediaWiki\\Hook\\IsTrustedProxyHook' => __DIR__ . '/includes/Hook/IsTrustedProxyHook.php',
'MediaWiki\\Hook\\IsUploadAllowedFromUrlHook' => __DIR__ . '/includes/upload/Hook/IsUploadAllowedFromUrlHook.php',
'MediaWiki\\Hook\\IsValidEmailAddrHook' => __DIR__ . '/includes/parser/Hook/IsValidEmailAddrHook.php',
'MediaWiki\\Hook\\LanguageGetNamespacesHook' => __DIR__ . '/includes/language/Hook/LanguageGetNamespacesHook.php',
'MediaWiki\\Hook\\LanguageLinksHook' => __DIR__ . '/includes/Hook/LanguageLinksHook.php',
'MediaWiki\\Hook\\LanguageSelectorHook' => __DIR__ . '/includes/specials/Hook/LanguageSelectorHook.php',
'MediaWiki\\Hook\\LinkerMakeExternalImageHook' => __DIR__ . '/includes/Hook/LinkerMakeExternalImageHook.php',
'MediaWiki\\Hook\\LinkerMakeExternalLinkHook' => __DIR__ . '/includes/Hook/LinkerMakeExternalLinkHook.php',
'MediaWiki\\Hook\\LinkerMakeMediaLinkFileHook' => __DIR__ . '/includes/Hook/LinkerMakeMediaLinkFileHook.php',
'MediaWiki\\Hook\\LinksUpdateCompleteHook' => __DIR__ . '/includes/deferred/Hook/LinksUpdateCompleteHook.php',
'MediaWiki\\Hook\\LinksUpdateHook' => __DIR__ . '/includes/deferred/Hook/LinksUpdateHook.php',
'MediaWiki\\Hook\\LocalFilePurgeThumbnailsHook' => __DIR__ . '/includes/filerepo/Hook/LocalFilePurgeThumbnailsHook.php',
'MediaWiki\\Hook\\LocalFile__getHistoryHook' => __DIR__ . '/includes/filerepo/Hook/LocalFile__getHistoryHook.php',
'MediaWiki\\Hook\\LocalisationCacheRecacheFallbackHook' => __DIR__ . '/includes/language/Hook/LocalisationCacheRecacheFallbackHook.php',
'MediaWiki\\Hook\\LocalisationCacheRecacheHook' => __DIR__ . '/includes/language/Hook/LocalisationCacheRecacheHook.php',
'MediaWiki\\Hook\\LogEventsListGetExtraInputsHook' => __DIR__ . '/includes/logging/Hook/LogEventsListGetExtraInputsHook.php',
'MediaWiki\\Hook\\LogEventsListLineEndingHook' => __DIR__ . '/includes/logging/Hook/LogEventsListLineEndingHook.php',
'MediaWiki\\Hook\\LogEventsListShowLogExtractHook' => __DIR__ . '/includes/logging/Hook/LogEventsListShowLogExtractHook.php',
'MediaWiki\\Hook\\LogExceptionHook' => __DIR__ . '/includes/exception/Hook/LogExceptionHook.php',
'MediaWiki\\Hook\\LogLineHook' => __DIR__ . '/includes/logging/Hook/LogLineHook.php',
'MediaWiki\\Hook\\LoginFormValidErrorMessagesHook' => __DIR__ . '/includes/specials/Hook/LoginFormValidErrorMessagesHook.php',
'MediaWiki\\Hook\\LonelyPagesQueryHook' => __DIR__ . '/includes/specials/Hook/LonelyPagesQueryHook.php',
'MediaWiki\\Hook\\MagicWordwgVariableIDsHook' => __DIR__ . '/includes/Hook/MagicWordwgVariableIDsHook.php',
'MediaWiki\\Hook\\MaintenanceRefreshLinksInitHook' => __DIR__ . '/includes/Hook/MaintenanceRefreshLinksInitHook.php',
'MediaWiki\\Hook\\MaintenanceShellStartHook' => __DIR__ . '/includes/Hook/MaintenanceShellStartHook.php',
'MediaWiki\\Hook\\MaintenanceUpdateAddParamsHook' => __DIR__ . '/includes/Hook/MaintenanceUpdateAddParamsHook.php',
'MediaWiki\\Hook\\MakeGlobalVariablesScriptHook' => __DIR__ . '/includes/Hook/MakeGlobalVariablesScriptHook.php',
'MediaWiki\\Hook\\ManualLogEntryBeforePublishHook' => __DIR__ . '/includes/logging/Hook/ManualLogEntryBeforePublishHook.php',
'MediaWiki\\Hook\\MarkPatrolledCompleteHook' => __DIR__ . '/includes/changes/Hook/MarkPatrolledCompleteHook.php',
'MediaWiki\\Hook\\MarkPatrolledHook' => __DIR__ . '/includes/changes/Hook/MarkPatrolledHook.php',
'MediaWiki\\Hook\\MediaWikiPerformActionHook' => __DIR__ . '/includes/Hook/MediaWikiPerformActionHook.php',
'MediaWiki\\Hook\\MediaWikiServicesHook' => __DIR__ . '/includes/Hook/MediaWikiServicesHook.php',
'MediaWiki\\Hook\\MimeMagicGuessFromContentHook' => __DIR__ . '/includes/Hook/MimeMagicGuessFromContentHook.php',
'MediaWiki\\Hook\\MimeMagicImproveFromExtensionHook' => __DIR__ . '/includes/Hook/MimeMagicImproveFromExtensionHook.php',
'MediaWiki\\Hook\\MimeMagicInitHook' => __DIR__ . '/includes/Hook/MimeMagicInitHook.php',
'MediaWiki\\Hook\\ModifyExportQueryHook' => __DIR__ . '/includes/export/Hook/ModifyExportQueryHook.php',
'MediaWiki\\Hook\\MovePageCheckPermissionsHook' => __DIR__ . '/includes/Hook/MovePageCheckPermissionsHook.php',
'MediaWiki\\Hook\\MovePageIsValidMoveHook' => __DIR__ . '/includes/Hook/MovePageIsValidMoveHook.php',
'MediaWiki\\Hook\\NamespaceIsMovableHook' => __DIR__ . '/includes/title/Hook/NamespaceIsMovableHook.php',
'MediaWiki\\Hook\\NewPagesLineEndingHook' => __DIR__ . '/includes/specials/Hook/NewPagesLineEndingHook.php',
'MediaWiki\\Hook\\OldChangesListRecentChangesLineHook' => __DIR__ . '/includes/changes/Hook/OldChangesListRecentChangesLineHook.php',
'MediaWiki\\Hook\\OpenSearchUrlsHook' => __DIR__ . '/includes/Hook/OpenSearchUrlsHook.php',
'MediaWiki\\Hook\\OtherAutoblockLogLinkHook' => __DIR__ . '/includes/specials/Hook/OtherAutoblockLogLinkHook.php',
'MediaWiki\\Hook\\OtherBlockLogLinkHook' => __DIR__ . '/includes/specials/Hook/OtherBlockLogLinkHook.php',
'MediaWiki\\Hook\\OutputPageAfterGetHeadLinksArrayHook' => __DIR__ . '/includes/Hook/OutputPageAfterGetHeadLinksArrayHook.php',
'MediaWiki\\Hook\\OutputPageBeforeHTMLHook' => __DIR__ . '/includes/Hook/OutputPageBeforeHTMLHook.php',
'MediaWiki\\Hook\\OutputPageBodyAttributesHook' => __DIR__ . '/includes/Hook/OutputPageBodyAttributesHook.php',
'MediaWiki\\Hook\\OutputPageCheckLastModifiedHook' => __DIR__ . '/includes/Hook/OutputPageCheckLastModifiedHook.php',
'MediaWiki\\Hook\\OutputPageMakeCategoryLinksHook' => __DIR__ . '/includes/Hook/OutputPageMakeCategoryLinksHook.php',
'MediaWiki\\Hook\\OutputPageParserOutputHook' => __DIR__ . '/includes/Hook/OutputPageParserOutputHook.php',
'MediaWiki\\Hook\\PageHistoryBeforeListHook' => __DIR__ . '/includes/actions/Hook/PageHistoryBeforeListHook.php',
'MediaWiki\\Hook\\PageHistoryLineEndingHook' => __DIR__ . '/includes/actions/Hook/PageHistoryLineEndingHook.php',
'MediaWiki\\Hook\\PageHistoryPager__doBatchLookupsHook' => __DIR__ . '/includes/actions/Hook/PageHistoryPager__doBatchLookupsHook.php',
'MediaWiki\\Hook\\PageHistoryPager__getQueryInfoHook' => __DIR__ . '/includes/actions/Hook/PageHistoryPager__getQueryInfoHook.php',
'MediaWiki\\Hook\\PageMoveCompleteHook' => __DIR__ . '/includes/Hook/PageMoveCompleteHook.php',
'MediaWiki\\Hook\\PageMoveCompletingHook' => __DIR__ . '/includes/Hook/PageMoveCompletingHook.php',
'MediaWiki\\Hook\\PageRenderingHashHook' => __DIR__ . '/includes/parser/Hook/PageRenderingHashHook.php',
'MediaWiki\\Hook\\ParserAfterParseHook' => __DIR__ . '/includes/parser/Hook/ParserAfterParseHook.php',
'MediaWiki\\Hook\\ParserAfterTidyHook' => __DIR__ . '/includes/parser/Hook/ParserAfterTidyHook.php',
'MediaWiki\\Hook\\ParserBeforeInternalParseHook' => __DIR__ . '/includes/parser/Hook/ParserBeforeInternalParseHook.php',
'MediaWiki\\Hook\\ParserBeforePreprocessHook' => __DIR__ . '/includes/parser/Hook/ParserBeforePreprocessHook.php',
'MediaWiki\\Hook\\ParserCacheSaveCompleteHook' => __DIR__ . '/includes/parser/Hook/ParserCacheSaveCompleteHook.php',
'MediaWiki\\Hook\\ParserClearStateHook' => __DIR__ . '/includes/parser/Hook/ParserClearStateHook.php',
'MediaWiki\\Hook\\ParserClonedHook' => __DIR__ . '/includes/parser/Hook/ParserClonedHook.php',
'MediaWiki\\Hook\\ParserFetchTemplateDataHook' => __DIR__ . '/includes/parser/Hook/ParserFetchTemplateDataHook.php',
'MediaWiki\\Hook\\ParserFirstCallInitHook' => __DIR__ . '/includes/parser/Hook/ParserFirstCallInitHook.php',
'MediaWiki\\Hook\\ParserGetVariableValueSwitchHook' => __DIR__ . '/includes/parser/Hook/ParserGetVariableValueSwitchHook.php',
'MediaWiki\\Hook\\ParserGetVariableValueTsHook' => __DIR__ . '/includes/parser/Hook/ParserGetVariableValueTsHook.php',
'MediaWiki\\Hook\\ParserLimitReportFormatHook' => __DIR__ . '/includes/parser/Hook/ParserLimitReportFormatHook.php',
'MediaWiki\\Hook\\ParserLimitReportPrepareHook' => __DIR__ . '/includes/parser/Hook/ParserLimitReportPrepareHook.php',
'MediaWiki\\Hook\\ParserLogLinterDataHook' => __DIR__ . '/includes/parser/Hook/ParserLogLinterDataHook.php',
'MediaWiki\\Hook\\ParserMakeImageParamsHook' => __DIR__ . '/includes/parser/Hook/ParserMakeImageParamsHook.php',
'MediaWiki\\Hook\\ParserModifyImageHTML' => __DIR__ . '/includes/parser/Hook/ParserModifyImageHTML.php',
'MediaWiki\\Hook\\ParserOptionsRegisterHook' => __DIR__ . '/includes/parser/Hook/ParserOptionsRegisterHook.php',
'MediaWiki\\Hook\\ParserOutputPostCacheTransformHook' => __DIR__ . '/includes/parser/Hook/ParserOutputPostCacheTransformHook.php',
'MediaWiki\\Hook\\ParserPreSaveTransformCompleteHook' => __DIR__ . '/includes/parser/Hook/ParserPreSaveTransformCompleteHook.php',
'MediaWiki\\Hook\\ParserTestGlobalsHook' => __DIR__ . '/includes/Hook/ParserTestGlobalsHook.php',
'MediaWiki\\Hook\\ParserTestTablesHook' => __DIR__ . '/includes/Hook/ParserTestTablesHook.php',
'MediaWiki\\Hook\\PasswordPoliciesForUserHook' => __DIR__ . '/includes/password/Hook/PasswordPoliciesForUserHook.php',
'MediaWiki\\Hook\\PersonalUrlsHook' => __DIR__ . '/includes/skins/Hook/PersonalUrlsHook.php',
'MediaWiki\\Hook\\PostLoginRedirectHook' => __DIR__ . '/includes/specials/Hook/PostLoginRedirectHook.php',
'MediaWiki\\Hook\\PreferencesGetIconHook' => __DIR__ . '/includes/Hook/PreferencesGetIconHook.php',
'MediaWiki\\Hook\\PreferencesGetLayoutHook' => __DIR__ . '/includes/Hook/PreferencesGetLayoutHook.php',
'MediaWiki\\Hook\\PreferencesGetLegendHook' => __DIR__ . '/includes/specials/Hook/PreferencesGetLegendHook.php',
'MediaWiki\\Hook\\PrefsEmailAuditHook' => __DIR__ . '/includes/specials/Hook/PrefsEmailAuditHook.php',
'MediaWiki\\Hook\\ProtectionFormAddFormFieldsHook' => __DIR__ . '/includes/Hook/ProtectionFormAddFormFieldsHook.php',
'MediaWiki\\Hook\\ProtectionForm__buildFormHook' => __DIR__ . '/includes/Hook/ProtectionForm__buildFormHook.php',
'MediaWiki\\Hook\\ProtectionForm__saveHook' => __DIR__ . '/includes/Hook/ProtectionForm__saveHook.php',
'MediaWiki\\Hook\\ProtectionForm__showLogExtractHook' => __DIR__ . '/includes/Hook/ProtectionForm__showLogExtractHook.php',
'MediaWiki\\Hook\\RandomPageQueryHook' => __DIR__ . '/includes/specials/Hook/RandomPageQueryHook.php',
'MediaWiki\\Hook\\RawPageViewBeforeOutputHook' => __DIR__ . '/includes/actions/Hook/RawPageViewBeforeOutputHook.php',
'MediaWiki\\Hook\\RecentChange_saveHook' => __DIR__ . '/includes/changes/Hook/RecentChange_saveHook.php',
'MediaWiki\\Hook\\RecentChangesPurgeRowsHook' => __DIR__ . '/includes/jobqueue/jobs/Hook/RecentChangesPurgeRowsHook.php',
'MediaWiki\\Hook\\RejectParserCacheValueHook' => __DIR__ . '/includes/parser/Hook/RejectParserCacheValueHook.php',
'MediaWiki\\Hook\\RequestContextCreateSkinHook' => __DIR__ . '/includes/context/Hook/RequestContextCreateSkinHook.php',
'MediaWiki\\Hook\\SelfLinkBeginHook' => __DIR__ . '/includes/Hook/SelfLinkBeginHook.php',
'MediaWiki\\Hook\\SendWatchlistEmailNotificationHook' => __DIR__ . '/includes/mail/Hook/SendWatchlistEmailNotificationHook.php',
'MediaWiki\\Hook\\SetupAfterCacheHook' => __DIR__ . '/includes/Hook/SetupAfterCacheHook.php',
'MediaWiki\\Hook\\ShortPagesQueryHook' => __DIR__ . '/includes/specials/Hook/ShortPagesQueryHook.php',
'MediaWiki\\Hook\\SidebarBeforeOutputHook' => __DIR__ . '/includes/skins/Hook/SidebarBeforeOutputHook.php',
'MediaWiki\\Hook\\SiteNoticeAfterHook' => __DIR__ . '/includes/skins/Hook/SiteNoticeAfterHook.php',
'MediaWiki\\Hook\\SiteNoticeBeforeHook' => __DIR__ . '/includes/skins/Hook/SiteNoticeBeforeHook.php',
'MediaWiki\\Hook\\SkinAddFooterLinksHook' => __DIR__ . '/includes/skins/Hook/SkinAddFooterLinksHook.php',
'MediaWiki\\Hook\\SkinAfterBottomScriptsHook' => __DIR__ . '/includes/skins/Hook/SkinAfterBottomScriptsHook.php',
'MediaWiki\\Hook\\SkinAfterContentHook' => __DIR__ . '/includes/skins/Hook/SkinAfterContentHook.php',
'MediaWiki\\Hook\\SkinBuildSidebarHook' => __DIR__ . '/includes/skins/Hook/SkinBuildSidebarHook.php',
'MediaWiki\\Hook\\SkinCopyrightFooterHook' => __DIR__ . '/includes/skins/Hook/SkinCopyrightFooterHook.php',
'MediaWiki\\Hook\\SkinEditSectionLinksHook' => __DIR__ . '/includes/skins/Hook/SkinEditSectionLinksHook.php',
'MediaWiki\\Hook\\SkinPreloadExistenceHook' => __DIR__ . '/includes/skins/Hook/SkinPreloadExistenceHook.php',
'MediaWiki\\Hook\\SkinSubPageSubtitleHook' => __DIR__ . '/includes/skins/Hook/SkinSubPageSubtitleHook.php',
'MediaWiki\\Hook\\SkinTemplateGetLanguageLinkHook' => __DIR__ . '/includes/skins/Hook/SkinTemplateGetLanguageLinkHook.php',
'MediaWiki\\Hook\\SkinTemplateNavigationHook' => __DIR__ . '/includes/skins/Hook/SkinTemplateNavigationHook.php',
'MediaWiki\\Hook\\SkinTemplateNavigation__SpecialPageHook' => __DIR__ . '/includes/skins/Hook/SkinTemplateNavigation__SpecialPageHook.php',
'MediaWiki\\Hook\\SkinTemplateNavigation__UniversalHook' => __DIR__ . '/includes/skins/Hook/SkinTemplateNavigation__UniversalHook.php',
'MediaWiki\\Hook\\SoftwareInfoHook' => __DIR__ . '/includes/specials/Hook/SoftwareInfoHook.php',
'MediaWiki\\Hook\\SpecialBlockModifyFormFieldsHook' => __DIR__ . '/includes/specials/Hook/SpecialBlockModifyFormFieldsHook.php',
'MediaWiki\\Hook\\SpecialContributionsBeforeMainOutputHook' => __DIR__ . '/includes/specials/Hook/SpecialContributionsBeforeMainOutputHook.php',
'MediaWiki\\Hook\\SpecialContributions__formatRow__flagsHook' => __DIR__ . '/includes/specials/Hook/SpecialContributions__formatRow__flagsHook.php',
'MediaWiki\\Hook\\SpecialContributions__getForm__filtersHook' => __DIR__ . '/includes/specials/Hook/SpecialContributions__getForm__filtersHook.php',
'MediaWiki\\Hook\\SpecialCreateAccountBenefitsHook' => __DIR__ . '/includes/specials/Hook/SpecialCreateAccountBenefitsHook.php',
'MediaWiki\\Hook\\SpecialExportGetExtraPagesHook' => __DIR__ . '/includes/specials/Hook/SpecialExportGetExtraPagesHook.php',
'MediaWiki\\Hook\\SpecialListusersDefaultQueryHook' => __DIR__ . '/includes/specials/Hook/SpecialListusersDefaultQueryHook.php',
'MediaWiki\\Hook\\SpecialListusersFormatRowHook' => __DIR__ . '/includes/specials/Hook/SpecialListusersFormatRowHook.php',
'MediaWiki\\Hook\\SpecialListusersHeaderFormHook' => __DIR__ . '/includes/specials/Hook/SpecialListusersHeaderFormHook.php',
'MediaWiki\\Hook\\SpecialListusersHeaderHook' => __DIR__ . '/includes/specials/Hook/SpecialListusersHeaderHook.php',
'MediaWiki\\Hook\\SpecialListusersQueryInfoHook' => __DIR__ . '/includes/specials/Hook/SpecialListusersQueryInfoHook.php',
'MediaWiki\\Hook\\SpecialLogAddLogSearchRelationsHook' => __DIR__ . '/includes/specials/Hook/SpecialLogAddLogSearchRelationsHook.php',
'MediaWiki\\Hook\\SpecialMovepageAfterMoveHook' => __DIR__ . '/includes/specials/Hook/SpecialMovepageAfterMoveHook.php',
'MediaWiki\\Hook\\SpecialMuteModifyFormFieldsHook' => __DIR__ . '/includes/specials/Hook/SpecialMuteModifyFormFieldsHook.php',
'MediaWiki\\Hook\\SpecialMuteSubmitHook' => __DIR__ . '/includes/specials/Hook/SpecialMuteSubmitHook.php',
'MediaWiki\\Hook\\SpecialNewPagesFiltersHook' => __DIR__ . '/includes/specials/Hook/SpecialNewPagesFiltersHook.php',
'MediaWiki\\Hook\\SpecialNewpagesConditionsHook' => __DIR__ . '/includes/specials/Hook/SpecialNewpagesConditionsHook.php',
'MediaWiki\\Hook\\SpecialRandomGetRandomTitleHook' => __DIR__ . '/includes/specials/Hook/SpecialRandomGetRandomTitleHook.php',
'MediaWiki\\Hook\\SpecialRecentChangesPanelHook' => __DIR__ . '/includes/specials/Hook/SpecialRecentChangesPanelHook.php',
'MediaWiki\\Hook\\SpecialResetTokensTokensHook' => __DIR__ . '/includes/specials/Hook/SpecialResetTokensTokensHook.php',
'MediaWiki\\Hook\\SpecialSearchCreateLinkHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchCreateLinkHook.php',
'MediaWiki\\Hook\\SpecialSearchGoResultHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchGoResultHook.php',
'MediaWiki\\Hook\\SpecialSearchNogomatchHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchNogomatchHook.php',
'MediaWiki\\Hook\\SpecialSearchProfilesHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchProfilesHook.php',
'MediaWiki\\Hook\\SpecialSearchResultsAppendHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchResultsAppendHook.php',
'MediaWiki\\Hook\\SpecialSearchResultsHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchResultsHook.php',
'MediaWiki\\Hook\\SpecialSearchResultsPrependHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchResultsPrependHook.php',
'MediaWiki\\Hook\\SpecialSearchSetupEngineHook' => __DIR__ . '/includes/specials/Hook/SpecialSearchSetupEngineHook.php',
'MediaWiki\\Hook\\SpecialStatsAddExtraHook' => __DIR__ . '/includes/specials/Hook/SpecialStatsAddExtraHook.php',
'MediaWiki\\Hook\\SpecialTrackingCategories__generateCatLinkHook' => __DIR__ . '/includes/specials/Hook/SpecialTrackingCategories__generateCatLinkHook.php',
'MediaWiki\\Hook\\SpecialTrackingCategories__preprocessHook' => __DIR__ . '/includes/specials/Hook/SpecialTrackingCategories__preprocessHook.php',
'MediaWiki\\Hook\\SpecialUploadCompleteHook' => __DIR__ . '/includes/specials/Hook/SpecialUploadCompleteHook.php',
'MediaWiki\\Hook\\SpecialVersionVersionUrlHook' => __DIR__ . '/includes/specials/Hook/SpecialVersionVersionUrlHook.php',
'MediaWiki\\Hook\\SpecialWatchlistGetNonRevisionTypesHook' => __DIR__ . '/includes/specials/Hook/SpecialWatchlistGetNonRevisionTypesHook.php',
'MediaWiki\\Hook\\TempUserCreatedRedirectHook' => __DIR__ . '/includes/Hook/TempUserCreatedRedirectHook.php',
'MediaWiki\\Hook\\TestCanonicalRedirectHook' => __DIR__ . '/includes/Hook/TestCanonicalRedirectHook.php',
'MediaWiki\\Hook\\ThumbnailBeforeProduceHTMLHook' => __DIR__ . '/includes/media/Hook/ThumbnailBeforeProduceHTMLHook.php',
'MediaWiki\\Hook\\TitleExistsHook' => __DIR__ . '/includes/Hook/TitleExistsHook.php',
'MediaWiki\\Hook\\TitleGetEditNoticesHook' => __DIR__ . '/includes/Hook/TitleGetEditNoticesHook.php',
'MediaWiki\\Hook\\TitleGetRestrictionTypesHook' => __DIR__ . '/includes/Hook/TitleGetRestrictionTypesHook.php',
'MediaWiki\\Hook\\TitleIsAlwaysKnownHook' => __DIR__ . '/includes/Hook/TitleIsAlwaysKnownHook.php',
'MediaWiki\\Hook\\TitleIsMovableHook' => __DIR__ . '/includes/Hook/TitleIsMovableHook.php',
'MediaWiki\\Hook\\TitleMoveHook' => __DIR__ . '/includes/Hook/TitleMoveHook.php',
'MediaWiki\\Hook\\TitleMoveStartingHook' => __DIR__ . '/includes/Hook/TitleMoveStartingHook.php',
'MediaWiki\\Hook\\TitleSquidURLsHook' => __DIR__ . '/includes/Hook/TitleSquidURLsHook.php',
'MediaWiki\\Hook\\UnblockUserCompleteHook' => __DIR__ . '/includes/specials/Hook/UnblockUserCompleteHook.php',
'MediaWiki\\Hook\\UnblockUserHook' => __DIR__ . '/includes/specials/Hook/UnblockUserHook.php',
'MediaWiki\\Hook\\UndeleteForm__showHistoryHook' => __DIR__ . '/includes/specials/Hook/UndeleteForm__showHistoryHook.php',
'MediaWiki\\Hook\\UndeleteForm__showRevisionHook' => __DIR__ . '/includes/specials/Hook/UndeleteForm__showRevisionHook.php',
'MediaWiki\\Hook\\UndeletePageToolLinksHook' => __DIR__ . '/includes/skins/Hook/UndeletePageToolLinksHook.php',
'MediaWiki\\Hook\\UnitTestsAfterDatabaseSetupHook' => __DIR__ . '/includes/Hook/UnitTestsAfterDatabaseSetupHook.php',
'MediaWiki\\Hook\\UnitTestsBeforeDatabaseTeardownHook' => __DIR__ . '/includes/Hook/UnitTestsBeforeDatabaseTeardownHook.php',
'MediaWiki\\Hook\\UnitTestsListHook' => __DIR__ . '/includes/Hook/UnitTestsListHook.php',
'MediaWiki\\Hook\\UnwatchArticleCompleteHook' => __DIR__ . '/includes/actions/Hook/UnwatchArticleCompleteHook.php',
'MediaWiki\\Hook\\UnwatchArticleHook' => __DIR__ . '/includes/actions/Hook/UnwatchArticleHook.php',
'MediaWiki\\Hook\\UpdateUserMailerFormattedPageStatusHook' => __DIR__ . '/includes/mail/Hook/UpdateUserMailerFormattedPageStatusHook.php',
'MediaWiki\\Hook\\UploadCompleteHook' => __DIR__ . '/includes/upload/Hook/UploadCompleteHook.php',
'MediaWiki\\Hook\\UploadCreateFromRequestHook' => __DIR__ . '/includes/upload/Hook/UploadCreateFromRequestHook.php',
'MediaWiki\\Hook\\UploadFormInitDescriptorHook' => __DIR__ . '/includes/specials/Hook/UploadFormInitDescriptorHook.php',
'MediaWiki\\Hook\\UploadFormSourceDescriptorsHook' => __DIR__ . '/includes/specials/Hook/UploadFormSourceDescriptorsHook.php',
'MediaWiki\\Hook\\UploadForm_BeforeProcessingHook' => __DIR__ . '/includes/specials/Hook/UploadForm_BeforeProcessingHook.php',
'MediaWiki\\Hook\\UploadForm_getInitialPageTextHook' => __DIR__ . '/includes/specials/Hook/UploadForm_getInitialPageTextHook.php',
'MediaWiki\\Hook\\UploadForm_initialHook' => __DIR__ . '/includes/specials/Hook/UploadForm_initialHook.php',
'MediaWiki\\Hook\\UploadStashFileHook' => __DIR__ . '/includes/upload/Hook/UploadStashFileHook.php',
'MediaWiki\\Hook\\UploadVerifyFileHook' => __DIR__ . '/includes/upload/Hook/UploadVerifyFileHook.php',
'MediaWiki\\Hook\\UploadVerifyUploadHook' => __DIR__ . '/includes/upload/Hook/UploadVerifyUploadHook.php',
'MediaWiki\\Hook\\UserEditCountUpdateHook' => __DIR__ . '/includes/deferred/Hook/UserEditCountUpdateHook.php',
'MediaWiki\\Hook\\UserGetLanguageObjectHook' => __DIR__ . '/includes/context/Hook/UserGetLanguageObjectHook.php',
'MediaWiki\\Hook\\UserLoginCompleteHook' => __DIR__ . '/includes/specials/Hook/UserLoginCompleteHook.php',
'MediaWiki\\Hook\\UserLogoutCompleteHook' => __DIR__ . '/includes/specials/Hook/UserLogoutCompleteHook.php',
'MediaWiki\\Hook\\UserMailerChangeReturnPathHook' => __DIR__ . '/includes/mail/Hook/UserMailerChangeReturnPathHook.php',
'MediaWiki\\Hook\\UserMailerSplitToHook' => __DIR__ . '/includes/mail/Hook/UserMailerSplitToHook.php',
'MediaWiki\\Hook\\UserMailerTransformContentHook' => __DIR__ . '/includes/mail/Hook/UserMailerTransformContentHook.php',
'MediaWiki\\Hook\\UserMailerTransformMessageHook' => __DIR__ . '/includes/mail/Hook/UserMailerTransformMessageHook.php',
'MediaWiki\\Hook\\UserToolLinksEditHook' => __DIR__ . '/includes/Hook/UserToolLinksEditHook.php',
'MediaWiki\\Hook\\UsersPagerDoBatchLookupsHook' => __DIR__ . '/includes/specials/Hook/UsersPagerDoBatchLookupsHook.php',
'MediaWiki\\Hook\\ValidateExtendedMetadataCacheHook' => __DIR__ . '/includes/media/Hook/ValidateExtendedMetadataCacheHook.php',
'MediaWiki\\Hook\\WantedPages__getQueryInfoHook' => __DIR__ . '/includes/specials/Hook/WantedPages__getQueryInfoHook.php',
'MediaWiki\\Hook\\WatchArticleCompleteHook' => __DIR__ . '/includes/actions/Hook/WatchArticleCompleteHook.php',
'MediaWiki\\Hook\\WatchArticleHook' => __DIR__ . '/includes/actions/Hook/WatchArticleHook.php',
'MediaWiki\\Hook\\WatchedItemQueryServiceExtensionsHook' => __DIR__ . '/includes/watcheditem/Hook/WatchedItemQueryServiceExtensionsHook.php',
'MediaWiki\\Hook\\WatchlistEditorBeforeFormRenderHook' => __DIR__ . '/includes/specials/Hook/WatchlistEditorBeforeFormRenderHook.php',
'MediaWiki\\Hook\\WatchlistEditorBuildRemoveLineHook' => __DIR__ . '/includes/specials/Hook/WatchlistEditorBuildRemoveLineHook.php',
'MediaWiki\\Hook\\WebRequestPathInfoRouterHook' => __DIR__ . '/includes/Hook/WebRequestPathInfoRouterHook.php',
'MediaWiki\\Hook\\WebResponseSetCookieHook' => __DIR__ . '/includes/Hook/WebResponseSetCookieHook.php',
'MediaWiki\\Hook\\WhatLinksHerePropsHook' => __DIR__ . '/includes/specials/Hook/WhatLinksHerePropsHook.php',
'MediaWiki\\Hook\\WikiExporter__dumpStableQueryHook' => __DIR__ . '/includes/export/Hook/WikiExporter__dumpStableQueryHook.php',
'MediaWiki\\Hook\\XmlDumpWriterOpenPageHook' => __DIR__ . '/includes/export/Hook/XmlDumpWriterOpenPageHook.php',
'MediaWiki\\Hook\\XmlDumpWriterWriteRevisionHook' => __DIR__ . '/includes/export/Hook/XmlDumpWriterWriteRevisionHook.php',
'MediaWiki\\HtmlHelper' => __DIR__ . '/includes/HtmlHelper.php',
'MediaWiki\\Http\\HttpRequestFactory' => __DIR__ . '/includes/http/HttpRequestFactory.php',
'MediaWiki\\Http\\MwHttpRequestToResponseInterfaceAdapter' => __DIR__ . '/includes/http/MwHttpRequestToResponseInterfaceAdapter.php',
'MediaWiki\\Installer\\Hook\\LoadExtensionSchemaUpdatesHook' => __DIR__ . '/includes/installer/Hook/LoadExtensionSchemaUpdatesHook.php',
'MediaWiki\\Installer\\InstallException' => __DIR__ . '/includes/installer/InstallException.php',
'MediaWiki\\Interwiki\\ClassicInterwikiLookup' => __DIR__ . '/includes/interwiki/ClassicInterwikiLookup.php',
'MediaWiki\\Interwiki\\Hook\\InterwikiLoadPrefixHook' => __DIR__ . '/includes/interwiki/Hook/InterwikiLoadPrefixHook.php',
'MediaWiki\\Interwiki\\InterwikiLookup' => __DIR__ . '/includes/interwiki/InterwikiLookup.php',
'MediaWiki\\Interwiki\\InterwikiLookupAdapter' => __DIR__ . '/includes/interwiki/InterwikiLookupAdapter.php',
'MediaWiki\\Interwiki\\NullInterwikiLookup' => __DIR__ . '/includes/interwiki/NullInterwikiLookup.php',
'MediaWiki\\JobQueue\\JobFactory' => __DIR__ . '/includes/jobqueue/JobFactory.php',
'MediaWiki\\JobQueue\\JobQueueGroupFactory' => __DIR__ . '/includes/jobqueue/JobQueueGroupFactory.php',
'MediaWiki\\Json\\JsonCodec' => __DIR__ . '/includes/json/JsonCodec.php',
'MediaWiki\\Json\\JsonConstants' => __DIR__ . '/includes/json/JsonConstants.php',
'MediaWiki\\Json\\JsonSerializer' => __DIR__ . '/includes/json/JsonSerializer.php',
'MediaWiki\\Json\\JsonUnserializable' => __DIR__ . '/includes/json/JsonUnserializable.php',
'MediaWiki\\Json\\JsonUnserializableTrait' => __DIR__ . '/includes/json/JsonUnserializableTrait.php',
'MediaWiki\\Json\\JsonUnserializer' => __DIR__ . '/includes/json/JsonUnserializer.php',
'MediaWiki\\Language\\RawMessage' => __DIR__ . '/includes/language/RawMessage.php',
'MediaWiki\\Languages\\Data\\CrhExceptions' => __DIR__ . '/includes/languages/data/CrhExceptions.php',
'MediaWiki\\Languages\\Data\\Names' => __DIR__ . '/includes/languages/data/Names.php',
'MediaWiki\\Languages\\Data\\NormalizeAr' => __DIR__ . '/includes/languages/data/NormalizeAr.php',
'MediaWiki\\Languages\\Data\\NormalizeMl' => __DIR__ . '/includes/languages/data/NormalizeMl.php',
'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . '/includes/languages/data/ZhConversion.php',
'MediaWiki\\Languages\\Hook\\LanguageGetTranslatedLanguageNamesHook' => __DIR__ . '/includes/language/Hook/LanguageGetTranslatedLanguageNamesHook.php',
'MediaWiki\\Languages\\Hook\\Language__getMessagesFileNameHook' => __DIR__ . '/includes/language/Hook/Language__getMessagesFileNameHook.php',
'MediaWiki\\Languages\\LanguageConverterFactory' => __DIR__ . '/includes/language/LanguageConverterFactory.php',
'MediaWiki\\Languages\\LanguageFactory' => __DIR__ . '/includes/language/LanguageFactory.php',
'MediaWiki\\Languages\\LanguageFallback' => __DIR__ . '/includes/language/LanguageFallback.php',
'MediaWiki\\Languages\\LanguageNameUtils' => __DIR__ . '/includes/language/LanguageNameUtils.php',
'MediaWiki\\Linker\\DummyLinker' => __DIR__ . '/includes/linker/DummyLinker.php',
'MediaWiki\\Linker\\Hook\\HtmlPageLinkRendererBeginHook' => __DIR__ . '/includes/linker/Hook/HtmlPageLinkRendererBeginHook.php',
'MediaWiki\\Linker\\Hook\\HtmlPageLinkRendererEndHook' => __DIR__ . '/includes/linker/Hook/HtmlPageLinkRendererEndHook.php',
'MediaWiki\\Linker\\Hook\\LinkerGenerateRollbackLinkHook' => __DIR__ . '/includes/linker/Hook/LinkerGenerateRollbackLinkHook.php',
'MediaWiki\\Linker\\LinkRenderer' => __DIR__ . '/includes/linker/LinkRenderer.php',
'MediaWiki\\Linker\\LinkRendererFactory' => __DIR__ . '/includes/linker/LinkRendererFactory.php',
'MediaWiki\\Linker\\LinkTarget' => __DIR__ . '/includes/linker/LinkTarget.php',
'MediaWiki\\Linker\\LinkTargetLookup' => __DIR__ . '/includes/linker/LinkTargetLookup.php',
'MediaWiki\\Linker\\LinkTargetStore' => __DIR__ . '/includes/linker/LinkTargetStore.php',
'MediaWiki\\Linker\\Linker' => __DIR__ . '/includes/linker/Linker.php',
'MediaWiki\\Linker\\LinksMigration' => __DIR__ . '/includes/linker/LinksMigration.php',
'MediaWiki\\Logger\\ConsoleLogger' => __DIR__ . '/includes/debug/logger/ConsoleLogger.php',
'MediaWiki\\Logger\\ConsoleSpi' => __DIR__ . '/includes/debug/logger/ConsoleSpi.php',
'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
'MediaWiki\\Logger\\LogCapturingSpi' => __DIR__ . '/includes/debug/logger/LogCapturingSpi.php',
'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
'MediaWiki\\Logger\\MonologSpi' => __DIR__ . '/includes/debug/logger/MonologSpi.php',
'MediaWiki\\Logger\\Monolog\\BufferHandler' => __DIR__ . '/includes/debug/logger/monolog/BufferHandler.php',
'MediaWiki\\Logger\\Monolog\\CeeFormatter' => __DIR__ . '/includes/debug/logger/monolog/CeeFormatter.php',
'MediaWiki\\Logger\\Monolog\\LegacyFormatter' => __DIR__ . '/includes/debug/logger/monolog/LegacyFormatter.php',
'MediaWiki\\Logger\\Monolog\\LegacyHandler' => __DIR__ . '/includes/debug/logger/monolog/LegacyHandler.php',
'MediaWiki\\Logger\\Monolog\\LineFormatter' => __DIR__ . '/includes/debug/logger/monolog/LineFormatter.php',
'MediaWiki\\Logger\\Monolog\\LogstashFormatter' => __DIR__ . '/includes/debug/logger/monolog/LogstashFormatter.php',
'MediaWiki\\Logger\\Monolog\\MwlogHandler' => __DIR__ . '/includes/debug/logger/monolog/MwlogHandler.php',
'MediaWiki\\Logger\\Monolog\\SyslogHandler' => __DIR__ . '/includes/debug/logger/monolog/SyslogHandler.php',
'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
'MediaWiki\\Mail\\Emailer' => __DIR__ . '/includes/mail/Emailer.php',
'MediaWiki\\Mail\\IEmailer' => __DIR__ . '/includes/mail/IEmailer.php',
'MediaWiki\\Mail\\UserEmailContact' => __DIR__ . '/includes/mail/UserEmailContact.php',
'MediaWiki\\MainConfigNames' => __DIR__ . '/includes/MainConfigNames.php',
'MediaWiki\\MainConfigSchema' => __DIR__ . '/includes/MainConfigSchema.php',
'MediaWiki\\Maintenance\\ForkController' => __DIR__ . '/includes/Maintenance/ForkController.php',
'MediaWiki\\Maintenance\\MaintenanceParameters' => __DIR__ . '/maintenance/includes/MaintenanceParameters.php',
'MediaWiki\\Maintenance\\MaintenanceRunner' => __DIR__ . '/maintenance/includes/MaintenanceRunner.php',
'MediaWiki\\Maintenance\\OrderedStreamingForkController' => __DIR__ . '/includes/Maintenance/OrderedStreamingForkController.php',
'MediaWiki\\Maintenance\\UndoLog' => __DIR__ . '/includes/Maintenance/UndoLog.php',
'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
'MediaWiki\\Message\\Converter' => __DIR__ . '/includes/Message/Converter.php',
'MediaWiki\\Message\\MessageFormatterFactory' => __DIR__ . '/includes/Message/MessageFormatterFactory.php',
'MediaWiki\\Message\\TextFormatter' => __DIR__ . '/includes/Message/TextFormatter.php',
'MediaWiki\\Message\\UserGroupMembershipParam' => __DIR__ . '/includes/Message/UserGroupMembershipParam.php',
'MediaWiki\\Navigation\\PagerNavigationBuilder' => __DIR__ . '/includes/Navigation/PagerNavigationBuilder.php',
'MediaWiki\\Navigation\\PrevNextNavigationRenderer' => __DIR__ . '/includes/Navigation/PrevNextNavigationRenderer.php',
'MediaWiki\\OutputHandler' => __DIR__ . '/includes/OutputHandler.php',
'MediaWiki\\Page\\ContentModelChangeFactory' => __DIR__ . '/includes/page/ContentModelChangeFactory.php',
'MediaWiki\\Page\\DeletePage' => __DIR__ . '/includes/page/DeletePage.php',
'MediaWiki\\Page\\DeletePageFactory' => __DIR__ . '/includes/page/DeletePageFactory.php',
'MediaWiki\\Page\\ExistingPageRecord' => __DIR__ . '/includes/page/ExistingPageRecord.php',
'MediaWiki\\Page\\Hook\\ArticleConfirmDeleteHook' => __DIR__ . '/includes/page/Hook/ArticleConfirmDeleteHook.php',
'MediaWiki\\Page\\Hook\\ArticleDeleteAfterSuccessHook' => __DIR__ . '/includes/page/Hook/ArticleDeleteAfterSuccessHook.php',
'MediaWiki\\Page\\Hook\\ArticleDeleteCompleteHook' => __DIR__ . '/includes/page/Hook/ArticleDeleteCompleteHook.php',
'MediaWiki\\Page\\Hook\\ArticleDeleteHook' => __DIR__ . '/includes/page/Hook/ArticleDeleteHook.php',
'MediaWiki\\Page\\Hook\\ArticleFromTitleHook' => __DIR__ . '/includes/page/Hook/ArticleFromTitleHook.php',
'MediaWiki\\Page\\Hook\\ArticlePageDataAfterHook' => __DIR__ . '/includes/page/Hook/ArticlePageDataAfterHook.php',
'MediaWiki\\Page\\Hook\\ArticlePageDataBeforeHook' => __DIR__ . '/includes/page/Hook/ArticlePageDataBeforeHook.php',
'MediaWiki\\Page\\Hook\\ArticleParserOptionsHook' => __DIR__ . '/includes/page/Hook/ArticleParserOptionsHook.php',
'MediaWiki\\Page\\Hook\\ArticleProtectCompleteHook' => __DIR__ . '/includes/page/Hook/ArticleProtectCompleteHook.php',
'MediaWiki\\Page\\Hook\\ArticleProtectHook' => __DIR__ . '/includes/page/Hook/ArticleProtectHook.php',
'MediaWiki\\Page\\Hook\\ArticlePurgeHook' => __DIR__ . '/includes/page/Hook/ArticlePurgeHook.php',
'MediaWiki\\Page\\Hook\\ArticleRevisionViewCustomHook' => __DIR__ . '/includes/page/Hook/ArticleRevisionViewCustomHook.php',
'MediaWiki\\Page\\Hook\\ArticleShowPatrolFooterHook' => __DIR__ . '/includes/page/Hook/ArticleShowPatrolFooterHook.php',
'MediaWiki\\Page\\Hook\\ArticleUndeleteHook' => __DIR__ . '/includes/page/Hook/ArticleUndeleteHook.php',
'MediaWiki\\Page\\Hook\\ArticleViewFooterHook' => __DIR__ . '/includes/page/Hook/ArticleViewFooterHook.php',
'MediaWiki\\Page\\Hook\\ArticleViewHeaderHook' => __DIR__ . '/includes/page/Hook/ArticleViewHeaderHook.php',
'MediaWiki\\Page\\Hook\\ArticleViewRedirectHook' => __DIR__ . '/includes/page/Hook/ArticleViewRedirectHook.php',
'MediaWiki\\Page\\Hook\\Article__MissingArticleConditionsHook' => __DIR__ . '/includes/page/Hook/Article__MissingArticleConditionsHook.php',
'MediaWiki\\Page\\Hook\\BeforeDisplayNoArticleTextHook' => __DIR__ . '/includes/page/Hook/BeforeDisplayNoArticleTextHook.php',
'MediaWiki\\Page\\Hook\\CategoryAfterPageAddedHook' => __DIR__ . '/includes/page/Hook/CategoryAfterPageAddedHook.php',
'MediaWiki\\Page\\Hook\\CategoryAfterPageRemovedHook' => __DIR__ . '/includes/page/Hook/CategoryAfterPageRemovedHook.php',
'MediaWiki\\Page\\Hook\\CategoryPageViewHook' => __DIR__ . '/includes/page/Hook/CategoryPageViewHook.php',
'MediaWiki\\Page\\Hook\\DisplayOldSubtitleHook' => __DIR__ . '/includes/page/Hook/DisplayOldSubtitleHook.php',
'MediaWiki\\Page\\Hook\\ImageOpenShowImageInlineBeforeHook' => __DIR__ . '/includes/page/Hook/ImageOpenShowImageInlineBeforeHook.php',
'MediaWiki\\Page\\Hook\\ImagePageAfterImageLinksHook' => __DIR__ . '/includes/page/Hook/ImagePageAfterImageLinksHook.php',
'MediaWiki\\Page\\Hook\\ImagePageFileHistoryLineHook' => __DIR__ . '/includes/page/Hook/ImagePageFileHistoryLineHook.php',
'MediaWiki\\Page\\Hook\\ImagePageFindFileHook' => __DIR__ . '/includes/page/Hook/ImagePageFindFileHook.php',
'MediaWiki\\Page\\Hook\\ImagePageShowTOCHook' => __DIR__ . '/includes/page/Hook/ImagePageShowTOCHook.php',
'MediaWiki\\Page\\Hook\\IsFileCacheableHook' => __DIR__ . '/includes/page/Hook/IsFileCacheableHook.php',
'MediaWiki\\Page\\Hook\\OpportunisticLinksUpdateHook' => __DIR__ . '/includes/page/Hook/OpportunisticLinksUpdateHook.php',
'MediaWiki\\Page\\Hook\\PageDeleteCompleteHook' => __DIR__ . '/includes/page/Hook/PageDeleteCompleteHook.php',
'MediaWiki\\Page\\Hook\\PageDeleteHook' => __DIR__ . '/includes/page/Hook/PageDeleteHook.php',
'MediaWiki\\Page\\Hook\\PageDeletionDataUpdatesHook' => __DIR__ . '/includes/page/Hook/PageDeletionDataUpdatesHook.php',
'MediaWiki\\Page\\Hook\\PageUndeleteHook' => __DIR__ . '/includes/page/Hook/PageUndeleteHook.php',
'MediaWiki\\Page\\Hook\\PageViewUpdatesHook' => __DIR__ . '/includes/page/Hook/PageViewUpdatesHook.php',
'MediaWiki\\Page\\Hook\\RevisionFromEditCompleteHook' => __DIR__ . '/includes/page/Hook/RevisionFromEditCompleteHook.php',
'MediaWiki\\Page\\Hook\\RevisionUndeletedHook' => __DIR__ . '/includes/page/Hook/RevisionUndeletedHook.php',
'MediaWiki\\Page\\Hook\\RollbackCompleteHook' => __DIR__ . '/includes/page/Hook/RollbackCompleteHook.php',
'MediaWiki\\Page\\Hook\\ShowMissingArticleHook' => __DIR__ . '/includes/page/Hook/ShowMissingArticleHook.php',
'MediaWiki\\Page\\Hook\\WikiPageDeletionUpdatesHook' => __DIR__ . '/includes/page/Hook/WikiPageDeletionUpdatesHook.php',
'MediaWiki\\Page\\Hook\\WikiPageFactoryHook' => __DIR__ . '/includes/page/Hook/WikiPageFactoryHook.php',
'MediaWiki\\Page\\LegacyArticleIdAccess' => __DIR__ . '/includes/page/LegacyArticleIdAccess.php',
'MediaWiki\\Page\\MergeHistoryFactory' => __DIR__ . '/includes/page/MergeHistoryFactory.php',
'MediaWiki\\Page\\MovePageFactory' => __DIR__ . '/includes/page/MovePageFactory.php',
'MediaWiki\\Page\\PageAssertionException' => __DIR__ . '/includes/page/PageAssertionException.php',
'MediaWiki\\Page\\PageCommandFactory' => __DIR__ . '/includes/page/PageCommandFactory.php',
'MediaWiki\\Page\\PageIdentity' => __DIR__ . '/includes/page/PageIdentity.php',
'MediaWiki\\Page\\PageIdentityValue' => __DIR__ . '/includes/page/PageIdentityValue.php',
'MediaWiki\\Page\\PageLookup' => __DIR__ . '/includes/page/PageLookup.php',
'MediaWiki\\Page\\PageProps' => __DIR__ . '/includes/page/PageProps.php',
'MediaWiki\\Page\\PageRecord' => __DIR__ . '/includes/page/PageRecord.php',
'MediaWiki\\Page\\PageReference' => __DIR__ . '/includes/page/PageReference.php',
'MediaWiki\\Page\\PageReferenceValue' => __DIR__ . '/includes/page/PageReferenceValue.php',
'MediaWiki\\Page\\PageSelectQueryBuilder' => __DIR__ . '/includes/page/PageSelectQueryBuilder.php',
'MediaWiki\\Page\\PageStore' => __DIR__ . '/includes/page/PageStore.php',
'MediaWiki\\Page\\PageStoreFactory' => __DIR__ . '/includes/page/PageStoreFactory.php',
'MediaWiki\\Page\\PageStoreRecord' => __DIR__ . '/includes/page/PageStoreRecord.php',
'MediaWiki\\Page\\ParserOutputAccess' => __DIR__ . '/includes/page/ParserOutputAccess.php',
'MediaWiki\\Page\\ProperPageIdentity' => __DIR__ . '/includes/page/ProperPageIdentity.php',
'MediaWiki\\Page\\RedirectLookup' => __DIR__ . '/includes/page/RedirectLookup.php',
'MediaWiki\\Page\\RedirectStore' => __DIR__ . '/includes/page/RedirectStore.php',
'MediaWiki\\Page\\RollbackPage' => __DIR__ . '/includes/page/RollbackPage.php',
'MediaWiki\\Page\\RollbackPageFactory' => __DIR__ . '/includes/page/RollbackPageFactory.php',
'MediaWiki\\Page\\UndeletePage' => __DIR__ . '/includes/page/UndeletePage.php',
'MediaWiki\\Page\\UndeletePageFactory' => __DIR__ . '/includes/page/UndeletePageFactory.php',
'MediaWiki\\Page\\WikiPageFactory' => __DIR__ . '/includes/page/WikiPageFactory.php',
'MediaWiki\\ParamValidator\\TypeDef\\NamespaceDef' => __DIR__ . '/includes/ParamValidator/TypeDef/NamespaceDef.php',
'MediaWiki\\ParamValidator\\TypeDef\\TagsDef' => __DIR__ . '/includes/ParamValidator/TypeDef/TagsDef.php',
'MediaWiki\\ParamValidator\\TypeDef\\TitleDef' => __DIR__ . '/includes/ParamValidator/TypeDef/TitleDef.php',
'MediaWiki\\ParamValidator\\TypeDef\\UserDef' => __DIR__ . '/includes/ParamValidator/TypeDef/UserDef.php',
'MediaWiki\\Parser\\MagicWord' => __DIR__ . '/includes/parser/MagicWord.php',
'MediaWiki\\Parser\\MagicWordArray' => __DIR__ . '/includes/parser/MagicWordArray.php',
'MediaWiki\\Parser\\MagicWordFactory' => __DIR__ . '/includes/parser/MagicWordFactory.php',
'MediaWiki\\Parser\\ParserCacheFactory' => __DIR__ . '/includes/parser/ParserCacheFactory.php',
'MediaWiki\\Parser\\ParserCacheMetadata' => __DIR__ . '/includes/parser/ParserCacheMetadata.php',
'MediaWiki\\Parser\\ParserObserver' => __DIR__ . '/includes/parser/ParserObserver.php',
'MediaWiki\\Parser\\ParserOutputFlags' => __DIR__ . '/includes/parser/ParserOutputFlags.php',
'MediaWiki\\Parser\\Parsoid\\Config\\DataAccess' => __DIR__ . '/includes/parser/Parsoid/Config/DataAccess.php',
'MediaWiki\\Parser\\Parsoid\\Config\\PageConfig' => __DIR__ . '/includes/parser/Parsoid/Config/PageConfig.php',
'MediaWiki\\Parser\\Parsoid\\Config\\PageConfigFactory' => __DIR__ . '/includes/parser/Parsoid/Config/PageConfigFactory.php',
'MediaWiki\\Parser\\Parsoid\\Config\\PageContent' => __DIR__ . '/includes/parser/Parsoid/Config/PageContent.php',
'MediaWiki\\Parser\\Parsoid\\Config\\SiteConfig' => __DIR__ . '/includes/parser/Parsoid/Config/SiteConfig.php',
'MediaWiki\\Parser\\Parsoid\\HtmlToContentTransform' => __DIR__ . '/includes/parser/Parsoid/HtmlToContentTransform.php',
'MediaWiki\\Parser\\Parsoid\\HtmlTransformFactory' => __DIR__ . '/includes/parser/Parsoid/HtmlTransformFactory.php',
'MediaWiki\\Parser\\Parsoid\\LanguageVariantConverter' => __DIR__ . '/includes/parser/Parsoid/LanguageVariantConverter.php',
'MediaWiki\\Parser\\Parsoid\\PageBundleJsonTrait' => __DIR__ . '/includes/parser/Parsoid/PageBundleJsonTrait.php',
'MediaWiki\\Parser\\Parsoid\\PageBundleParserOutputConverter' => __DIR__ . '/includes/parser/Parsoid/PageBundleParserOutputConverter.php',
'MediaWiki\\Parser\\Parsoid\\ParsoidOutputAccess' => __DIR__ . '/includes/parser/Parsoid/ParsoidOutputAccess.php',
'MediaWiki\\Parser\\Parsoid\\ParsoidRenderID' => __DIR__ . '/includes/parser/Parsoid/ParsoidRenderID.php',
'MediaWiki\\Parser\\Parsoid\\ParsoidServices' => __DIR__ . '/includes/parser/Parsoid/ParsoidServices.php',
'MediaWiki\\Parser\\RemexRemoveTagHandler' => __DIR__ . '/includes/parser/RemexRemoveTagHandler.php',
'MediaWiki\\Parser\\RemexStripTagHandler' => __DIR__ . '/includes/parser/RemexStripTagHandler.php',
'MediaWiki\\Parser\\RevisionOutputCache' => __DIR__ . '/includes/parser/RevisionOutputCache.php',
'MediaWiki\\Permissions\\Authority' => __DIR__ . '/includes/Permissions/Authority.php',
'MediaWiki\\Permissions\\GrantsInfo' => __DIR__ . '/includes/Permissions/GrantsInfo.php',
'MediaWiki\\Permissions\\GrantsLocalization' => __DIR__ . '/includes/Permissions/GrantsLocalization.php',
'MediaWiki\\Permissions\\GroupPermissionsLookup' => __DIR__ . '/includes/Permissions/GroupPermissionsLookup.php',
'MediaWiki\\Permissions\\Hook\\GetUserPermissionsErrorsExpensiveHook' => __DIR__ . '/includes/Permissions/Hook/GetUserPermissionsErrorsExpensiveHook.php',
'MediaWiki\\Permissions\\Hook\\GetUserPermissionsErrorsHook' => __DIR__ . '/includes/Permissions/Hook/GetUserPermissionsErrorsHook.php',
'MediaWiki\\Permissions\\Hook\\PermissionErrorAuditHook' => __DIR__ . '/includes/Permissions/Hook/PermissionErrorAuditHook.php',
'MediaWiki\\Permissions\\Hook\\TitleQuickPermissionsHook' => __DIR__ . '/includes/Permissions/Hook/TitleQuickPermissionsHook.php',
'MediaWiki\\Permissions\\Hook\\TitleReadWhitelistHook' => __DIR__ . '/includes/Permissions/Hook/TitleReadWhitelistHook.php',
'MediaWiki\\Permissions\\Hook\\UserCanHook' => __DIR__ . '/includes/Permissions/Hook/UserCanHook.php',
'MediaWiki\\Permissions\\Hook\\UserGetAllRightsHook' => __DIR__ . '/includes/Permissions/Hook/UserGetAllRightsHook.php',
'MediaWiki\\Permissions\\Hook\\UserGetRightsHook' => __DIR__ . '/includes/Permissions/Hook/UserGetRightsHook.php',
'MediaWiki\\Permissions\\Hook\\UserGetRightsRemoveHook' => __DIR__ . '/includes/Permissions/Hook/UserGetRightsRemoveHook.php',
'MediaWiki\\Permissions\\Hook\\UserIsBlockedFromHook' => __DIR__ . '/includes/Permissions/Hook/UserIsBlockedFromHook.php',
'MediaWiki\\Permissions\\Hook\\UserIsEveryoneAllowedHook' => __DIR__ . '/includes/Permissions/Hook/UserIsEveryoneAllowedHook.php',
'MediaWiki\\Permissions\\PermissionManager' => __DIR__ . '/includes/Permissions/PermissionManager.php',
'MediaWiki\\Permissions\\PermissionStatus' => __DIR__ . '/includes/Permissions/PermissionStatus.php',
'MediaWiki\\Permissions\\RateLimitSubject' => __DIR__ . '/includes/Permissions/RateLimitSubject.php',
'MediaWiki\\Permissions\\RateLimiter' => __DIR__ . '/includes/Permissions/RateLimiter.php',
'MediaWiki\\Permissions\\RestrictionStore' => __DIR__ . '/includes/Permissions/RestrictionStore.php',
'MediaWiki\\Permissions\\SimpleAuthority' => __DIR__ . '/includes/Permissions/SimpleAuthority.php',
'MediaWiki\\Permissions\\UltimateAuthority' => __DIR__ . '/includes/Permissions/UltimateAuthority.php',
'MediaWiki\\Permissions\\UserAuthority' => __DIR__ . '/includes/Permissions/UserAuthority.php',
'MediaWiki\\PoolCounter\\PoolCounterClient' => __DIR__ . '/includes/poolcounter/PoolCounterClient.php',
'MediaWiki\\PoolCounter\\PoolCounterConnectionManager' => __DIR__ . '/includes/poolcounter/PoolCounterConnectionManager.php',
'MediaWiki\\PoolCounter\\PoolCounterFactory' => __DIR__ . '/includes/poolcounter/PoolCounterFactory.php',
'MediaWiki\\Preferences\\DefaultPreferencesFactory' => __DIR__ . '/includes/preferences/DefaultPreferencesFactory.php',
'MediaWiki\\Preferences\\Filter' => __DIR__ . '/includes/preferences/Filter.php',
'MediaWiki\\Preferences\\Hook\\GetPreferencesHook' => __DIR__ . '/includes/preferences/Hook/GetPreferencesHook.php',
'MediaWiki\\Preferences\\Hook\\PreferencesFormPreSaveHook' => __DIR__ . '/includes/preferences/Hook/PreferencesFormPreSaveHook.php',
'MediaWiki\\Preferences\\IntvalFilter' => __DIR__ . '/includes/preferences/IntvalFilter.php',
'MediaWiki\\Preferences\\MultiTitleFilter' => __DIR__ . '/includes/preferences/MultiTitleFilter.php',
'MediaWiki\\Preferences\\MultiUsernameFilter' => __DIR__ . '/includes/preferences/MultiUsernameFilter.php',
'MediaWiki\\Preferences\\PreferencesFactory' => __DIR__ . '/includes/preferences/PreferencesFactory.php',
'MediaWiki\\Preferences\\SignatureValidator' => __DIR__ . '/includes/preferences/SignatureValidator.php',
'MediaWiki\\Preferences\\SignatureValidatorFactory' => __DIR__ . '/includes/preferences/SignatureValidatorFactory.php',
'MediaWiki\\Preferences\\TimezoneFilter' => __DIR__ . '/includes/preferences/TimezoneFilter.php',
'MediaWiki\\ProcOpenError' => __DIR__ . '/includes/exception/ProcOpenError.php',
'MediaWiki\\Request\\DerivativeRequest' => __DIR__ . '/includes/Request/DerivativeRequest.php',
'MediaWiki\\Request\\FauxRequest' => __DIR__ . '/includes/Request/FauxRequest.php',
'MediaWiki\\Request\\FauxRequestUpload' => __DIR__ . '/includes/Request/FauxRequestUpload.php',
'MediaWiki\\Request\\HeaderCallback' => __DIR__ . '/includes/Request/HeaderCallback.php',
'MediaWiki\\Request\\PathRouter' => __DIR__ . '/includes/Request/PathRouter.php',
'MediaWiki\\Request\\WebRequestUpload' => __DIR__ . '/includes/Request/WebRequestUpload.php',
'MediaWiki\\ResourceLoader\\CircularDependencyError' => __DIR__ . '/includes/ResourceLoader/CircularDependencyError.php',
'MediaWiki\\ResourceLoader\\ClientHtml' => __DIR__ . '/includes/ResourceLoader/ClientHtml.php',
'MediaWiki\\ResourceLoader\\CodexModule' => __DIR__ . '/includes/ResourceLoader/CodexModule.php',
'MediaWiki\\ResourceLoader\\Context' => __DIR__ . '/includes/ResourceLoader/Context.php',
'MediaWiki\\ResourceLoader\\DerivativeContext' => __DIR__ . '/includes/ResourceLoader/DerivativeContext.php',
'MediaWiki\\ResourceLoader\\FileModule' => __DIR__ . '/includes/ResourceLoader/FileModule.php',
'MediaWiki\\ResourceLoader\\FilePath' => __DIR__ . '/includes/ResourceLoader/FilePath.php',
'MediaWiki\\ResourceLoader\\ForeignApiModule' => __DIR__ . '/includes/ResourceLoader/ForeignApiModule.php',
'MediaWiki\\ResourceLoader\\ForeignResourceManager' => __DIR__ . '/includes/ResourceLoader/ForeignResourceManager.php',
'MediaWiki\\ResourceLoader\\HookRunner' => __DIR__ . '/includes/ResourceLoader/HookRunner.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderExcludeUserOptionsHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderExcludeUserOptionsHook.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderForeignApiModulesHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderForeignApiModulesHook.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderGetConfigVarsHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderGetConfigVarsHook.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderJqueryMsgModuleMagicWordsHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderJqueryMsgModuleMagicWordsHook.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderRegisterModulesHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderRegisterModulesHook.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderSiteModulePagesHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderSiteModulePagesHook.php',
'MediaWiki\\ResourceLoader\\Hook\\ResourceLoaderSiteStylesModulePagesHook' => __DIR__ . '/includes/ResourceLoader/Hook/ResourceLoaderSiteStylesModulePagesHook.php',
'MediaWiki\\ResourceLoader\\Image' => __DIR__ . '/includes/ResourceLoader/Image.php',
'MediaWiki\\ResourceLoader\\ImageModule' => __DIR__ . '/includes/ResourceLoader/ImageModule.php',
'MediaWiki\\ResourceLoader\\LanguageDataModule' => __DIR__ . '/includes/ResourceLoader/LanguageDataModule.php',
'MediaWiki\\ResourceLoader\\LessVarFileModule' => __DIR__ . '/includes/ResourceLoader/LessVarFileModule.php',
'MediaWiki\\ResourceLoader\\MessageBlobStore' => __DIR__ . '/includes/ResourceLoader/MessageBlobStore.php',
'MediaWiki\\ResourceLoader\\Module' => __DIR__ . '/includes/ResourceLoader/Module.php',
'MediaWiki\\ResourceLoader\\MwUrlModule' => __DIR__ . '/includes/ResourceLoader/MwUrlModule.php',
'MediaWiki\\ResourceLoader\\OOUIFileModule' => __DIR__ . '/includes/ResourceLoader/OOUIFileModule.php',
'MediaWiki\\ResourceLoader\\OOUIIconPackModule' => __DIR__ . '/includes/ResourceLoader/OOUIIconPackModule.php',
'MediaWiki\\ResourceLoader\\OOUIImageModule' => __DIR__ . '/includes/ResourceLoader/OOUIImageModule.php',
'MediaWiki\\ResourceLoader\\OOUIModule' => __DIR__ . '/includes/ResourceLoader/OOUIModule.php',
'MediaWiki\\ResourceLoader\\ResourceLoader' => __DIR__ . '/includes/ResourceLoader/ResourceLoader.php',
'MediaWiki\\ResourceLoader\\SiteModule' => __DIR__ . '/includes/ResourceLoader/SiteModule.php',
'MediaWiki\\ResourceLoader\\SiteStylesModule' => __DIR__ . '/includes/ResourceLoader/SiteStylesModule.php',
'MediaWiki\\ResourceLoader\\SkinModule' => __DIR__ . '/includes/ResourceLoader/SkinModule.php',
'MediaWiki\\ResourceLoader\\StartUpModule' => __DIR__ . '/includes/ResourceLoader/StartUpModule.php',
'MediaWiki\\ResourceLoader\\UserModule' => __DIR__ . '/includes/ResourceLoader/UserModule.php',
'MediaWiki\\ResourceLoader\\UserOptionsModule' => __DIR__ . '/includes/ResourceLoader/UserOptionsModule.php',
'MediaWiki\\ResourceLoader\\UserStylesModule' => __DIR__ . '/includes/ResourceLoader/UserStylesModule.php',
'MediaWiki\\ResourceLoader\\VueComponentParser' => __DIR__ . '/includes/ResourceLoader/VueComponentParser.php',
'MediaWiki\\ResourceLoader\\WikiModule' => __DIR__ . '/includes/ResourceLoader/WikiModule.php',
'MediaWiki\\Rest\\BasicAccess\\BasicAuthorizerBase' => __DIR__ . '/includes/Rest/BasicAccess/BasicAuthorizerBase.php',
'MediaWiki\\Rest\\BasicAccess\\BasicAuthorizerInterface' => __DIR__ . '/includes/Rest/BasicAccess/BasicAuthorizerInterface.php',
'MediaWiki\\Rest\\BasicAccess\\BasicRequestAuthorizer' => __DIR__ . '/includes/Rest/BasicAccess/BasicRequestAuthorizer.php',
'MediaWiki\\Rest\\BasicAccess\\CompoundAuthorizer' => __DIR__ . '/includes/Rest/BasicAccess/CompoundAuthorizer.php',
'MediaWiki\\Rest\\BasicAccess\\MWBasicAuthorizer' => __DIR__ . '/includes/Rest/BasicAccess/MWBasicAuthorizer.php',
'MediaWiki\\Rest\\BasicAccess\\MWBasicRequestAuthorizer' => __DIR__ . '/includes/Rest/BasicAccess/MWBasicRequestAuthorizer.php',
'MediaWiki\\Rest\\BasicAccess\\StaticBasicAuthorizer' => __DIR__ . '/includes/Rest/BasicAccess/StaticBasicAuthorizer.php',
'MediaWiki\\Rest\\ConditionalHeaderUtil' => __DIR__ . '/includes/Rest/ConditionalHeaderUtil.php',
'MediaWiki\\Rest\\CopyableStreamInterface' => __DIR__ . '/includes/Rest/CopyableStreamInterface.php',
'MediaWiki\\Rest\\CorsUtils' => __DIR__ . '/includes/Rest/CorsUtils.php',
'MediaWiki\\Rest\\EntryPoint' => __DIR__ . '/includes/Rest/EntryPoint.php',
'MediaWiki\\Rest\\Handler' => __DIR__ . '/includes/Rest/Handler.php',
'MediaWiki\\Rest\\Handler\\AbstractContributionHandler' => __DIR__ . '/includes/Rest/Handler/AbstractContributionHandler.php',
'MediaWiki\\Rest\\Handler\\ActionModuleBasedHandler' => __DIR__ . '/includes/Rest/Handler/ActionModuleBasedHandler.php',
'MediaWiki\\Rest\\Handler\\CompareHandler' => __DIR__ . '/includes/Rest/Handler/CompareHandler.php',
'MediaWiki\\Rest\\Handler\\ContributionsCountHandler' => __DIR__ . '/includes/Rest/Handler/ContributionsCountHandler.php',
'MediaWiki\\Rest\\Handler\\CreationHandler' => __DIR__ . '/includes/Rest/Handler/CreationHandler.php',
'MediaWiki\\Rest\\Handler\\EditHandler' => __DIR__ . '/includes/Rest/Handler/EditHandler.php',
'MediaWiki\\Rest\\Handler\\Helper\\HtmlInputTransformHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlInputTransformHelper.php',
'MediaWiki\\Rest\\Handler\\Helper\\HtmlMessageOutputHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlMessageOutputHelper.php',
'MediaWiki\\Rest\\Handler\\Helper\\HtmlOutputHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlOutputHelper.php',
'MediaWiki\\Rest\\Handler\\Helper\\HtmlOutputRendererHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php',
'MediaWiki\\Rest\\Handler\\Helper\\PageContentHelper' => __DIR__ . '/includes/Rest/Handler/Helper/PageContentHelper.php',
'MediaWiki\\Rest\\Handler\\Helper\\PageRestHelperFactory' => __DIR__ . '/includes/Rest/Handler/Helper/PageRestHelperFactory.php',
'MediaWiki\\Rest\\Handler\\Helper\\ParsoidFormatHelper' => __DIR__ . '/includes/Rest/Handler/Helper/ParsoidFormatHelper.php',
'MediaWiki\\Rest\\Handler\\Helper\\RevisionContentHelper' => __DIR__ . '/includes/Rest/Handler/Helper/RevisionContentHelper.php',
'MediaWiki\\Rest\\Handler\\HtmlInputTransformHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlInputTransformHelper.php',
'MediaWiki\\Rest\\Handler\\HtmlOutputHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlMessageOutputHelper.php',
'MediaWiki\\Rest\\Handler\\HtmlOutputRendererHelper' => __DIR__ . '/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php',
'MediaWiki\\Rest\\Handler\\LanguageLinksHandler' => __DIR__ . '/includes/Rest/Handler/LanguageLinksHandler.php',
'MediaWiki\\Rest\\Handler\\MediaFileHandler' => __DIR__ . '/includes/Rest/Handler/MediaFileHandler.php',
'MediaWiki\\Rest\\Handler\\MediaLinksHandler' => __DIR__ . '/includes/Rest/Handler/MediaLinksHandler.php',
'MediaWiki\\Rest\\Handler\\PageContentHelper' => __DIR__ . '/includes/Rest/Handler/Helper/PageContentHelper.php',
'MediaWiki\\Rest\\Handler\\PageHTMLHandler' => __DIR__ . '/includes/Rest/Handler/PageHTMLHandler.php',
'MediaWiki\\Rest\\Handler\\PageHistoryCountHandler' => __DIR__ . '/includes/Rest/Handler/PageHistoryCountHandler.php',
'MediaWiki\\Rest\\Handler\\PageHistoryHandler' => __DIR__ . '/includes/Rest/Handler/PageHistoryHandler.php',
'MediaWiki\\Rest\\Handler\\PageRedirectHandlerTrait' => __DIR__ . '/includes/Rest/Handler/PageRedirectHandlerTrait.php',
'MediaWiki\\Rest\\Handler\\PageRestHelperFactory' => __DIR__ . '/includes/Rest/Handler/Helper/PageRestHelperFactory.php',
'MediaWiki\\Rest\\Handler\\PageSourceHandler' => __DIR__ . '/includes/Rest/Handler/PageSourceHandler.php',
'MediaWiki\\Rest\\Handler\\ParsoidFormatHelper' => __DIR__ . '/includes/Rest/Handler/Helper/ParsoidFormatHelper.php',
'MediaWiki\\Rest\\Handler\\ParsoidHandler' => __DIR__ . '/includes/Rest/Handler/ParsoidHandler.php',
'MediaWiki\\Rest\\Handler\\RevisionContentHelper' => __DIR__ . '/includes/Rest/Handler/Helper/RevisionContentHelper.php',
'MediaWiki\\Rest\\Handler\\RevisionHTMLHandler' => __DIR__ . '/includes/Rest/Handler/RevisionHTMLHandler.php',
'MediaWiki\\Rest\\Handler\\RevisionSourceHandler' => __DIR__ . '/includes/Rest/Handler/RevisionSourceHandler.php',
'MediaWiki\\Rest\\Handler\\SearchHandler' => __DIR__ . '/includes/Rest/Handler/SearchHandler.php',
'MediaWiki\\Rest\\Handler\\TransformHandler' => __DIR__ . '/includes/Rest/Handler/TransformHandler.php',
'MediaWiki\\Rest\\Handler\\UpdateHandler' => __DIR__ . '/includes/Rest/Handler/UpdateHandler.php',
'MediaWiki\\Rest\\Handler\\UserContributionsHandler' => __DIR__ . '/includes/Rest/Handler/UserContributionsHandler.php',
'MediaWiki\\Rest\\HeaderContainer' => __DIR__ . '/includes/Rest/HeaderContainer.php',
'MediaWiki\\Rest\\HeaderParser\\HeaderParserBase' => __DIR__ . '/includes/Rest/HeaderParser/HeaderParserBase.php',
'MediaWiki\\Rest\\HeaderParser\\HeaderParserError' => __DIR__ . '/includes/Rest/HeaderParser/HeaderParserError.php',
'MediaWiki\\Rest\\HeaderParser\\HttpDate' => __DIR__ . '/includes/Rest/HeaderParser/HttpDate.php',
'MediaWiki\\Rest\\HeaderParser\\IfNoneMatch' => __DIR__ . '/includes/Rest/HeaderParser/IfNoneMatch.php',
'MediaWiki\\Rest\\HeaderParser\\Origin' => __DIR__ . '/includes/Rest/HeaderParser/Origin.php',
'MediaWiki\\Rest\\Hook\\SearchResultProvideDescriptionHook' => __DIR__ . '/includes/Rest/Hook/SearchResultProvideDescriptionHook.php',
'MediaWiki\\Rest\\Hook\\SearchResultProvideThumbnailHook' => __DIR__ . '/includes/Rest/Hook/SearchResultProvideThumbnailHook.php',
'MediaWiki\\Rest\\HttpException' => __DIR__ . '/includes/Rest/HttpException.php',
'MediaWiki\\Rest\\JsonEncodingException' => __DIR__ . '/includes/Rest/JsonEncodingException.php',
'MediaWiki\\Rest\\LocalizedHttpException' => __DIR__ . '/includes/Rest/LocalizedHttpException.php',
'MediaWiki\\Rest\\PathTemplateMatcher\\PathConflict' => __DIR__ . '/includes/Rest/PathTemplateMatcher/PathConflict.php',
'MediaWiki\\Rest\\PathTemplateMatcher\\PathMatcher' => __DIR__ . '/includes/Rest/PathTemplateMatcher/PathMatcher.php',
'MediaWiki\\Rest\\RedirectException' => __DIR__ . '/includes/Rest/RedirectException.php',
'MediaWiki\\Rest\\Reporter\\ErrorReporter' => __DIR__ . '/includes/Rest/Reporter/ErrorReporter.php',
'MediaWiki\\Rest\\Reporter\\MWErrorReporter' => __DIR__ . '/includes/Rest/Reporter/MWErrorReporter.php',
'MediaWiki\\Rest\\Reporter\\PHPErrorReporter' => __DIR__ . '/includes/Rest/Reporter/PHPErrorReporter.php',
'MediaWiki\\Rest\\RequestBase' => __DIR__ . '/includes/Rest/RequestBase.php',
'MediaWiki\\Rest\\RequestData' => __DIR__ . '/includes/Rest/RequestData.php',
'MediaWiki\\Rest\\RequestFromGlobals' => __DIR__ . '/includes/Rest/RequestFromGlobals.php',
'MediaWiki\\Rest\\RequestInterface' => __DIR__ . '/includes/Rest/RequestInterface.php',
'MediaWiki\\Rest\\Response' => __DIR__ . '/includes/Rest/Response.php',
'MediaWiki\\Rest\\ResponseException' => __DIR__ . '/includes/Rest/ResponseException.php',
'MediaWiki\\Rest\\ResponseFactory' => __DIR__ . '/includes/Rest/ResponseFactory.php',
'MediaWiki\\Rest\\ResponseInterface' => __DIR__ . '/includes/Rest/ResponseInterface.php',
'MediaWiki\\Rest\\Router' => __DIR__ . '/includes/Rest/Router.php',
'MediaWiki\\Rest\\SimpleHandler' => __DIR__ . '/includes/Rest/SimpleHandler.php',
'MediaWiki\\Rest\\Stream' => __DIR__ . '/includes/Rest/Stream.php',
'MediaWiki\\Rest\\StringStream' => __DIR__ . '/includes/Rest/StringStream.php',
'MediaWiki\\Rest\\TokenAwareHandlerTrait' => __DIR__ . '/includes/Rest/TokenAwareHandlerTrait.php',
'MediaWiki\\Rest\\Validator\\BodyValidator' => __DIR__ . '/includes/Rest/Validator/BodyValidator.php',
'MediaWiki\\Rest\\Validator\\JsonBodyValidator' => __DIR__ . '/includes/Rest/Validator/JsonBodyValidator.php',
'MediaWiki\\Rest\\Validator\\NullBodyValidator' => __DIR__ . '/includes/Rest/Validator/NullBodyValidator.php',
'MediaWiki\\Rest\\Validator\\ParamValidatorCallbacks' => __DIR__ . '/includes/Rest/Validator/ParamValidatorCallbacks.php',
'MediaWiki\\Rest\\Validator\\Validator' => __DIR__ . '/includes/Rest/Validator/Validator.php',
'MediaWiki\\Revision\\ArchivedRevisionLookup' => __DIR__ . '/includes/Revision/ArchivedRevisionLookup.php',
When content is marked bad, show an error, don't pretend it is empty It misrepresents the users contribution to show empty text for a revision when in fact the revision contained some text which we later lost. Also, errors from SqlBlobStore::fetchBlobs() did not stop a cache entry from being written, so a subsequent cache hit would show the bad revision as empty. So, in Storage: * Add BadBlobException, which is thrown by the Storage layer to indicate that a revision is marked as bad. * Have SqlBlobStore::getBlobStore() return an error for bad blobs instead of an empty string. * Duplicate the check for flags=error into SqlBlobStore::expandBlob(). This avoids an unnecessary cache fetch, and avoids making decompressData() throw on error, which would be a b/c break. * In SqlBlobStore::getBlob(), suppress the cache when there was an error. In Revision: * Add BadRevisionException, to wrap BadBlobException in the Revision layer. * Return null from RevisionRecord::getContent() on a broader set of errors. Make it mostly non-throwing. * Add RevisionRecord::getContentOrThrow() which returns a non-nullable Content. * Note that SlotRecord::getContent() returns a non-nullable Content so now throws in more cases. In the UI: * In Article::view(), catch the exception and show an error message. * In DifferenceEngine, catch the exception and make a suitable error message available via getRevisionLoadErrors(). In the diff page, show the error message in a box. * In ApiComparePages and the legacy rvdiffto, show a warning. * In RawAction, show a 404 by analogy with other error cases. * In EditPage, there was already handling for $content=null with an appropriate error message (missing-revision-content). But having $this->textbox1 = null caused PHP 8.1 deprecation warnings, so I fixed that. * In EditPage undo, there was already handling for null content, but I improved the error message: "does not exist or was deleted" seems more appropriate than "conflicting intermediate edits". Change-Id: Idd1278d6d756ef37d64addb7b5f3be30747ea603
2022-11-29 03:38:29 +00:00
'MediaWiki\\Revision\\BadRevisionException' => __DIR__ . '/includes/Revision/BadRevisionException.php',
'MediaWiki\\Revision\\ContributionsLookup' => __DIR__ . '/includes/Revision/ContributionsLookup.php',
'MediaWiki\\Revision\\ContributionsSegment' => __DIR__ . '/includes/Revision/ContributionsSegment.php',
'MediaWiki\\Revision\\FallbackSlotRoleHandler' => __DIR__ . '/includes/Revision/FallbackSlotRoleHandler.php',
'MediaWiki\\Revision\\Hook\\ContentHandlerDefaultModelForHook' => __DIR__ . '/includes/Revision/Hook/ContentHandlerDefaultModelForHook.php',
'MediaWiki\\Revision\\Hook\\RevisionRecordInsertedHook' => __DIR__ . '/includes/Revision/Hook/RevisionRecordInsertedHook.php',
'MediaWiki\\Revision\\IncompleteRevisionException' => __DIR__ . '/includes/Revision/IncompleteRevisionException.php',
'MediaWiki\\Revision\\MainSlotRoleHandler' => __DIR__ . '/includes/Revision/MainSlotRoleHandler.php',
'MediaWiki\\Revision\\MutableRevisionRecord' => __DIR__ . '/includes/Revision/MutableRevisionRecord.php',
'MediaWiki\\Revision\\MutableRevisionSlots' => __DIR__ . '/includes/Revision/MutableRevisionSlots.php',
'MediaWiki\\Revision\\RenderedRevision' => __DIR__ . '/includes/Revision/RenderedRevision.php',
'MediaWiki\\Revision\\RevisionAccessException' => __DIR__ . '/includes/Revision/RevisionAccessException.php',
'MediaWiki\\Revision\\RevisionArchiveRecord' => __DIR__ . '/includes/Revision/RevisionArchiveRecord.php',
'MediaWiki\\Revision\\RevisionFactory' => __DIR__ . '/includes/Revision/RevisionFactory.php',
'MediaWiki\\Revision\\RevisionLookup' => __DIR__ . '/includes/Revision/RevisionLookup.php',
'MediaWiki\\Revision\\RevisionRecord' => __DIR__ . '/includes/Revision/RevisionRecord.php',
'MediaWiki\\Revision\\RevisionRenderer' => __DIR__ . '/includes/Revision/RevisionRenderer.php',
'MediaWiki\\Revision\\RevisionSlots' => __DIR__ . '/includes/Revision/RevisionSlots.php',
'MediaWiki\\Revision\\RevisionStore' => __DIR__ . '/includes/Revision/RevisionStore.php',
'MediaWiki\\Revision\\RevisionStoreCacheRecord' => __DIR__ . '/includes/Revision/RevisionStoreCacheRecord.php',
'MediaWiki\\Revision\\RevisionStoreFactory' => __DIR__ . '/includes/Revision/RevisionStoreFactory.php',
'MediaWiki\\Revision\\RevisionStoreRecord' => __DIR__ . '/includes/Revision/RevisionStoreRecord.php',
'MediaWiki\\Revision\\SlotRecord' => __DIR__ . '/includes/Revision/SlotRecord.php',
'MediaWiki\\Revision\\SlotRenderingProvider' => __DIR__ . '/includes/Revision/SlotRenderingProvider.php',
'MediaWiki\\Revision\\SlotRoleHandler' => __DIR__ . '/includes/Revision/SlotRoleHandler.php',
'MediaWiki\\Revision\\SlotRoleRegistry' => __DIR__ . '/includes/Revision/SlotRoleRegistry.php',
'MediaWiki\\Revision\\SuppressedDataException' => __DIR__ . '/includes/Revision/SuppressedDataException.php',
'MediaWiki\\Search\\Entity\\SearchResultThumbnail' => __DIR__ . '/includes/search/Entity/SearchResultThumbnail.php',
'MediaWiki\\Search\\Hook\\PrefixSearchBackendHook' => __DIR__ . '/includes/search/Hook/PrefixSearchBackendHook.php',
'MediaWiki\\Search\\Hook\\PrefixSearchExtractNamespaceHook' => __DIR__ . '/includes/search/Hook/PrefixSearchExtractNamespaceHook.php',
'MediaWiki\\Search\\Hook\\SearchAfterNoDirectMatchHook' => __DIR__ . '/includes/search/Hook/SearchAfterNoDirectMatchHook.php',
'MediaWiki\\Search\\Hook\\SearchGetNearMatchBeforeHook' => __DIR__ . '/includes/search/Hook/SearchGetNearMatchBeforeHook.php',
'MediaWiki\\Search\\Hook\\SearchGetNearMatchCompleteHook' => __DIR__ . '/includes/search/Hook/SearchGetNearMatchCompleteHook.php',
'MediaWiki\\Search\\Hook\\SearchGetNearMatchHook' => __DIR__ . '/includes/search/Hook/SearchGetNearMatchHook.php',
'MediaWiki\\Search\\Hook\\SearchIndexFieldsHook' => __DIR__ . '/includes/search/Hook/SearchIndexFieldsHook.php',
'MediaWiki\\Search\\Hook\\SearchResultInitFromTitleHook' => __DIR__ . '/includes/search/Hook/SearchResultInitFromTitleHook.php',
'MediaWiki\\Search\\Hook\\SearchResultProvideThumbnailHook' => __DIR__ . '/includes/search/Hook/SearchResultProvideThumbnailHook.php',
'MediaWiki\\Search\\Hook\\SearchResultsAugmentHook' => __DIR__ . '/includes/search/Hook/SearchResultsAugmentHook.php',
'MediaWiki\\Search\\Hook\\SearchableNamespacesHook' => __DIR__ . '/includes/search/Hook/SearchableNamespacesHook.php',
'MediaWiki\\Search\\Hook\\ShowSearchHitHook' => __DIR__ . '/includes/search/Hook/ShowSearchHitHook.php',
'MediaWiki\\Search\\Hook\\ShowSearchHitTitleHook' => __DIR__ . '/includes/search/Hook/ShowSearchHitTitleHook.php',
'MediaWiki\\Search\\Hook\\SpecialSearchPowerBoxHook' => __DIR__ . '/includes/search/Hook/SpecialSearchPowerBoxHook.php',
'MediaWiki\\Search\\Hook\\SpecialSearchProfileFormHook' => __DIR__ . '/includes/search/Hook/SpecialSearchProfileFormHook.php',
'MediaWiki\\Search\\ParserOutputSearchDataExtractor' => __DIR__ . '/includes/search/ParserOutputSearchDataExtractor.php',
'MediaWiki\\Search\\SearchResultThumbnailProvider' => __DIR__ . '/includes/search/SearchResultThumbnailProvider.php',
'MediaWiki\\Search\\SearchWidgets\\BasicSearchResultSetWidget' => __DIR__ . '/includes/search/searchwidgets/BasicSearchResultSetWidget.php',
'MediaWiki\\Search\\SearchWidgets\\DidYouMeanWidget' => __DIR__ . '/includes/search/searchwidgets/DidYouMeanWidget.php',
'MediaWiki\\Search\\SearchWidgets\\FullSearchResultWidget' => __DIR__ . '/includes/search/searchwidgets/FullSearchResultWidget.php',
'MediaWiki\\Search\\SearchWidgets\\InterwikiSearchResultSetWidget' => __DIR__ . '/includes/search/searchwidgets/InterwikiSearchResultSetWidget.php',
'MediaWiki\\Search\\SearchWidgets\\InterwikiSearchResultWidget' => __DIR__ . '/includes/search/searchwidgets/InterwikiSearchResultWidget.php',
'MediaWiki\\Search\\SearchWidgets\\SearchFormWidget' => __DIR__ . '/includes/search/searchwidgets/SearchFormWidget.php',
'MediaWiki\\Search\\SearchWidgets\\SearchResultSetWidget' => __DIR__ . '/includes/search/searchwidgets/SearchResultSetWidget.php',
'MediaWiki\\Search\\SearchWidgets\\SearchResultWidget' => __DIR__ . '/includes/search/searchwidgets/SearchResultWidget.php',
'MediaWiki\\Search\\SearchWidgets\\SimpleSearchResultSetWidget' => __DIR__ . '/includes/search/searchwidgets/SimpleSearchResultSetWidget.php',
'MediaWiki\\Search\\SearchWidgets\\SimpleSearchResultWidget' => __DIR__ . '/includes/search/searchwidgets/SimpleSearchResultWidget.php',
'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
'MediaWiki\\Session\\CsrfTokenSet' => __DIR__ . '/includes/session/CsrfTokenSet.php',
'MediaWiki\\Session\\CsrfTokenSetProvider' => __DIR__ . '/includes/session/CsrfTokenSetProvider.php',
'MediaWiki\\Session\\Hook\\SessionCheckInfoHook' => __DIR__ . '/includes/session/Hook/SessionCheckInfoHook.php',
'MediaWiki\\Session\\Hook\\SessionMetadataHook' => __DIR__ . '/includes/session/Hook/SessionMetadataHook.php',
'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
'MediaWiki\\Session\\MetadataMergeException' => __DIR__ . '/includes/session/MetadataMergeException.php',
'MediaWiki\\Session\\PHPSessionHandler' => __DIR__ . '/includes/session/PHPSessionHandler.php',
'MediaWiki\\Session\\Session' => __DIR__ . '/includes/session/Session.php',
'MediaWiki\\Session\\SessionBackend' => __DIR__ . '/includes/session/SessionBackend.php',
'MediaWiki\\Session\\SessionId' => __DIR__ . '/includes/session/SessionId.php',
'MediaWiki\\Session\\SessionInfo' => __DIR__ . '/includes/session/SessionInfo.php',
'MediaWiki\\Session\\SessionManager' => __DIR__ . '/includes/session/SessionManager.php',
'MediaWiki\\Session\\SessionManagerInterface' => __DIR__ . '/includes/session/SessionManagerInterface.php',
'MediaWiki\\Session\\SessionOverflowException' => __DIR__ . '/includes/session/SessionOverflowException.php',
'MediaWiki\\Session\\SessionProvider' => __DIR__ . '/includes/session/SessionProvider.php',
'MediaWiki\\Session\\SessionProviderInterface' => __DIR__ . '/includes/session/SessionProviderInterface.php',
'MediaWiki\\Session\\Token' => __DIR__ . '/includes/session/Token.php',
'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php',
'MediaWiki\\Settings\\Cache\\CacheableSource' => __DIR__ . '/includes/Settings/Cache/CacheableSource.php',
'MediaWiki\\Settings\\Cache\\CachedSource' => __DIR__ . '/includes/Settings/Cache/CachedSource.php',
'MediaWiki\\Settings\\Config\\ArrayConfigBuilder' => __DIR__ . '/includes/Settings/Config/ArrayConfigBuilder.php',
'MediaWiki\\Settings\\Config\\ConfigBuilder' => __DIR__ . '/includes/Settings/Config/ConfigBuilder.php',
'MediaWiki\\Settings\\Config\\ConfigBuilderBase' => __DIR__ . '/includes/Settings/Config/ConfigBuilderBase.php',
'MediaWiki\\Settings\\Config\\ConfigSchema' => __DIR__ . '/includes/Settings/Config/ConfigSchema.php',
'MediaWiki\\Settings\\Config\\ConfigSchemaAggregator' => __DIR__ . '/includes/Settings/Config/ConfigSchemaAggregator.php',
'MediaWiki\\Settings\\Config\\GlobalConfigBuilder' => __DIR__ . '/includes/Settings/Config/GlobalConfigBuilder.php',
'MediaWiki\\Settings\\Config\\MergeStrategy' => __DIR__ . '/includes/Settings/Config/MergeStrategy.php',
'MediaWiki\\Settings\\Config\\NullIniSink' => __DIR__ . '/includes/Settings/Config/NullIniSink.php',
'MediaWiki\\Settings\\Config\\PhpIniSink' => __DIR__ . '/includes/Settings/Config/PhpIniSink.php',
'MediaWiki\\Settings\\DynamicDefaultValues' => __DIR__ . '/includes/Settings/DynamicDefaultValues.php',
'MediaWiki\\Settings\\LocalSettingsLoader' => __DIR__ . '/includes/Settings/LocalSettingsLoader.php',
'MediaWiki\\Settings\\SettingsBuilder' => __DIR__ . '/includes/Settings/SettingsBuilder.php',
'MediaWiki\\Settings\\SettingsBuilderException' => __DIR__ . '/includes/Settings/SettingsBuilderException.php',
'MediaWiki\\Settings\\Source\\ArraySource' => __DIR__ . '/includes/Settings/Source/ArraySource.php',
'MediaWiki\\Settings\\Source\\EtcdSource' => __DIR__ . '/includes/Settings/Source/EtcdSource.php',
'MediaWiki\\Settings\\Source\\FileSource' => __DIR__ . '/includes/Settings/Source/FileSource.php',
'MediaWiki\\Settings\\Source\\Format\\JsonFormat' => __DIR__ . '/includes/Settings/Source/Format/JsonFormat.php',
'MediaWiki\\Settings\\Source\\Format\\SettingsFormat' => __DIR__ . '/includes/Settings/Source/Format/SettingsFormat.php',
'MediaWiki\\Settings\\Source\\Format\\YamlFormat' => __DIR__ . '/includes/Settings/Source/Format/YamlFormat.php',
'MediaWiki\\Settings\\Source\\JsonSchemaTrait' => __DIR__ . '/includes/Settings/Source/JsonSchemaTrait.php',
'MediaWiki\\Settings\\Source\\PhpSettingsSource' => __DIR__ . '/includes/Settings/Source/PhpSettingsSource.php',
'MediaWiki\\Settings\\Source\\ReflectionSchemaSource' => __DIR__ . '/includes/Settings/Source/ReflectionSchemaSource.php',
'MediaWiki\\Settings\\Source\\SettingsFileUtils' => __DIR__ . '/includes/Settings/Source/SettingsFileUtils.php',
'MediaWiki\\Settings\\Source\\SettingsIncludeLocator' => __DIR__ . '/includes/Settings/Source/SettingsIncludeLocator.php',
'MediaWiki\\Settings\\Source\\SettingsSource' => __DIR__ . '/includes/Settings/Source/SettingsSource.php',
'MediaWiki\\Settings\\WikiFarmSettingsLoader' => __DIR__ . '/includes/Settings/WikiFarmSettingsLoader.php',
'MediaWiki\\ShellDisabledError' => __DIR__ . '/includes/exception/ShellDisabledError.php',
'MediaWiki\\Shell\\Command' => __DIR__ . '/includes/shell/Command.php',
'MediaWiki\\Shell\\CommandFactory' => __DIR__ . '/includes/shell/CommandFactory.php',
'MediaWiki\\Shell\\Hook\\WfShellWikiCmdHook' => __DIR__ . '/includes/shell/Hook/WfShellWikiCmdHook.php',
'MediaWiki\\Shell\\Shell' => __DIR__ . '/includes/shell/Shell.php',
'MediaWiki\\Shell\\ShellboxClientFactory' => __DIR__ . '/includes/shell/ShellboxClientFactory.php',
'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
'MediaWiki\\Skin\\ComponentRegistryContext' => __DIR__ . '/includes/skins/components/ComponentRegistryContext.php',
'MediaWiki\\Skin\\SkinComponent' => __DIR__ . '/includes/skins/components/SkinComponent.php',
'MediaWiki\\Skin\\SkinComponentCopyright' => __DIR__ . '/includes/skins/components/SkinComponentCopyright.php',
'MediaWiki\\Skin\\SkinComponentFooter' => __DIR__ . '/includes/skins/components/SkinComponentFooter.php',
'MediaWiki\\Skin\\SkinComponentLastModified' => __DIR__ . '/includes/skins/components/SkinComponentLastModified.php',
'MediaWiki\\Skin\\SkinComponentLink' => __DIR__ . '/includes/skins/components/SkinComponentLink.php',
'MediaWiki\\Skin\\SkinComponentListItem' => __DIR__ . '/includes/skins/components/SkinComponentListItem.php',
'MediaWiki\\Skin\\SkinComponentLogo' => __DIR__ . '/includes/skins/components/SkinComponentLogo.php',
'MediaWiki\\Skin\\SkinComponentMenu' => __DIR__ . '/includes/skins/components/SkinComponentMenu.php',
'MediaWiki\\Skin\\SkinComponentRegistry' => __DIR__ . '/includes/skins/components/SkinComponentRegistry.php',
'MediaWiki\\Skin\\SkinComponentRegistryContext' => __DIR__ . '/includes/skins/components/SkinComponentRegistryContext.php',
'MediaWiki\\Skin\\SkinComponentSearch' => __DIR__ . '/includes/skins/components/SkinComponentSearch.php',
'MediaWiki\\Skin\\SkinComponentTableOfContents' => __DIR__ . '/includes/skins/components/SkinComponentTableOfContents.php',
'MediaWiki\\Skin\\SkinComponentUtils' => __DIR__ . '/includes/skins/components/SkinComponentUtils.php',
'MediaWiki\\Skins\\Hook\\SkinAfterPortletHook' => __DIR__ . '/includes/skins/Hook/SkinAfterPortletHook.php',
'MediaWiki\\Skins\\Hook\\SkinPageReadyConfigHook' => __DIR__ . '/includes/skins/Hook/SkinPageReadyConfigHook.php',
'MediaWiki\\Sparql\\SparqlClient' => __DIR__ . '/includes/sparql/SparqlClient.php',
'MediaWiki\\Sparql\\SparqlException' => __DIR__ . '/includes/sparql/SparqlException.php',
'MediaWiki\\SpecialPage\\Hook\\AuthChangeFormFieldsHook' => __DIR__ . '/includes/specialpage/Hook/AuthChangeFormFieldsHook.php',
'MediaWiki\\SpecialPage\\Hook\\ChangeAuthenticationDataAuditHook' => __DIR__ . '/includes/specialpage/Hook/ChangeAuthenticationDataAuditHook.php',
'MediaWiki\\SpecialPage\\Hook\\ChangesListSpecialPageQueryHook' => __DIR__ . '/includes/specialpage/Hook/ChangesListSpecialPageQueryHook.php',
'MediaWiki\\SpecialPage\\Hook\\ChangesListSpecialPageStructuredFiltersHook' => __DIR__ . '/includes/specialpage/Hook/ChangesListSpecialPageStructuredFiltersHook.php',
'MediaWiki\\SpecialPage\\Hook\\RedirectSpecialArticleRedirectParamsHook' => __DIR__ . '/includes/specialpage/Hook/RedirectSpecialArticleRedirectParamsHook.php',
'MediaWiki\\SpecialPage\\Hook\\SpecialPageAfterExecuteHook' => __DIR__ . '/includes/specialpage/Hook/SpecialPageAfterExecuteHook.php',
'MediaWiki\\SpecialPage\\Hook\\SpecialPageBeforeExecuteHook' => __DIR__ . '/includes/specialpage/Hook/SpecialPageBeforeExecuteHook.php',
'MediaWiki\\SpecialPage\\Hook\\SpecialPageBeforeFormDisplayHook' => __DIR__ . '/includes/specialpage/Hook/SpecialPageBeforeFormDisplayHook.php',
'MediaWiki\\SpecialPage\\Hook\\SpecialPage_initListHook' => __DIR__ . '/includes/specialpage/Hook/SpecialPage_initListHook.php',
'MediaWiki\\SpecialPage\\Hook\\WgQueryPagesHook' => __DIR__ . '/includes/specialpage/Hook/WgQueryPagesHook.php',
'MediaWiki\\SpecialPage\\SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory.php',
'MediaWiki\\Specials\\Contribute\\Card\\ContributeCard' => __DIR__ . '/includes/specials/Contribute/Card/ContributeCard.php',
'MediaWiki\\Specials\\Contribute\\Card\\ContributeCardAction' => __DIR__ . '/includes/specials/Contribute/Card/ContributeCardAction.php',
'MediaWiki\\Specials\\Contribute\\Card\\ContributeCardActionLink' => __DIR__ . '/includes/specials/Contribute/Card/ContributeCardActionLink.php',
'MediaWiki\\Specials\\Contribute\\ContributeFactory' => __DIR__ . '/includes/specials/Contribute/ContributeFactory.php',
'MediaWiki\\Specials\\Contribute\\Hook\\ContributeCardsHook' => __DIR__ . '/includes/specials/Contribute/Hook/ContributeCardsHook.php',
When content is marked bad, show an error, don't pretend it is empty It misrepresents the users contribution to show empty text for a revision when in fact the revision contained some text which we later lost. Also, errors from SqlBlobStore::fetchBlobs() did not stop a cache entry from being written, so a subsequent cache hit would show the bad revision as empty. So, in Storage: * Add BadBlobException, which is thrown by the Storage layer to indicate that a revision is marked as bad. * Have SqlBlobStore::getBlobStore() return an error for bad blobs instead of an empty string. * Duplicate the check for flags=error into SqlBlobStore::expandBlob(). This avoids an unnecessary cache fetch, and avoids making decompressData() throw on error, which would be a b/c break. * In SqlBlobStore::getBlob(), suppress the cache when there was an error. In Revision: * Add BadRevisionException, to wrap BadBlobException in the Revision layer. * Return null from RevisionRecord::getContent() on a broader set of errors. Make it mostly non-throwing. * Add RevisionRecord::getContentOrThrow() which returns a non-nullable Content. * Note that SlotRecord::getContent() returns a non-nullable Content so now throws in more cases. In the UI: * In Article::view(), catch the exception and show an error message. * In DifferenceEngine, catch the exception and make a suitable error message available via getRevisionLoadErrors(). In the diff page, show the error message in a box. * In ApiComparePages and the legacy rvdiffto, show a warning. * In RawAction, show a 404 by analogy with other error cases. * In EditPage, there was already handling for $content=null with an appropriate error message (missing-revision-content). But having $this->textbox1 = null caused PHP 8.1 deprecation warnings, so I fixed that. * In EditPage undo, there was already handling for null content, but I improved the error message: "does not exist or was deleted" seems more appropriate than "conflicting intermediate edits". Change-Id: Idd1278d6d756ef37d64addb7b5f3be30747ea603
2022-11-29 03:38:29 +00:00
'MediaWiki\\Storage\\BadBlobException' => __DIR__ . '/includes/Storage/BadBlobException.php',
'MediaWiki\\Storage\\BlobAccessException' => __DIR__ . '/includes/Storage/BlobAccessException.php',
'MediaWiki\\Storage\\BlobStore' => __DIR__ . '/includes/Storage/BlobStore.php',
'MediaWiki\\Storage\\BlobStoreFactory' => __DIR__ . '/includes/Storage/BlobStoreFactory.php',
'MediaWiki\\Storage\\DerivedPageDataUpdater' => __DIR__ . '/includes/Storage/DerivedPageDataUpdater.php',
'MediaWiki\\Storage\\EditResult' => __DIR__ . '/includes/Storage/EditResult.php',
'MediaWiki\\Storage\\EditResultBuilder' => __DIR__ . '/includes/Storage/EditResultBuilder.php',
'MediaWiki\\Storage\\EditResultCache' => __DIR__ . '/includes/Storage/EditResultCache.php',
'MediaWiki\\Storage\\Hook\\ArticleEditUpdateNewTalkHook' => __DIR__ . '/includes/Storage/Hook/ArticleEditUpdateNewTalkHook.php',
'MediaWiki\\Storage\\Hook\\ArticlePrepareTextForEditHook' => __DIR__ . '/includes/Storage/Hook/ArticlePrepareTextForEditHook.php',
'MediaWiki\\Storage\\Hook\\BeforeRevertedTagUpdateHook' => __DIR__ . '/includes/Storage/Hook/BeforeRevertedTagUpdateHook.php',
'MediaWiki\\Storage\\Hook\\MultiContentSaveHook' => __DIR__ . '/includes/Storage/Hook/MultiContentSaveHook.php',
'MediaWiki\\Storage\\Hook\\PageContentSaveHook' => __DIR__ . '/includes/Storage/Hook/PageContentSaveHook.php',
'MediaWiki\\Storage\\Hook\\PageSaveCompleteHook' => __DIR__ . '/includes/Storage/Hook/PageSaveCompleteHook.php',
'MediaWiki\\Storage\\Hook\\ParserOutputStashForEditHook' => __DIR__ . '/includes/Storage/Hook/ParserOutputStashForEditHook.php',
'MediaWiki\\Storage\\Hook\\RevisionDataUpdatesHook' => __DIR__ . '/includes/Storage/Hook/RevisionDataUpdatesHook.php',
'MediaWiki\\Storage\\NameTableAccessException' => __DIR__ . '/includes/Storage/NameTableAccessException.php',
'MediaWiki\\Storage\\NameTableStore' => __DIR__ . '/includes/Storage/NameTableStore.php',
'MediaWiki\\Storage\\NameTableStoreFactory' => __DIR__ . '/includes/Storage/NameTableStoreFactory.php',
'MediaWiki\\Storage\\PageEditStash' => __DIR__ . '/includes/Storage/PageEditStash.php',
'MediaWiki\\Storage\\PageUpdateException' => __DIR__ . '/includes/Storage/PageUpdateException.php',
'MediaWiki\\Storage\\PageUpdateStatus' => __DIR__ . '/includes/Storage/PageUpdateStatus.php',
'MediaWiki\\Storage\\PageUpdater' => __DIR__ . '/includes/Storage/PageUpdater.php',
'MediaWiki\\Storage\\PageUpdaterFactory' => __DIR__ . '/includes/Storage/PageUpdaterFactory.php',
'MediaWiki\\Storage\\PreparedUpdate' => __DIR__ . '/includes/Storage/PreparedUpdate.php',
'MediaWiki\\Storage\\RevertedTagUpdate' => __DIR__ . '/includes/Storage/RevertedTagUpdate.php',
'MediaWiki\\Storage\\RevertedTagUpdateManager' => __DIR__ . '/includes/Storage/RevertedTagUpdateManager.php',
'MediaWiki\\Storage\\RevisionSlotsUpdate' => __DIR__ . '/includes/Storage/RevisionSlotsUpdate.php',
'MediaWiki\\Storage\\SqlBlobStore' => __DIR__ . '/includes/Storage/SqlBlobStore.php',
'MediaWiki\\StubObject\\DeprecatedGlobal' => __DIR__ . '/includes/StubObject/DeprecatedGlobal.php',
'MediaWiki\\StubObject\\StubGlobalUser' => __DIR__ . '/includes/StubObject/StubGlobalUser.php',
'MediaWiki\\StubObject\\StubObject' => __DIR__ . '/includes/StubObject/StubObject.php',
'MediaWiki\\StubObject\\StubUserLang' => __DIR__ . '/includes/StubObject/StubUserLang.php',
'MediaWiki\\Tidy\\RemexCompatBuilder' => __DIR__ . '/includes/tidy/RemexCompatBuilder.php',
'MediaWiki\\Tidy\\RemexCompatFormatter' => __DIR__ . '/includes/tidy/RemexCompatFormatter.php',
'MediaWiki\\Tidy\\RemexCompatMunger' => __DIR__ . '/includes/tidy/RemexCompatMunger.php',
'MediaWiki\\Tidy\\RemexDriver' => __DIR__ . '/includes/tidy/RemexDriver.php',
'MediaWiki\\Tidy\\RemexMungerData' => __DIR__ . '/includes/tidy/RemexMungerData.php',
'MediaWiki\\Tidy\\TidyDriverBase' => __DIR__ . '/includes/tidy/TidyDriverBase.php',
'MediaWiki\\Title\\TitleArray' => __DIR__ . '/includes/title/TitleArray.php',
'MediaWiki\\Title\\TitleArrayFromResult' => __DIR__ . '/includes/title/TitleArrayFromResult.php',
'MediaWiki\\Title\\TitleFactory' => __DIR__ . '/includes/title/TitleFactory.php',
'MediaWiki\\User\\ActorCache' => __DIR__ . '/includes/user/ActorCache.php',
'MediaWiki\\User\\ActorMigration' => __DIR__ . '/includes/user/ActorMigration.php',
'MediaWiki\\User\\ActorMigrationBase' => __DIR__ . '/includes/user/ActorMigrationBase.php',
'MediaWiki\\User\\ActorNormalization' => __DIR__ . '/includes/user/ActorNormalization.php',
'MediaWiki\\User\\ActorStore' => __DIR__ . '/includes/user/ActorStore.php',
'MediaWiki\\User\\ActorStoreFactory' => __DIR__ . '/includes/user/ActorStoreFactory.php',
'MediaWiki\\User\\BotPasswordStore' => __DIR__ . '/includes/user/BotPasswordStore.php',
'MediaWiki\\User\\CentralId\\CentralIdLookupFactory' => __DIR__ . '/includes/user/CentralId/CentralIdLookupFactory.php',
'MediaWiki\\User\\DefaultOptionsLookup' => __DIR__ . '/includes/user/DefaultOptionsLookup.php',
'MediaWiki\\User\\Hook\\AutopromoteConditionHook' => __DIR__ . '/includes/user/Hook/AutopromoteConditionHook.php',
'MediaWiki\\User\\Hook\\ConfirmEmailCompleteHook' => __DIR__ . '/includes/user/Hook/ConfirmEmailCompleteHook.php',
'MediaWiki\\User\\Hook\\EmailConfirmedHook' => __DIR__ . '/includes/user/Hook/EmailConfirmedHook.php',
'MediaWiki\\User\\Hook\\GetAutoPromoteGroupsHook' => __DIR__ . '/includes/user/Hook/GetAutoPromoteGroupsHook.php',
'MediaWiki\\User\\Hook\\InvalidateEmailCompleteHook' => __DIR__ . '/includes/user/Hook/InvalidateEmailCompleteHook.php',
'MediaWiki\\User\\Hook\\IsValidPasswordHook' => __DIR__ . '/includes/user/Hook/IsValidPasswordHook.php',
'MediaWiki\\User\\Hook\\PingLimiterHook' => __DIR__ . '/includes/user/Hook/PingLimiterHook.php',
'MediaWiki\\User\\Hook\\SpecialPasswordResetOnSubmitHook' => __DIR__ . '/includes/user/Hook/SpecialPasswordResetOnSubmitHook.php',
'MediaWiki\\User\\Hook\\UserAddGroupHook' => __DIR__ . '/includes/user/Hook/UserAddGroupHook.php',
'MediaWiki\\User\\Hook\\UserArrayFromResultHook' => __DIR__ . '/includes/user/Hook/UserArrayFromResultHook.php',
'MediaWiki\\User\\Hook\\UserCanSendEmailHook' => __DIR__ . '/includes/user/Hook/UserCanSendEmailHook.php',
'MediaWiki\\User\\Hook\\UserClearNewTalkNotificationHook' => __DIR__ . '/includes/user/Hook/UserClearNewTalkNotificationHook.php',
'MediaWiki\\User\\Hook\\UserEffectiveGroupsHook' => __DIR__ . '/includes/user/Hook/UserEffectiveGroupsHook.php',
'MediaWiki\\User\\Hook\\UserGetDefaultOptionsHook' => __DIR__ . '/includes/user/Hook/UserGetDefaultOptionsHook.php',
'MediaWiki\\User\\Hook\\UserGetEmailAuthenticationTimestampHook' => __DIR__ . '/includes/user/Hook/UserGetEmailAuthenticationTimestampHook.php',
'MediaWiki\\User\\Hook\\UserGetEmailHook' => __DIR__ . '/includes/user/Hook/UserGetEmailHook.php',
'MediaWiki\\User\\Hook\\UserGetReservedNamesHook' => __DIR__ . '/includes/user/Hook/UserGetReservedNamesHook.php',
'MediaWiki\\User\\Hook\\UserGroupsChangedHook' => __DIR__ . '/includes/user/Hook/UserGroupsChangedHook.php',
'MediaWiki\\User\\Hook\\UserIsBlockedGloballyHook' => __DIR__ . '/includes/user/Hook/UserIsBlockedGloballyHook.php',
'MediaWiki\\User\\Hook\\UserIsBotHook' => __DIR__ . '/includes/user/Hook/UserIsBotHook.php',
'MediaWiki\\User\\Hook\\UserIsLockedHook' => __DIR__ . '/includes/user/Hook/UserIsLockedHook.php',
'MediaWiki\\User\\Hook\\UserLoadAfterLoadFromSessionHook' => __DIR__ . '/includes/user/Hook/UserLoadAfterLoadFromSessionHook.php',
'MediaWiki\\User\\Hook\\UserLoadDefaultsHook' => __DIR__ . '/includes/user/Hook/UserLoadDefaultsHook.php',
'MediaWiki\\User\\Hook\\UserLogoutHook' => __DIR__ . '/includes/user/Hook/UserLogoutHook.php',
'MediaWiki\\User\\Hook\\UserRemoveGroupHook' => __DIR__ . '/includes/user/Hook/UserRemoveGroupHook.php',
'MediaWiki\\User\\Hook\\UserSaveSettingsHook' => __DIR__ . '/includes/user/Hook/UserSaveSettingsHook.php',
'MediaWiki\\User\\Hook\\UserSendConfirmationMailHook' => __DIR__ . '/includes/user/Hook/UserSendConfirmationMailHook.php',
'MediaWiki\\User\\Hook\\UserSetEmailAuthenticationTimestampHook' => __DIR__ . '/includes/user/Hook/UserSetEmailAuthenticationTimestampHook.php',
'MediaWiki\\User\\Hook\\UserSetEmailHook' => __DIR__ . '/includes/user/Hook/UserSetEmailHook.php',
'MediaWiki\\User\\Hook\\User__mailPasswordInternalHook' => __DIR__ . '/includes/user/Hook/User__mailPasswordInternalHook.php',
'MediaWiki\\User\\Options\\Hook\\LoadUserOptionsHook' => __DIR__ . '/includes/user/Options/Hook/LoadUserOptionsHook.php',
'MediaWiki\\User\\Options\\Hook\\SaveUserOptionsHook' => __DIR__ . '/includes/user/Options/Hook/SaveUserOptionsHook.php',
'MediaWiki\\User\\StaticUserOptionsLookup' => __DIR__ . '/includes/user/StaticUserOptionsLookup.php',
'MediaWiki\\User\\TalkPageNotificationManager' => __DIR__ . '/includes/user/TalkPageNotificationManager.php',
'MediaWiki\\User\\TempUser\\CreateStatus' => __DIR__ . '/includes/user/TempUser/CreateStatus.php',
'MediaWiki\\User\\TempUser\\DBSerialProvider' => __DIR__ . '/includes/user/TempUser/DBSerialProvider.php',
'MediaWiki\\User\\TempUser\\FilteredRadixSerialMapping' => __DIR__ . '/includes/user/TempUser/FilteredRadixSerialMapping.php',
'MediaWiki\\User\\TempUser\\LocalSerialProvider' => __DIR__ . '/includes/user/TempUser/LocalSerialProvider.php',
'MediaWiki\\User\\TempUser\\LocalizedNumericSerialMapping' => __DIR__ . '/includes/user/TempUser/LocalizedNumericSerialMapping.php',
'MediaWiki\\User\\TempUser\\Pattern' => __DIR__ . '/includes/user/TempUser/Pattern.php',
'MediaWiki\\User\\TempUser\\PlainNumericSerialMapping' => __DIR__ . '/includes/user/TempUser/PlainNumericSerialMapping.php',
'MediaWiki\\User\\TempUser\\RealTempUserConfig' => __DIR__ . '/includes/user/TempUser/RealTempUserConfig.php',
'MediaWiki\\User\\TempUser\\ScrambleMapping' => __DIR__ . '/includes/user/TempUser/ScrambleMapping.php',
'MediaWiki\\User\\TempUser\\SerialMapping' => __DIR__ . '/includes/user/TempUser/SerialMapping.php',
'MediaWiki\\User\\TempUser\\SerialProvider' => __DIR__ . '/includes/user/TempUser/SerialProvider.php',
'MediaWiki\\User\\TempUser\\TempUserConfig' => __DIR__ . '/includes/user/TempUser/TempUserConfig.php',
'MediaWiki\\User\\TempUser\\TempUserCreator' => __DIR__ . '/includes/user/TempUser/TempUserCreator.php',
'MediaWiki\\User\\UserEditTracker' => __DIR__ . '/includes/user/UserEditTracker.php',
'MediaWiki\\User\\UserFactory' => __DIR__ . '/includes/user/UserFactory.php',
'MediaWiki\\User\\UserGroupManager' => __DIR__ . '/includes/user/UserGroupManager.php',
'MediaWiki\\User\\UserGroupManagerFactory' => __DIR__ . '/includes/user/UserGroupManagerFactory.php',
'MediaWiki\\User\\UserIdentity' => __DIR__ . '/includes/user/UserIdentity.php',
'MediaWiki\\User\\UserIdentityLookup' => __DIR__ . '/includes/user/UserIdentityLookup.php',
'MediaWiki\\User\\UserIdentityValue' => __DIR__ . '/includes/user/UserIdentityValue.php',
'MediaWiki\\User\\UserNamePrefixSearch' => __DIR__ . '/includes/user/UserNamePrefixSearch.php',
'MediaWiki\\User\\UserNameUtils' => __DIR__ . '/includes/user/UserNameUtils.php',
'MediaWiki\\User\\UserOptionsLookup' => __DIR__ . '/includes/user/UserOptionsLookup.php',
'MediaWiki\\User\\UserOptionsManager' => __DIR__ . '/includes/user/UserOptionsManager.php',
'MediaWiki\\User\\UserRigorOptions' => __DIR__ . '/includes/user/UserRigorOptions.php',
'MediaWiki\\User\\UserSelectQueryBuilder' => __DIR__ . '/includes/user/UserSelectQueryBuilder.php',
'MediaWiki\\User\\UserTimeCorrection' => __DIR__ . '/includes/user/UserTimeCorrection.php',
'MediaWiki\\User\\WatchlistNotificationManager' => __DIR__ . '/includes/watchlist/WatchlistManager.php',
'MediaWiki\\Utils\\UrlUtils' => __DIR__ . '/includes/utils/UrlUtils.php',
'MediaWiki\\Watchlist\\WatchlistManager' => __DIR__ . '/includes/watchlist/WatchlistManager.php',
'MediaWiki\\Widget\\CheckMatrixWidget' => __DIR__ . '/includes/widget/CheckMatrixWidget.php',
'MediaWiki\\Widget\\ComplexNamespaceInputWidget' => __DIR__ . '/includes/widget/ComplexNamespaceInputWidget.php',
'MediaWiki\\Widget\\ComplexTitleInputWidget' => __DIR__ . '/includes/widget/ComplexTitleInputWidget.php',
'MediaWiki\\Widget\\DateInputWidget' => __DIR__ . '/includes/widget/DateInputWidget.php',
'MediaWiki\\Widget\\DateTimeInputWidget' => __DIR__ . '/includes/widget/DateTimeInputWidget.php',
'MediaWiki\\Widget\\ExpiryInputWidget' => __DIR__ . '/includes/widget/ExpiryInputWidget.php',
'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
'MediaWiki\\Widget\\NamespacesMultiselectWidget' => __DIR__ . '/includes/widget/NamespacesMultiselectWidget.php',
'MediaWiki\\Widget\\PendingTextInputWidget' => __DIR__ . '/includes/widget/PendingTextInputWidget.php',
'MediaWiki\\Widget\\SearchInputWidget' => __DIR__ . '/includes/widget/SearchInputWidget.php',
'MediaWiki\\Widget\\SelectWithInputWidget' => __DIR__ . '/includes/widget/SelectWithInputWidget.php',
'MediaWiki\\Widget\\SizeFilterWidget' => __DIR__ . '/includes/widget/SizeFilterWidget.php',
'MediaWiki\\Widget\\SpinnerWidget' => __DIR__ . '/includes/widget/SpinnerWidget.php',
'MediaWiki\\Widget\\TagMultiselectWidget' => __DIR__ . '/includes/widget/TagMultiselectWidget.php',
'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
'MediaWiki\\Widget\\TitlesMultiselectWidget' => __DIR__ . '/includes/widget/TitlesMultiselectWidget.php',
'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
'MediaWiki\\Widget\\UsersMultiselectWidget' => __DIR__ . '/includes/widget/UsersMultiselectWidget.php',
'MediumSpecificBagOStuff' => __DIR__ . '/includes/libs/objectcache/MediumSpecificBagOStuff.php',
'MemcLockManager' => __DIR__ . '/includes/libs/lockmanager/MemcLockManager.php',
'MemcachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedBagOStuff.php',
'MemcachedClient' => __DIR__ . '/includes/libs/objectcache/utils/MemcachedClient.php',
'MemcachedPeclBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedPeclBagOStuff.php',
'MemcachedPhpBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedPhpBagOStuff.php',
'MemoizedCallable' => __DIR__ . '/includes/libs/MemoizedCallable.php',
'MemoryFileBackend' => __DIR__ . '/includes/libs/filebackend/MemoryFileBackend.php',
'MergeHistory' => __DIR__ . '/includes/MergeHistory.php',
'MergeHistoryPager' => __DIR__ . '/includes/specials/pagers/MergeHistoryPager.php',
'MergeLogFormatter' => __DIR__ . '/includes/logging/MergeLogFormatter.php',
'MergeableUpdate' => __DIR__ . '/includes/deferred/MergeableUpdate.php',
'Message' => __DIR__ . '/includes/language/Message.php',
'MessageBlobStore' => __DIR__ . '/includes/ResourceLoader/MessageBlobStore.php',
'MessageCache' => __DIR__ . '/includes/language/MessageCache.php',
'MessageCacheUpdate' => __DIR__ . '/includes/deferred/MessageCacheUpdate.php',
'MessageContent' => __DIR__ . '/includes/content/MessageContent.php',
'MessageLocalizer' => __DIR__ . '/includes/language/MessageLocalizer.php',
'MessageSpecifier' => __DIR__ . '/includes/libs/MessageSpecifier.php',
'MetadataStorageHelper' => __DIR__ . '/includes/filerepo/file/MetadataStorageHelper.php',
'MigrateExternallinks' => __DIR__ . '/maintenance/migrateExternallinks.php',
'MigrateFileRepoLayout' => __DIR__ . '/maintenance/migrateFileRepoLayout.php',
'MigrateLinksTable' => __DIR__ . '/maintenance/migrateLinksTable.php',
'MigrateRevisionActorTemp' => __DIR__ . '/maintenance/migrateRevisionActorTemp.php',
'MigrateRevisionCommentTemp' => __DIR__ . '/maintenance/migrateRevisionCommentTemp.php',
'MigrateUserGroup' => __DIR__ . '/maintenance/migrateUserGroup.php',
'MimeAnalyzer' => __DIR__ . '/includes/libs/mime/MimeAnalyzer.php',
'MostimagesPage' => __DIR__ . '/includes/specials/SpecialMostimages.php',
'MoveBatch' => __DIR__ . '/maintenance/moveBatch.php',
'MoveFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/MoveFileOp.php',
'MoveLogFormatter' => __DIR__ . '/includes/logging/MoveLogFormatter.php',
'MovePage' => __DIR__ . '/includes/MovePage.php',
'MovePageForm' => __DIR__ . '/includes/specials/SpecialMovepage.php',
'MoveToExternal' => __DIR__ . '/maintenance/storage/moveToExternal.php',
'MultiConfig' => __DIR__ . '/includes/config/MultiConfig.php',
'MultiHttpClient' => __DIR__ . '/includes/libs/http/MultiHttpClient.php',
'MultiWriteBagOStuff' => __DIR__ . '/includes/libs/objectcache/MultiWriteBagOStuff.php',
'MutableConfig' => __DIR__ . '/includes/config/MutableConfig.php',
'MutableContext' => __DIR__ . '/includes/context/MutableContext.php',
'MwSql' => __DIR__ . '/maintenance/sql.php',
'MysqlInstaller' => __DIR__ . '/includes/installer/MysqlInstaller.php',
'MysqlMaintenance' => __DIR__ . '/maintenance/mysql.php',
'MysqlUpdater' => __DIR__ . '/includes/installer/MysqlUpdater.php',
'NaiveForeignTitleFactory' => __DIR__ . '/includes/title/NaiveForeignTitleFactory.php',
'NaiveImportTitleFactory' => __DIR__ . '/includes/title/NaiveImportTitleFactory.php',
'NamespaceAwareForeignTitleFactory' => __DIR__ . '/includes/title/NamespaceAwareForeignTitleFactory.php',
'NamespaceDupes' => __DIR__ . '/maintenance/namespaceDupes.php',
'NamespaceImportTitleFactory' => __DIR__ . '/includes/title/NamespaceImportTitleFactory.php',
'NamespaceInfo' => __DIR__ . '/includes/title/NamespaceInfo.php',
'NewFilesPager' => __DIR__ . '/includes/specials/pagers/NewFilesPager.php',
'NewPagesPager' => __DIR__ . '/includes/specials/pagers/NewPagesPager.php',
'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
'NoWriteWatchedItemStore' => __DIR__ . '/includes/watcheditem/NoWriteWatchedItemStore.php',
'NolinesImageGallery' => __DIR__ . '/includes/gallery/NolinesImageGallery.php',
'NotRecursiveIterator' => __DIR__ . '/includes/libs/iterators/NotRecursiveIterator.php',
'NukeNS' => __DIR__ . '/maintenance/nukeNS.php',
'NukePage' => __DIR__ . '/maintenance/nukePage.php',
'NullFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/NullFileOp.php',
'NullIndexField' => __DIR__ . '/includes/search/NullIndexField.php',
'NullJob' => __DIR__ . '/includes/jobqueue/jobs/NullJob.php',
'NullLockManager' => __DIR__ . '/includes/libs/lockmanager/NullLockManager.php',
'NullRepo' => __DIR__ . '/includes/filerepo/NullRepo.php',
'NullStatsdDataFactory' => __DIR__ . '/includes/libs/stats/NullStatsdDataFactory.php',
'NumericUppercaseCollation' => __DIR__ . '/includes/collation/NumericUppercaseCollation.php',
'OOUIHTMLForm' => __DIR__ . '/includes/htmlform/OOUIHTMLForm.php',
'ObjectCache' => __DIR__ . '/includes/objectcache/ObjectCache.php',
'OldChangesList' => __DIR__ . '/includes/changes/OldChangesList.php',
'OldLocalFile' => __DIR__ . '/includes/filerepo/file/OldLocalFile.php',
'OldRevisionImporter' => __DIR__ . '/includes/import/OldRevisionImporter.php',
'OrderedStreamingForkController' => __DIR__ . '/includes/Maintenance/OrderedStreamingForkController.php',
'OrphanStats' => __DIR__ . '/maintenance/storage/orphanStats.php',
'OutputPage' => __DIR__ . '/includes/OutputPage.php',
'PHPVersionCheck' => __DIR__ . '/includes/PHPVersionCheck.php',
'PNGHandler' => __DIR__ . '/includes/media/PNGHandler.php',
'PNGMetadataExtractor' => __DIR__ . '/includes/media/PNGMetadataExtractor.php',
'PPCustomFrame_Hash' => __DIR__ . '/includes/parser/PPCustomFrame_Hash.php',
'PPDPart_Hash' => __DIR__ . '/includes/parser/PPDPart_Hash.php',
'PPDStackElement_Hash' => __DIR__ . '/includes/parser/PPDStackElement_Hash.php',
'PPDStack_Hash' => __DIR__ . '/includes/parser/PPDStack_Hash.php',
'PPFrame' => __DIR__ . '/includes/parser/PPFrame.php',
'PPFrame_Hash' => __DIR__ . '/includes/parser/PPFrame_Hash.php',
'PPNode' => __DIR__ . '/includes/parser/PPNode.php',
'PPNode_Hash_Array' => __DIR__ . '/includes/parser/PPNode_Hash_Array.php',
'PPNode_Hash_Attr' => __DIR__ . '/includes/parser/PPNode_Hash_Attr.php',
'PPNode_Hash_Text' => __DIR__ . '/includes/parser/PPNode_Hash_Text.php',
'PPNode_Hash_Tree' => __DIR__ . '/includes/parser/PPNode_Hash_Tree.php',
'PPTemplateFrame_Hash' => __DIR__ . '/includes/parser/PPTemplateFrame_Hash.php',
'PackedHoverImageGallery' => __DIR__ . '/includes/gallery/PackedHoverImageGallery.php',
'PackedImageGallery' => __DIR__ . '/includes/gallery/PackedImageGallery.php',
'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
'Page' => __DIR__ . '/includes/page/Page.php',
'PageArchive' => __DIR__ . '/includes/page/PageArchive.php',
'PageDataRequestHandler' => __DIR__ . '/includes/linkeddata/PageDataRequestHandler.php',
'PageExists' => __DIR__ . '/maintenance/pageExists.php',
'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
'PageProps' => __DIR__ . '/includes/page/PageProps.php',
'PageQueryPage' => __DIR__ . '/includes/specialpage/PageQueryPage.php',
'Pager' => __DIR__ . '/includes/pager/Pager.php',
'PagerTools' => __DIR__ . '/includes/specials/pagers/PagerTools.php',
'PaginatingSearchEngine' => __DIR__ . '/includes/search/PaginatingSearchEngine.php',
'ParameterizedPassword' => __DIR__ . '/includes/password/ParameterizedPassword.php',
'Parser' => __DIR__ . '/includes/parser/Parser.php',
'ParserCache' => __DIR__ . '/includes/parser/ParserCache.php',
'ParserFactory' => __DIR__ . '/includes/parser/ParserFactory.php',
'ParserOptions' => __DIR__ . '/includes/parser/ParserOptions.php',
'ParserOutput' => __DIR__ . '/includes/parser/ParserOutput.php',
'ParsoidCachePrewarmJob' => __DIR__ . '/includes/jobqueue/jobs/ParsoidCachePrewarmJob.php',
'ParsoidVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/ParsoidVirtualRESTService.php',
'Password' => __DIR__ . '/includes/password/Password.php',
'PasswordError' => __DIR__ . '/includes/password/PasswordError.php',
'PasswordFactory' => __DIR__ . '/includes/password/PasswordFactory.php',
'PasswordPolicyChecks' => __DIR__ . '/includes/password/PasswordPolicyChecks.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'PasswordReset' => __DIR__ . '/includes/user/PasswordReset.php',
'PatchSql' => __DIR__ . '/maintenance/patchSql.php',
'PathRouter' => __DIR__ . '/includes/Request/PathRouter.php',
'PatrolLog' => __DIR__ . '/includes/logging/PatrolLog.php',
'PatrolLogFormatter' => __DIR__ . '/includes/logging/PatrolLogFormatter.php',
'Pbkdf2Password' => __DIR__ . '/includes/password/Pbkdf2PasswordUsingHashExtension.php',
'Pbkdf2PasswordUsingHashExtension' => __DIR__ . '/includes/password/Pbkdf2PasswordUsingHashExtension.php',
'Pbkdf2PasswordUsingOpenSSL' => __DIR__ . '/includes/password/Pbkdf2PasswordUsingOpenSSL.php',
'PerRowAugmentor' => __DIR__ . '/includes/search/PerRowAugmentor.php',
'PermissionsError' => __DIR__ . '/includes/exception/PermissionsError.php',
'Pingback' => __DIR__ . '/includes/Pingback.php',
'PoolCounter' => __DIR__ . '/includes/poolcounter/PoolCounter.php',
'PoolCounterNull' => __DIR__ . '/includes/poolcounter/PoolCounterNull.php',
'PoolCounterRedis' => __DIR__ . '/includes/poolcounter/PoolCounterRedis.php',
'PoolCounterWork' => __DIR__ . '/includes/poolcounter/PoolCounterWork.php',
'PoolCounterWorkViaCallback' => __DIR__ . '/includes/poolcounter/PoolCounterWorkViaCallback.php',
'PoolWorkArticleView' => __DIR__ . '/includes/poolcounter/PoolWorkArticleView.php',
'PoolWorkArticleViewCurrent' => __DIR__ . '/includes/poolcounter/PoolWorkArticleViewCurrent.php',
'PoolWorkArticleViewOld' => __DIR__ . '/includes/poolcounter/PoolWorkArticleViewOld.php',
'PopulateBacklinkNamespace' => __DIR__ . '/maintenance/populateBacklinkNamespace.php',
'PopulateChangeTagDef' => __DIR__ . '/maintenance/populateChangeTagDef.php',
'PopulateFilearchiveSha1' => __DIR__ . '/maintenance/populateFilearchiveSha1.php',
'PopulateImageSha1' => __DIR__ . '/maintenance/populateImageSha1.php',
'PopulateInterwiki' => __DIR__ . '/maintenance/populateInterwiki.php',
'PopulateIpChanges' => __DIR__ . '/maintenance/populateIpChanges.php',
'PopulatePPSortKey' => __DIR__ . '/maintenance/populatePPSortKey.php',
'PopulateRecentChangesSource' => __DIR__ . '/maintenance/populateRecentChangesSource.php',
'PopulateRevisionLength' => __DIR__ . '/maintenance/populateRevisionLength.php',
'PopulateRevisionSha1' => __DIR__ . '/maintenance/populateRevisionSha1.php',
'PostgresInstaller' => __DIR__ . '/includes/installer/PostgresInstaller.php',
'PostgresUpdater' => __DIR__ . '/includes/installer/PostgresUpdater.php',
'PreferencesFormOOUI' => __DIR__ . '/includes/specials/forms/PreferencesFormOOUI.php',
'PrefixSearch' => __DIR__ . '/includes/search/PrefixSearch.php',
'PrefixingStatsdDataFactoryProxy' => __DIR__ . '/includes/libs/stats/PrefixingStatsdDataFactoryProxy.php',
'Preprocessor' => __DIR__ . '/includes/parser/Preprocessor.php',
'Preprocessor_Hash' => __DIR__ . '/includes/parser/Preprocessor_Hash.php',
Implement extension registration from an extension.json file Introduces wfLoadExtension()/wfLoadSkin() which should be used in LocalSettings.php rather than require-ing a PHP entry point. Extensions and skins would add "extension.json" or "skin.json" files in their root, which contains all the information typically present in PHP entry point files (classes to autoload, special pages, API modules, etc.) A full schema can be found at docs/extension.schema.json, and a script to validate these to the schema is provided. An additional script is provided to convert typical PHP entry point files into their JSON equivalents. The basic flow of loading an extension goes like: * Get the ExtensionRegistry singleton instance * ExtensionRegistry takes a filename, reads the file or tries to get the parsed JSON from APC if possible. * The JSON is run through a Processor instance, which registers things with the appropriate global settings. * The output of the processor is cached in APC if possible. * The extension/skin is marked as loaded in the ExtensionRegistry and a callback function is executed if one was specified. For ideal performance, a batch loading method is also provided: * The absolute path name to the JSON file is queued in the ExtensionRegistry instance. * When loadFromQueue() is called, it constructs a hash unique to the members of the current queue, and sees if the queue has been cached in APC. If not, it processes each file individually, and combines the result of each Processor into one giant array, which is cached in APC. * The giant array then sets various global settings, defines constants, and calls callbacks. To invalidate the cached processed info, by default the mtime of each JSON file is checked. However that can be slow if you have a large number of extensions, so you can set $wgExtensionInfoMTime to the mtime of one file, and `touch` it whenever you update your extensions. Change-Id: I7074b65d07c5c7d4e3f1fb0755d74a0b07ed4596
2014-10-15 00:31:15 +00:00
'Processor' => __DIR__ . '/includes/registration/Processor.php',
'Profiler' => __DIR__ . '/includes/profiler/Profiler.php',
'ProfilerExcimer' => __DIR__ . '/includes/profiler/ProfilerExcimer.php',
'ProfilerOutput' => __DIR__ . '/includes/profiler/output/ProfilerOutput.php',
'ProfilerOutputDump' => __DIR__ . '/includes/profiler/output/ProfilerOutputDump.php',
'ProfilerOutputStats' => __DIR__ . '/includes/profiler/output/ProfilerOutputStats.php',
'ProfilerOutputText' => __DIR__ . '/includes/profiler/output/ProfilerOutputText.php',
'ProfilerSectionOnly' => __DIR__ . '/includes/profiler/ProfilerSectionOnly.php',
'ProfilerStub' => __DIR__ . '/includes/profiler/ProfilerStub.php',
'ProfilerXhprof' => __DIR__ . '/includes/profiler/ProfilerXhprof.php',
'Protect' => __DIR__ . '/maintenance/protect.php',
'ProtectAction' => __DIR__ . '/includes/actions/ProtectAction.php',
'ProtectLogFormatter' => __DIR__ . '/includes/logging/ProtectLogFormatter.php',
'ProtectedPagesPager' => __DIR__ . '/includes/specials/pagers/ProtectedPagesPager.php',
'ProtectedTitlesPager' => __DIR__ . '/includes/specials/pagers/ProtectedTitlesPager.php',
'ProtectionForm' => __DIR__ . '/includes/ProtectionForm.php',
'ProxyLookup' => __DIR__ . '/includes/ProxyLookup.php',
'PruneFileCache' => __DIR__ . '/maintenance/pruneFileCache.php',
'PruneUnusedLinkTargetRows' => __DIR__ . '/maintenance/pruneUnusedLinkTargetRows.php',
'PublishStashedFileJob' => __DIR__ . '/includes/jobqueue/jobs/PublishStashedFileJob.php',
'PurgeAction' => __DIR__ . '/includes/actions/PurgeAction.php',
'PurgeChangedFiles' => __DIR__ . '/maintenance/purgeChangedFiles.php',
'PurgeChangedPages' => __DIR__ . '/maintenance/purgeChangedPages.php',
'PurgeExpiredBlocks' => __DIR__ . '/maintenance/purgeExpiredBlocks.php',
'PurgeExpiredUserrights' => __DIR__ . '/maintenance/purgeExpiredUserrights.php',
'PurgeExpiredWatchlistItems' => __DIR__ . '/maintenance/purgeExpiredWatchlistItems.php',
'PurgeJobUtils' => __DIR__ . '/includes/jobqueue/utils/PurgeJobUtils.php',
'PurgeList' => __DIR__ . '/maintenance/purgeList.php',
rebuildLocalisationCache: Add --skip-message-purge and accompanying script == Adding --skip-message-purge Follows-up d91c6627a929. Per CR and Phab comments, I don't think we can (yet) promise a generic "--offline" mode. This seems too easy to misuse. Both for users of the script, as well as for future development to the script. It can fall out out of sync with requirements of the overall system and leaves no natural place to discover what responsibilities are being deferred and how the operator should fulfill those duties. We know LCStoreDB doesn't work offline, but there are likely other aspects of this that don't yet work offline for some users. It would require a much more rigorous refactor (and dropping signifant extension hooks) to make this reliably offline. I'd welcome a standalone script using only vendor libs, that does nothing other than scan directories and build JSON/PHP/CDB files, but that's not what it is today. What we can do is skip the one operation we know requires a live DB connection, and (my main motivation for this commit) then document that skipping it, require the user to perform the purge by other means instead, since the purge itself is not actually optional. Also, make this not a WMF-specific option in MW core, by committing the accompanying script needed for this to work. This was previously in the WikimediaMaintenance extension as "refreshMessageBlobs.php". == Keeping --offline (as --no-database) As far as I know, the purge is the only action we ran into that needed a database connection, and important to note was that it's not optional. I think for WMF we did not run into any other logic in our configuration that uses a database, so --skip-message-purge should suffice. However, I've kept the option for two reasons: 1. To recognise in some way the business need for WMF to use this script in an offline manner, and thus document that the script should at least have a way to work offline, even if there may be site configurations and extensions that make this impossible, from a core perspective we want to (experimentally) try to support this. 2. There is unimportant setup logic that happens in doMaintenance.php where the service wiring for LBFactory is activated by default. This seems avoidable and technical debt, but at least for now we do need a way to skip that, so this option will continue to have that effect. However, I've renamed the option and inverted its promise. This is not a promise from core *to* the user to offer an offline mode. Rather, it is a promise *from* the user that they think nothing DB-needy is in use. Bug: T268698 Bug: T263872 Change-Id: I7878fdf4a901fb5e75da540293bb9df9fb508c20
2021-04-06 22:17:25 +00:00
'PurgeMessageBlobStore' => __DIR__ . '/maintenance/purgeMessageBlobStore.php',
'PurgeModuleDeps' => __DIR__ . '/maintenance/purgeModuleDeps.php',
'PurgeOldText' => __DIR__ . '/maintenance/purgeOldText.php',
'PurgePage' => __DIR__ . '/maintenance/purgePage.php',
'PurgeParserCache' => __DIR__ . '/maintenance/purgeParserCache.php',
'QueryPage' => __DIR__ . '/includes/specialpage/QueryPage.php',
'QuickTemplate' => __DIR__ . '/includes/skins/QuickTemplate.php',
'QuorumLockManager' => __DIR__ . '/includes/libs/lockmanager/QuorumLockManager.php',
'RCCacheEntry' => __DIR__ . '/includes/changes/RCCacheEntry.php',
'RCCacheEntryFactory' => __DIR__ . '/includes/changes/RCCacheEntryFactory.php',
'RCDatabaseLogEntry' => __DIR__ . '/includes/logging/RCDatabaseLogEntry.php',
Refactor RCFeed configuration (backwards compatible) Previously: * Engines had to be registered in $wgRCEngines. * The RCFeedEngine classes took no constructor arguments and were expected to send whatever text is previously formatted without any information about it. This generic design was flexible in allowing one to use any formatter with any engine with minimal configuration and no need for additional classes. * Each feed configured their destination by setting a 'uri' option that encodes the name of the engine in PHP as the uri scheme. Other uri components had to be used for any other parameters to the engine (host, port, path). While fairly limited, it was sufficient for the default engines in core. Changes: * Allow feed classes to be directly associated with a feed in $wgRCFeeds via a new 'class' option - without the indirection of 'uri' and $wgRCEngines. All options are passed to the given class constructor. This matches the design used elsewhere in MediaWiki. (ObjectCache, FileRepo, FileBackend, JobQueue, LBFactory, etc.) This means we no longer enforce a 1:1 mapping of internet protocols to a specific feed engine, and it allows settings to be passed without being encoded as a URI neccecarily. Main use case for this refactor is EventBus (see I7edc4d57fa), Interestingly, this matches the (then incorrect) documentation written for $wgRCFeeds in 2961884b43 (which mentions an 'engine' property that would do the same thing). * Move the default 'omit' filters and unrestricted 'formatter' handling to a new FormattedRCFeed class, which remains the default. * Deprecate RecentChange::getEngine() in favour of RCFeed::factory(). * Document wgRCEngines as "@since 1.22". Follows 2961884b43, ffc71cb6af. Change-Id: I8be497c623c5d928762e3d3406a388f4d91add9a
2017-01-06 01:27:43 +00:00
'RCFeed' => __DIR__ . '/includes/rcfeed/RCFeed.php',
'RCFeedEngine' => __DIR__ . '/includes/rcfeed/FormattedRCFeed.php',
'RCFeedFormatter' => __DIR__ . '/includes/rcfeed/RCFeedFormatter.php',
'RESTBagOStuff' => __DIR__ . '/includes/libs/objectcache/RESTBagOStuff.php',
'RSSFeed' => __DIR__ . '/includes/Feed/RSSFeed.php',
'RandomPage' => __DIR__ . '/includes/specials/SpecialRandomPage.php',
'RangeChronologicalPager' => __DIR__ . '/includes/pager/RangeChronologicalPager.php',
'RangeDifference' => __DIR__ . '/includes/diff/RangeDifference.php',
'RawAction' => __DIR__ . '/includes/actions/RawAction.php',
'RawMessage' => __DIR__ . '/includes/language/RawMessage.php',
'ReadOnlyError' => __DIR__ . '/includes/exception/ReadOnlyError.php',
'ReadOnlyMode' => __DIR__ . '/includes/ReadOnlyMode.php',
'ReassignEdits' => __DIR__ . '/maintenance/reassignEdits.php',
'RebuildAll' => __DIR__ . '/maintenance/rebuildall.php',
'RebuildFileCache' => __DIR__ . '/maintenance/rebuildFileCache.php',
'RebuildLocalisationCache' => __DIR__ . '/maintenance/rebuildLocalisationCache.php',
'RebuildMessages' => __DIR__ . '/maintenance/rebuildmessages.php',
'RebuildRecentchanges' => __DIR__ . '/maintenance/rebuildrecentchanges.php',
'RebuildTextIndex' => __DIR__ . '/maintenance/rebuildtextindex.php',
'RecentChange' => __DIR__ . '/includes/changes/RecentChange.php',
'RecentChangesUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/RecentChangesUpdateJob.php',
'RecountCategories' => __DIR__ . '/maintenance/recountCategories.php',
'RedirectSpecialArticle' => __DIR__ . '/includes/specialpage/RedirectSpecialArticle.php',
'RedirectSpecialPage' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
'RedisBagOStuff' => __DIR__ . '/includes/libs/objectcache/RedisBagOStuff.php',
'RedisConnRef' => __DIR__ . '/includes/libs/redis/RedisConnRef.php',
'RedisConnectionPool' => __DIR__ . '/includes/libs/redis/RedisConnectionPool.php',
'RedisLockManager' => __DIR__ . '/includes/libs/lockmanager/RedisLockManager.php',
'RedisPubSubFeedEngine' => __DIR__ . '/includes/rcfeed/RedisPubSubFeedEngine.php',
'RefreshExternallinksIndex' => __DIR__ . '/maintenance/refreshExternallinksIndex.php',
'RefreshFileHeaders' => __DIR__ . '/maintenance/refreshFileHeaders.php',
'RefreshImageMetadata' => __DIR__ . '/maintenance/refreshImageMetadata.php',
'RefreshLinks' => __DIR__ . '/maintenance/refreshLinks.php',
'RefreshLinksJob' => __DIR__ . '/includes/jobqueue/jobs/RefreshLinksJob.php',
'RefreshSecondaryDataUpdate' => __DIR__ . '/includes/deferred/RefreshSecondaryDataUpdate.php',
'RemoteIcuCollation' => __DIR__ . '/includes/collation/RemoteIcuCollation.php',
'RemoveInvalidEmails' => __DIR__ . '/maintenance/removeInvalidEmails.php',
'RemoveUnusedAccounts' => __DIR__ . '/maintenance/removeUnusedAccounts.php',
'RenameDbPrefix' => __DIR__ . '/maintenance/renameDbPrefix.php',
'RenameRestrictions' => __DIR__ . '/maintenance/renameRestrictions.php',
'RenderAction' => __DIR__ . '/includes/actions/RenderAction.php',
'ReplacementArray' => __DIR__ . '/includes/libs/ReplacementArray.php',
'ReplicatedBagOStuff' => __DIR__ . '/includes/libs/objectcache/ReplicatedBagOStuff.php',
'RepoGroup' => __DIR__ . '/includes/filerepo/RepoGroup.php',
'RequestContext' => __DIR__ . '/includes/context/RequestContext.php',
'ResetAuthenticationThrottle' => __DIR__ . '/maintenance/resetAuthenticationThrottle.php',
'ResetPageRandom' => __DIR__ . '/maintenance/resetPageRandom.php',
'ResetUserEmail' => __DIR__ . '/maintenance/resetUserEmail.php',
'ResolveStubs' => __DIR__ . '/maintenance/storage/resolveStubs.php',
'ResourceFileCache' => __DIR__ . '/includes/cache/ResourceFileCache.php',
'ResourceLoader' => __DIR__ . '/includes/ResourceLoader/ResourceLoader.php',
'ResourceLoaderCircularDependencyError' => __DIR__ . '/includes/ResourceLoader/CircularDependencyError.php',
'ResourceLoaderClientHtml' => __DIR__ . '/includes/ResourceLoader/ClientHtml.php',
'ResourceLoaderCodexModule' => __DIR__ . '/includes/ResourceLoader/CodexModule.php',
'ResourceLoaderContext' => __DIR__ . '/includes/ResourceLoader/Context.php',
'ResourceLoaderFileModule' => __DIR__ . '/includes/ResourceLoader/FileModule.php',
'ResourceLoaderFilePath' => __DIR__ . '/includes/ResourceLoader/FilePath.php',
'ResourceLoaderForeignApiModule' => __DIR__ . '/includes/ResourceLoader/ForeignApiModule.php',
'ResourceLoaderImage' => __DIR__ . '/includes/ResourceLoader/Image.php',
'ResourceLoaderImageModule' => __DIR__ . '/includes/ResourceLoader/ImageModule.php',
'ResourceLoaderLanguageDataModule' => __DIR__ . '/includes/ResourceLoader/LanguageDataModule.php',
'ResourceLoaderLessVarFileModule' => __DIR__ . '/includes/ResourceLoader/LessVarFileModule.php',
'ResourceLoaderModule' => __DIR__ . '/includes/ResourceLoader/Module.php',
'ResourceLoaderMwUrlModule' => __DIR__ . '/includes/ResourceLoader/MwUrlModule.php',
'ResourceLoaderOOUIFileModule' => __DIR__ . '/includes/ResourceLoader/OOUIFileModule.php',
'ResourceLoaderOOUIIconPackModule' => __DIR__ . '/includes/ResourceLoader/OOUIIconPackModule.php',
'ResourceLoaderOOUIImageModule' => __DIR__ . '/includes/ResourceLoader/OOUIImageModule.php',
'ResourceLoaderOOUIModule' => __DIR__ . '/includes/ResourceLoader/OOUIModule.php',
'ResourceLoaderSiteModule' => __DIR__ . '/includes/ResourceLoader/SiteModule.php',
'ResourceLoaderSiteStylesModule' => __DIR__ . '/includes/ResourceLoader/SiteStylesModule.php',
'ResourceLoaderSkinModule' => __DIR__ . '/includes/ResourceLoader/SkinModule.php',
'ResourceLoaderStartUpModule' => __DIR__ . '/includes/ResourceLoader/StartUpModule.php',
'ResourceLoaderUserModule' => __DIR__ . '/includes/ResourceLoader/UserModule.php',
'ResourceLoaderUserOptionsModule' => __DIR__ . '/includes/ResourceLoader/UserOptionsModule.php',
'ResourceLoaderUserStylesModule' => __DIR__ . '/includes/ResourceLoader/UserStylesModule.php',
'ResourceLoaderWikiModule' => __DIR__ . '/includes/ResourceLoader/WikiModule.php',
'RestbaseVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/RestbaseVirtualRESTService.php',
'ResultAugmentor' => __DIR__ . '/includes/search/ResultAugmentor.php',
'ResultSetAugmentor' => __DIR__ . '/includes/search/ResultSetAugmentor.php',
'ResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php',
'RevDelArchiveItem' => __DIR__ . '/includes/revisiondelete/RevDelArchiveItem.php',
'RevDelArchiveList' => __DIR__ . '/includes/revisiondelete/RevDelArchiveList.php',
'RevDelArchivedFileItem' => __DIR__ . '/includes/revisiondelete/RevDelArchivedFileItem.php',
'RevDelArchivedFileList' => __DIR__ . '/includes/revisiondelete/RevDelArchivedFileList.php',
'RevDelArchivedRevisionItem' => __DIR__ . '/includes/revisiondelete/RevDelArchivedRevisionItem.php',
'RevDelFileItem' => __DIR__ . '/includes/revisiondelete/RevDelFileItem.php',
'RevDelFileList' => __DIR__ . '/includes/revisiondelete/RevDelFileList.php',
'RevDelItem' => __DIR__ . '/includes/revisiondelete/RevDelItem.php',
'RevDelList' => __DIR__ . '/includes/revisiondelete/RevDelList.php',
'RevDelLogItem' => __DIR__ . '/includes/revisiondelete/RevDelLogItem.php',
'RevDelLogList' => __DIR__ . '/includes/revisiondelete/RevDelLogList.php',
'RevDelRevisionItem' => __DIR__ . '/includes/revisiondelete/RevDelRevisionItem.php',
'RevDelRevisionList' => __DIR__ . '/includes/revisiondelete/RevDelRevisionList.php',
'ReverseArrayIterator' => __DIR__ . '/includes/libs/ReverseArrayIterator.php',
'ReverseChronologicalPager' => __DIR__ . '/includes/pager/ReverseChronologicalPager.php',
'RevertAction' => __DIR__ . '/includes/actions/RevertAction.php',
Add mw-reverted change tag The tag is added to reverted edits as described in T254074. Functionality: * Adding the mw-reverted tag to reverted edits (duh) * Limiting the maximum depth of the update through a config variable (mitigation #2 from T259014). * Only applying the reverted tag after the edit has been somehow approved. Only the patrol subsystem currently implements this, but there's a hook that extensions can use (mitigation #4 from T259014, more explanation in T259103). * When performing the delayed update, it is checked whether the reverted edit was reverted itself. If so, the update is ignored. This is probably the only way to make the feature work due to the lack of an explicit "disapproval" mechanism other than reverting. * The update is also ignored if the revert is marked as deleted. Technical design: * The update code is in RevertedTagUpdate.php, which is a deferrable update, but is not used as such. It's separated to allow for better DI, testing and better code reusability in the future. * The update is queued / ran using the Job subsystem. The relevant job is in RevertedTagUpdateJob.php * PageUpdater determines whether the edit is approved or not and passes that to the DerivedPageDataUpdater. * The BeforeRevertedTagUpdate hook lets extensions decide whether the update should be ran right away or await approval. * DerivedPageDataUpdater checks whether the edit is a revert and if so either enqueues the job (if it's auto-approved) or caches the EditResult for later use (if it needs approval). * RevertedTagUpdateManager allows for easy re-enqueueing of the update for extensions. Thus, it has a very minimal interface. Other notes: * The unit testing setup for RevertedTagUpdate is a bit complicated, but it was the only way I could make this class testable while using the static ChangeTags class. Bug: T254074 Depends-On: I86d0e660f0acd51a7351396c5c82a400d3963b94 Change-Id: I70d5b29fec6b6058613f7ac2fb49f9fad9dc8da4
2020-07-06 11:47:22 +00:00
'RevertedTagUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/RevertedTagUpdateJob.php',
'RevisionDeleteUser' => __DIR__ . '/includes/revisiondelete/RevisionDeleteUser.php',
'RevisionDeleter' => __DIR__ . '/includes/revisiondelete/RevisionDeleter.php',
'RevisionItem' => __DIR__ . '/includes/revisionlist/RevisionItem.php',
'RevisionItemBase' => __DIR__ . '/includes/revisionlist/RevisionItemBase.php',
'RevisionList' => __DIR__ . '/includes/revisionlist/RevisionList.php',
'RevisionListBase' => __DIR__ . '/includes/revisionlist/RevisionListBase.php',
'RevisionSearchResult' => __DIR__ . '/includes/search/RevisionSearchResult.php',
'RevisionSearchResultTrait' => __DIR__ . '/includes/search/RevisionSearchResultTrait.php',
'RiffExtractor' => __DIR__ . '/includes/libs/RiffExtractor.php',
'RightsLogFormatter' => __DIR__ . '/includes/logging/RightsLogFormatter.php',
'RollbackAction' => __DIR__ . '/includes/actions/RollbackAction.php',
'RollbackEdits' => __DIR__ . '/maintenance/rollbackEdits.php',
'RowUpdateGenerator' => __DIR__ . '/includes/utils/RowUpdateGenerator.php',
'RunBatchedQuery' => __DIR__ . '/maintenance/runBatchedQuery.php',
'RunJobs' => __DIR__ . '/maintenance/runJobs.php',
'RunnableJob' => __DIR__ . '/includes/jobqueue/RunnableJob.php',
'SVGReader' => __DIR__ . '/includes/media/SVGReader.php',
'SamplingStatsdClient' => __DIR__ . '/includes/libs/stats/SamplingStatsdClient.php',
'Sanitizer' => __DIR__ . '/includes/parser/Sanitizer.php',
'SchemaMaintenance' => __DIR__ . '/maintenance/includes/SchemaMaintenance.php',
'ScopedLock' => __DIR__ . '/includes/libs/lockmanager/ScopedLock.php',
'SearchApi' => __DIR__ . '/includes/api/SearchApi.php',
'SearchDatabase' => __DIR__ . '/includes/search/SearchDatabase.php',
'SearchDump' => __DIR__ . '/maintenance/dumpIterator.php',
'SearchEngine' => __DIR__ . '/includes/search/SearchEngine.php',
'SearchEngineConfig' => __DIR__ . '/includes/search/SearchEngineConfig.php',
'SearchEngineDummy' => __DIR__ . '/includes/search/SearchEngineDummy.php',
'SearchEngineFactory' => __DIR__ . '/includes/search/SearchEngineFactory.php',
'SearchExactMatchRescorer' => __DIR__ . '/includes/search/SearchExactMatchRescorer.php',
'SearchHighlighter' => __DIR__ . '/includes/search/SearchHighlighter.php',
'SearchIndexField' => __DIR__ . '/includes/search/SearchIndexField.php',
'SearchIndexFieldDefinition' => __DIR__ . '/includes/search/SearchIndexFieldDefinition.php',
'SearchMySQL' => __DIR__ . '/includes/search/SearchMySQL.php',
'SearchNearMatchResultSet' => __DIR__ . '/includes/search/SearchNearMatchResultSet.php',
'SearchNearMatcher' => __DIR__ . '/includes/search/SearchNearMatcher.php',
'SearchPostgres' => __DIR__ . '/includes/search/SearchPostgres.php',
'SearchResult' => __DIR__ . '/includes/search/SearchResult.php',
'SearchResultSet' => __DIR__ . '/includes/search/SearchResultSet.php',
'SearchResultSetTrait' => __DIR__ . '/includes/search/SearchResultSetTrait.php',
'SearchResultTrait' => __DIR__ . '/includes/search/SearchResultTrait.php',
'SearchSqlite' => __DIR__ . '/includes/search/SearchSqlite.php',
'SearchSuggestion' => __DIR__ . '/includes/search/SearchSuggestion.php',
'SearchSuggestionSet' => __DIR__ . '/includes/search/SearchSuggestionSet.php',
'SearchUpdate' => __DIR__ . '/includes/deferred/SearchUpdate.php',
'SectionProfileCallback' => __DIR__ . '/includes/profiler/SectionProfileCallback.php',
'SectionProfiler' => __DIR__ . '/includes/profiler/SectionProfiler.php',
'SendPasswordResetEmailUpdate' => __DIR__ . '/includes/deferred/SendPasswordResetEmailUpdate.php',
'SerializedValueContainer' => __DIR__ . '/includes/libs/objectcache/serialized/SerializedValueContainer.php',
'SevenZipStream' => __DIR__ . '/maintenance/includes/SevenZipStream.php',
'ShConverter' => __DIR__ . '/includes/language/converters/ShConverter.php',
'ShiConverter' => __DIR__ . '/includes/language/converters/ShiConverter.php',
'ShowJobs' => __DIR__ . '/maintenance/showJobs.php',
'ShowSiteStats' => __DIR__ . '/maintenance/showSiteStats.php',
'Site' => __DIR__ . '/includes/site/Site.php',
'SiteConfiguration' => __DIR__ . '/includes/SiteConfiguration.php',
'SiteExporter' => __DIR__ . '/includes/site/SiteExporter.php',
'SiteImporter' => __DIR__ . '/includes/site/SiteImporter.php',
'SiteList' => __DIR__ . '/includes/site/SiteList.php',
'SiteLookup' => __DIR__ . '/includes/site/SiteLookup.php',
'SiteStats' => __DIR__ . '/includes/SiteStats.php',
'SiteStatsInit' => __DIR__ . '/includes/SiteStatsInit.php',
'SiteStatsUpdate' => __DIR__ . '/includes/deferred/SiteStatsUpdate.php',
'SiteStore' => __DIR__ . '/includes/site/SiteStore.php',
'Skin' => __DIR__ . '/includes/skins/Skin.php',
'SkinApi' => __DIR__ . '/includes/skins/SkinApi.php',
'SkinException' => __DIR__ . '/includes/skins/SkinException.php',
'SkinFactory' => __DIR__ . '/includes/skins/SkinFactory.php',
'SkinFallback' => __DIR__ . '/includes/skins/SkinFallback.php',
'SkinMustache' => __DIR__ . '/includes/skins/SkinMustache.php',
'SkinTemplate' => __DIR__ . '/includes/skins/SkinTemplate.php',
'SlideshowImageGallery' => __DIR__ . '/includes/gallery/SlideshowImageGallery.php',
[MCR] Render multi-slot diffs Move logic for rendering a diff between two content objects out of DifferenceEngine, into a new SlotDiffRenderer class. Make DifferenceEngine use multiple SlotDiffRenderers, one per slot. This separates the class tree for changing high-level diff properties such as the header or the revision selection method (same as before: subclass DifferenceEngine and override ContentHandler::getDiffEngineClass or implement GetDifferenceEngine) and the one for changing the actual diff rendering for a given content type (subclass SlotDiffRenderer and override ContentHandler::getSlotDiffRenderer or implement GetSlotDiffRenderer). To keep B/C, when SlotDiffRenderer is not overridden for a given content type but DifferenceEngine is, that DifferenceEngine will be used instead. The weak point of the scheme is overriding the DifferenceEngine methods passing control to the SlotDiffRenderers (the ones calling getDifferenceEngines), without calling the parent. These are: showDiffStyle, getDiffBody, getDiffBodyCacheKeyParams. Extensions doing that will probably break in unpredictable ways (most likely, only showing the main slot diff). Nothing in gerrit does it, at least. A new GetSlotDiffRenderer hook is added to modify rendering for content models not owned by the extension, much like how GetDifferenceEngine works. Also deprecates public access to mNewRev/mOldRev and creates public getters instead. DifferenceEngine never supported external changes to those properties, this just acknowledges it. Bug: T194731 Change-Id: I2f8a9dbebd2290b7feafb20e2bb2a2693e18ba11 Depends-On: I04e885a33bfce5bccc807b9bcfe1eaa577a9fd47 Depends-On: I203d8895bf436b7fee53fe4718dede8a3b1768bc
2018-07-11 09:24:07 +00:00
'SlotDiffRenderer' => __DIR__ . '/includes/diff/SlotDiffRenderer.php',
'SpecialActiveUsers' => __DIR__ . '/includes/specials/SpecialActiveUsers.php',
'SpecialAllMessages' => __DIR__ . '/includes/specials/SpecialAllMessages.php',
'SpecialAllMyUploads' => __DIR__ . '/includes/specials/redirects/SpecialAllMyUploads.php',
'SpecialAllPages' => __DIR__ . '/includes/specials/SpecialAllPages.php',
'SpecialAncientPages' => __DIR__ . '/includes/specials/SpecialAncientPages.php',
'SpecialApiHelp' => __DIR__ . '/includes/specials/SpecialApiHelp.php',
'SpecialApiSandbox' => __DIR__ . '/includes/specials/SpecialApiSandbox.php',
'SpecialAutoblockList' => __DIR__ . '/includes/specials/SpecialAutoblockList.php',
'SpecialBlankpage' => __DIR__ . '/includes/specials/SpecialBlankpage.php',
'SpecialBlock' => __DIR__ . '/includes/specials/SpecialBlock.php',
'SpecialBlockList' => __DIR__ . '/includes/specials/SpecialBlockList.php',
'SpecialBookSources' => __DIR__ . '/includes/specials/SpecialBookSources.php',
'SpecialBotPasswords' => __DIR__ . '/includes/specials/SpecialBotPasswords.php',
'SpecialBrokenRedirects' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
'SpecialCategories' => __DIR__ . '/includes/specials/SpecialCategories.php',
'SpecialChangeContentModel' => __DIR__ . '/includes/specials/SpecialChangeContentModel.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'SpecialChangeCredentials' => __DIR__ . '/includes/specials/SpecialChangeCredentials.php',
'SpecialChangeEmail' => __DIR__ . '/includes/specials/SpecialChangeEmail.php',
'SpecialChangePassword' => __DIR__ . '/includes/specials/SpecialChangePassword.php',
'SpecialComparePages' => __DIR__ . '/includes/specials/SpecialComparePages.php',
'SpecialConfirmEmail' => __DIR__ . '/includes/specials/SpecialConfirmEmail.php',
'SpecialContribute' => __DIR__ . '/includes/specials/SpecialContribute.php',
'SpecialContributions' => __DIR__ . '/includes/specials/SpecialContributions.php',
'SpecialCreateAccount' => __DIR__ . '/includes/specials/SpecialCreateAccount.php',
'SpecialDeadendPages' => __DIR__ . '/includes/specials/SpecialDeadendPages.php',
'SpecialDeletePage' => __DIR__ . '/includes/specials/SpecialDeletePage.php',
'SpecialDeletedContributions' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
'SpecialDiff' => __DIR__ . '/includes/specials/SpecialDiff.php',
'SpecialDoubleRedirects' => __DIR__ . '/includes/specials/SpecialDoubleRedirects.php',
'SpecialEditPage' => __DIR__ . '/includes/specials/SpecialEditPage.php',
'SpecialEditTags' => __DIR__ . '/includes/specials/SpecialEditTags.php',
'SpecialEditWatchlist' => __DIR__ . '/includes/specials/SpecialEditWatchlist.php',
'SpecialEmailInvalidate' => __DIR__ . '/includes/specials/SpecialEmailInvalidate.php',
'SpecialEmailUser' => __DIR__ . '/includes/specials/SpecialEmailUser.php',
'SpecialExpandTemplates' => __DIR__ . '/includes/specials/SpecialExpandTemplates.php',
'SpecialExport' => __DIR__ . '/includes/specials/SpecialExport.php',
'SpecialFewestRevisions' => __DIR__ . '/includes/specials/SpecialFewestRevisions.php',
'SpecialFileDuplicateSearch' => __DIR__ . '/includes/specials/SpecialFileDuplicateSearch.php',
'SpecialFilepath' => __DIR__ . '/includes/specials/SpecialFilepath.php',
'SpecialGoToInterwiki' => __DIR__ . '/includes/specials/SpecialGoToInterwiki.php',
'SpecialImport' => __DIR__ . '/includes/specials/SpecialImport.php',
'SpecialJavaScriptTest' => __DIR__ . '/includes/specials/SpecialJavaScriptTest.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'SpecialLinkAccounts' => __DIR__ . '/includes/specials/SpecialLinkAccounts.php',
'SpecialLinkSearch' => __DIR__ . '/includes/specials/SpecialLinkSearch.php',
'SpecialListAdmins' => __DIR__ . '/includes/specials/redirects/SpecialListAdmins.php',
'SpecialListBots' => __DIR__ . '/includes/specials/redirects/SpecialListBots.php',
'SpecialListDuplicatedFiles' => __DIR__ . '/includes/specials/SpecialListDuplicatedFiles.php',
'SpecialListFiles' => __DIR__ . '/includes/specials/SpecialListFiles.php',
'SpecialListGrants' => __DIR__ . '/includes/specials/SpecialListGrants.php',
'SpecialListGroupRights' => __DIR__ . '/includes/specials/SpecialListGroupRights.php',
'SpecialListRedirects' => __DIR__ . '/includes/specials/SpecialListRedirects.php',
'SpecialListUsers' => __DIR__ . '/includes/specials/SpecialListUsers.php',
'SpecialLockdb' => __DIR__ . '/includes/specials/SpecialLockdb.php',
'SpecialLog' => __DIR__ . '/includes/specials/SpecialLog.php',
'SpecialLonelyPages' => __DIR__ . '/includes/specials/SpecialLonelyPages.php',
'SpecialLongPages' => __DIR__ . '/includes/specials/SpecialLongPages.php',
'SpecialMIMESearch' => __DIR__ . '/includes/specials/SpecialMIMESearch.php',
'SpecialMediaStatistics' => __DIR__ . '/includes/specials/SpecialMediaStatistics.php',
'SpecialMergeHistory' => __DIR__ . '/includes/specials/SpecialMergeHistory.php',
'SpecialMostCategories' => __DIR__ . '/includes/specials/SpecialMostCategories.php',
'SpecialMostInterwikis' => __DIR__ . '/includes/specials/SpecialMostInterwikis.php',
'SpecialMostLinked' => __DIR__ . '/includes/specials/SpecialMostLinked.php',
'SpecialMostLinkedCategories' => __DIR__ . '/includes/specials/SpecialMostLinkedCategories.php',
'SpecialMostLinkedTemplates' => __DIR__ . '/includes/specials/SpecialMostLinkedTemplates.php',
'SpecialMostRevisions' => __DIR__ . '/includes/specials/SpecialMostRevisions.php',
'SpecialMute' => __DIR__ . '/includes/specials/SpecialMute.php',
'SpecialMyLanguage' => __DIR__ . '/includes/specials/SpecialMyLanguage.php',
'SpecialMycontributions' => __DIR__ . '/includes/specials/redirects/SpecialMycontributions.php',
'SpecialMypage' => __DIR__ . '/includes/specials/redirects/SpecialMypage.php',
'SpecialMytalk' => __DIR__ . '/includes/specials/redirects/SpecialMytalk.php',
'SpecialMyuploads' => __DIR__ . '/includes/specials/redirects/SpecialMyuploads.php',
'SpecialNewFiles' => __DIR__ . '/includes/specials/SpecialNewFiles.php',
'SpecialNewSection' => __DIR__ . '/includes/specials/SpecialNewSection.php',
'SpecialNewpages' => __DIR__ . '/includes/specials/SpecialNewpages.php',
'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
'SpecialPageAction' => __DIR__ . '/includes/actions/SpecialPageAction.php',
'SpecialPageData' => __DIR__ . '/includes/specials/SpecialPageData.php',
'SpecialPageHistory' => __DIR__ . '/includes/specials/SpecialPageHistory.php',
'SpecialPageInfo' => __DIR__ . '/includes/specials/SpecialPageInfo.php',
'SpecialPageLanguage' => __DIR__ . '/includes/specials/SpecialPageLanguage.php',
'SpecialPagesWithProp' => __DIR__ . '/includes/specials/SpecialPagesWithProp.php',
'SpecialPasswordPolicies' => __DIR__ . '/includes/specials/SpecialPasswordPolicies.php',
'SpecialPasswordReset' => __DIR__ . '/includes/specials/SpecialPasswordReset.php',
'SpecialPermanentLink' => __DIR__ . '/includes/specials/SpecialPermanentLink.php',
'SpecialPreferences' => __DIR__ . '/includes/specials/SpecialPreferences.php',
'SpecialPrefixindex' => __DIR__ . '/includes/specials/SpecialPrefixindex.php',
'SpecialProtectPage' => __DIR__ . '/includes/specials/SpecialProtectPage.php',
'SpecialProtectedpages' => __DIR__ . '/includes/specials/SpecialProtectedpages.php',
'SpecialProtectedtitles' => __DIR__ . '/includes/specials/SpecialProtectedtitles.php',
'SpecialPurge' => __DIR__ . '/includes/specials/SpecialPurge.php',
'SpecialRandomInCategory' => __DIR__ . '/includes/specials/SpecialRandomInCategory.php',
'SpecialRandomPage' => __DIR__ . '/includes/specials/SpecialRandomPage.php',
'SpecialRandomRedirect' => __DIR__ . '/includes/specials/SpecialRandomRedirect.php',
'SpecialRandomRootPage' => __DIR__ . '/includes/specials/SpecialRandomRootPage.php',
'SpecialRecentChanges' => __DIR__ . '/includes/specials/SpecialRecentChanges.php',
'SpecialRecentChangesLinked' => __DIR__ . '/includes/specials/SpecialRecentChangesLinked.php',
'SpecialRedirect' => __DIR__ . '/includes/specials/SpecialRedirect.php',
'SpecialRedirectToSpecial' => __DIR__ . '/includes/specialpage/SpecialRedirectToSpecial.php',
'SpecialRedirectWithAction' => __DIR__ . '/includes/specialpage/SpecialRedirectWithAction.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'SpecialRemoveCredentials' => __DIR__ . '/includes/specials/SpecialRemoveCredentials.php',
'SpecialResetTokens' => __DIR__ . '/includes/specials/SpecialResetTokens.php',
'SpecialRevisionDelete' => __DIR__ . '/includes/specials/SpecialRevisionDelete.php',
'SpecialRunJobs' => __DIR__ . '/includes/specials/SpecialRunJobs.php',
'SpecialSearch' => __DIR__ . '/includes/specials/SpecialSearch.php',
'SpecialShortPages' => __DIR__ . '/includes/specials/SpecialShortPages.php',
'SpecialSpecialpages' => __DIR__ . '/includes/specials/SpecialSpecialpages.php',
'SpecialStatistics' => __DIR__ . '/includes/specials/SpecialStatistics.php',
'SpecialTags' => __DIR__ . '/includes/specials/SpecialTags.php',
'SpecialTrackingCategories' => __DIR__ . '/includes/specials/SpecialTrackingCategories.php',
'SpecialUnblock' => __DIR__ . '/includes/specials/SpecialUnblock.php',
'SpecialUncategorizedCategories' => __DIR__ . '/includes/specials/SpecialUncategorizedCategories.php',
'SpecialUncategorizedImages' => __DIR__ . '/includes/specials/SpecialUncategorizedImages.php',
'SpecialUncategorizedPages' => __DIR__ . '/includes/specials/SpecialUncategorizedPages.php',
'SpecialUncategorizedTemplates' => __DIR__ . '/includes/specials/SpecialUncategorizedTemplates.php',
'SpecialUndelete' => __DIR__ . '/includes/specials/SpecialUndelete.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'SpecialUnlinkAccounts' => __DIR__ . '/includes/specials/SpecialUnlinkAccounts.php',
'SpecialUnlockdb' => __DIR__ . '/includes/specials/SpecialUnlockdb.php',
'SpecialUnusedCategories' => __DIR__ . '/includes/specials/SpecialUnusedCategories.php',
'SpecialUnusedImages' => __DIR__ . '/includes/specials/SpecialUnusedImages.php',
'SpecialUnusedTemplates' => __DIR__ . '/includes/specials/SpecialUnusedTemplates.php',
'SpecialUnwatchedPages' => __DIR__ . '/includes/specials/SpecialUnwatchedPages.php',
'SpecialUpload' => __DIR__ . '/includes/specials/SpecialUpload.php',
'SpecialUploadStash' => __DIR__ . '/includes/specials/SpecialUploadStash.php',
'SpecialUploadStashTooLargeException' => __DIR__ . '/includes/specials/exception/SpecialUploadStashTooLargeException.php',
Use AuthManager on special pages Rewrite authentication-related special pages to use AuthManager. All the changes mentioned below only take effect when $wgDisableAuthManager is false. LoginForm is rewritten to use HTMLForm and split into UserLogin and CreateAccount; ChangePassword and PasswordReset are rewritten; ChangeEmail and Preferences are updated. Four new special pages are added to handle the new capabilities of AuthManager (linked accounts, secondary authentication providers): LinkAccounts, UnlinkAccounts, ChangeCredentials, RemoveCredentials. The old form-based hooks (ChangePasswordForm, UserCreateForm, UserLoginForm) are deprecated. A new, more generic hook is available to alter the forms (AuthChangeFormFields); form changes that involve new fields should be done via $wgAuthManagerConfig. UserLoginComplete is limited to web-based login; for more generic functionality UserLoggedIn can be used instead. Hooks that assume password-based login (PrefsPasswordAudit, AbortChangePassword) are removed; the first functionality is replaced by ChangeAuthenticationDataAudit, the second is handled by AuthManager. LoginPasswordResetMessage is removed, the functionality can be recreated via authentication providers. There are several smaller backwards incompatible changes: * Adding fields to the login/signup forms by manipulating the template via the extraInput/extrafields parameters is not supported anymore. Depending on the authn configuration the login/signup process might be multistep and it would be complicated to ensure that extensions can access the data at the right moment. Instead, you can create an AuthenticationProvider which can define its own fields and process them when the authentication is over. (There is B/C support for a transitional period that works with the default login form, but might break with configurations that require multiple steps or redirects.) * Removed cookie redirect check. This was added in 2003 in 9ead07fe9 for the benefit of bots, but with MediaWiki having an API these days there is little reason to keep it. Same for the wpSkipCookieCheck flag (added in 2008 in 29c73e8265). * Instead of embedding a password field on sensitive special pages such as ChangeEmail, such pages rely on AuthManager for elevated security (which typically involves requiring the user to log in again unless their last login was more than a few minutes ago). Accordingly, wgRequirePasswordforEmailChange is removed. * Special:ChangePassword requires login now. * Special:ResetPassword now sends a separate email to each user when called with a shared email address. * the Reason field had a message with 'prefsectiontip' class which was sorta broken but used in extensions for formatting. HTMLForm does not support that, so this commit turns it into a help message which will break formatting. See https://gerrit.wikimedia.org/r/#/c/231884 Bug: T110277 Change-Id: I8b52ec8ddf494f23941807638f149f15b5e46b0c Depends-On: If4e0dfb6ee6674f0dace80a01850e2d0cbbdb47a
2015-09-22 22:50:04 +00:00
'SpecialUserLogin' => __DIR__ . '/includes/specials/SpecialUserLogin.php',
'SpecialUserLogout' => __DIR__ . '/includes/specials/SpecialUserLogout.php',
'SpecialVersion' => __DIR__ . '/includes/specials/SpecialVersion.php',
'SpecialWantedCategories' => __DIR__ . '/includes/specials/SpecialWantedCategories.php',
'SpecialWantedTemplates' => __DIR__ . '/includes/specials/SpecialWantedTemplates.php',
'SpecialWatchlist' => __DIR__ . '/includes/specials/SpecialWatchlist.php',
'SpecialWhatLinksHere' => __DIR__ . '/includes/specials/SpecialWhatLinksHere.php',
'SpecialWithoutInterwiki' => __DIR__ . '/includes/specials/SpecialWithoutInterwiki.php',
'SqlBagOStuff' => __DIR__ . '/includes/objectcache/SqlBagOStuff.php',
'SqlSearchResult' => __DIR__ . '/includes/search/SqlSearchResult.php',
'SqlSearchResultSet' => __DIR__ . '/includes/search/SqlSearchResultSet.php',
'Sqlite' => __DIR__ . '/maintenance/Sqlite.php',
'SqliteInstaller' => __DIR__ . '/includes/installer/SqliteInstaller.php',
'SqliteMaintenance' => __DIR__ . '/maintenance/SqliteMaintenance.php',
'SqliteUpdater' => __DIR__ . '/includes/installer/SqliteUpdater.php',
'SrConverter' => __DIR__ . '/includes/language/converters/SrConverter.php',
'StatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'StatsdAwareInterface' => __DIR__ . '/includes/libs/stats/StatsdAwareInterface.php',
'Status' => __DIR__ . '/includes/Status.php',
'StatusValue' => __DIR__ . '/includes/libs/StatusValue.php',
'StorageTypeStats' => __DIR__ . '/maintenance/storage/storageTypeStats.php',
'StoreFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/StoreFileOp.php',
'StreamFile' => __DIR__ . '/includes/StreamFile.php',
'StringPrefixSearch' => __DIR__ . '/includes/search/StringPrefixSearch.php',
'StringUtils' => __DIR__ . '/includes/libs/StringUtils.php',
'StripState' => __DIR__ . '/includes/parser/StripState.php',
'StubGlobalUser' => __DIR__ . '/includes/StubObject/StubGlobalUser.php',
'StubObject' => __DIR__ . '/includes/StubObject/StubObject.php',
'StubUserLang' => __DIR__ . '/includes/StubObject/StubUserLang.php',
'SubmitAction' => __DIR__ . '/includes/actions/SubmitAction.php',
'SubpageImportTitleFactory' => __DIR__ . '/includes/title/SubpageImportTitleFactory.php',
'SvgHandler' => __DIR__ . '/includes/media/SvgHandler.php',
'SwiftFileBackend' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileBackendDirList' => __DIR__ . '/includes/libs/filebackend/fileiteration/SwiftFileBackendDirList.php',
'SwiftFileBackendFileList' => __DIR__ . '/includes/libs/filebackend/fileiteration/SwiftFileBackendFileList.php',
'SwiftFileBackendList' => __DIR__ . '/includes/libs/filebackend/fileiteration/SwiftFileBackendList.php',
'SwiftFileOpHandle' => __DIR__ . '/includes/libs/filebackend/fileophandle/SwiftFileOpHandle.php',
'SwiftVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/SwiftVirtualRESTService.php',
'TableCleanup' => __DIR__ . '/maintenance/TableCleanup.php',
'TableDiffFormatter' => __DIR__ . '/includes/diff/TableDiffFormatter.php',
'TablePager' => __DIR__ . '/includes/pager/TablePager.php',
'TagLogFormatter' => __DIR__ . '/includes/logging/TagLogFormatter.php',
'TempFSFile' => __DIR__ . '/includes/libs/filebackend/fsfile/TempFSFile.php',
'TempFileRepo' => __DIR__ . '/includes/filerepo/TempFileRepo.php',
'TemplateParser' => __DIR__ . '/includes/TemplateParser.php',
'TemplatesOnThisPageFormatter' => __DIR__ . '/includes/TemplatesOnThisPageFormatter.php',
'TextContent' => __DIR__ . '/includes/content/TextContent.php',
'TextContentHandler' => __DIR__ . '/includes/content/TextContentHandler.php',
'TextPassDumper' => __DIR__ . '/maintenance/includes/TextPassDumper.php',
[MCR] Render multi-slot diffs Move logic for rendering a diff between two content objects out of DifferenceEngine, into a new SlotDiffRenderer class. Make DifferenceEngine use multiple SlotDiffRenderers, one per slot. This separates the class tree for changing high-level diff properties such as the header or the revision selection method (same as before: subclass DifferenceEngine and override ContentHandler::getDiffEngineClass or implement GetDifferenceEngine) and the one for changing the actual diff rendering for a given content type (subclass SlotDiffRenderer and override ContentHandler::getSlotDiffRenderer or implement GetSlotDiffRenderer). To keep B/C, when SlotDiffRenderer is not overridden for a given content type but DifferenceEngine is, that DifferenceEngine will be used instead. The weak point of the scheme is overriding the DifferenceEngine methods passing control to the SlotDiffRenderers (the ones calling getDifferenceEngines), without calling the parent. These are: showDiffStyle, getDiffBody, getDiffBodyCacheKeyParams. Extensions doing that will probably break in unpredictable ways (most likely, only showing the main slot diff). Nothing in gerrit does it, at least. A new GetSlotDiffRenderer hook is added to modify rendering for content models not owned by the extension, much like how GetDifferenceEngine works. Also deprecates public access to mNewRev/mOldRev and creates public getters instead. DifferenceEngine never supported external changes to those properties, this just acknowledges it. Bug: T194731 Change-Id: I2f8a9dbebd2290b7feafb20e2bb2a2693e18ba11 Depends-On: I04e885a33bfce5bccc807b9bcfe1eaa577a9fd47 Depends-On: I203d8895bf436b7fee53fe4718dede8a3b1768bc
2018-07-11 09:24:07 +00:00
'TextSlotDiffRenderer' => __DIR__ . '/includes/diff/TextSlotDiffRenderer.php',
'TextStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'TgConverter' => __DIR__ . '/includes/language/converters/TgConverter.php',
'ThrottledError' => __DIR__ . '/includes/exception/ThrottledError.php',
'ThumbnailImage' => __DIR__ . '/includes/media/ThumbnailImage.php',
'ThumbnailRenderJob' => __DIR__ . '/includes/jobqueue/jobs/ThumbnailRenderJob.php',
'TiffHandler' => __DIR__ . '/includes/media/TiffHandler.php',
'Timing' => __DIR__ . '/includes/libs/Timing.php',
'Title' => __DIR__ . '/includes/title/Title.php',
'TitleArray' => __DIR__ . '/includes/title/TitleArray.php',
'TitleArrayFromResult' => __DIR__ . '/includes/title/TitleArrayFromResult.php',
'TitleCleanup' => __DIR__ . '/maintenance/cleanupTitles.php',
'TitleFactory' => __DIR__ . '/includes/title/TitleFactory.php',
'TitleFormatter' => __DIR__ . '/includes/title/TitleFormatter.php',
'TitleParser' => __DIR__ . '/includes/title/TitleParser.php',
'TitlePrefixSearch' => __DIR__ . '/includes/search/TitlePrefixSearch.php',
'TitleValue' => __DIR__ . '/includes/title/TitleValue.php',
'TlyConverter' => __DIR__ . '/includes/language/converters/TlyConverter.php',
'TrackingCategories' => __DIR__ . '/includes/TrackingCategories.php',
'TraditionalImageGallery' => __DIR__ . '/includes/gallery/TraditionalImageGallery.php',
'TransactionRoundAwareUpdate' => __DIR__ . '/includes/deferred/TransactionRoundAwareUpdate.php',
'TransactionRoundDefiningUpdate' => __DIR__ . '/includes/deferred/TransactionRoundDefiningUpdate.php',
'TransformParameterError' => __DIR__ . '/includes/media/TransformParameterError.php',
'TransformTooBigImageAreaError' => __DIR__ . '/includes/media/TransformTooBigImageAreaError.php',
'TransformationalImageHandler' => __DIR__ . '/includes/media/TransformationalImageHandler.php',
'TrivialLanguageConverter' => __DIR__ . '/includes/language/TrivialLanguageConverter.php',
'TrivialMediaHandlerState' => __DIR__ . '/includes/media/TrivialMediaHandlerState.php',
'UDPRCFeedEngine' => __DIR__ . '/includes/rcfeed/UDPRCFeedEngine.php',
'UDPTransport' => __DIR__ . '/includes/libs/UDPTransport.php',
'UIDGenerator' => __DIR__ . '/includes/utils/UIDGenerator.php',
'UcdXmlReader' => __DIR__ . '/maintenance/language/generateCollationData.php',
'Undelete' => __DIR__ . '/maintenance/undelete.php',
'UnifiedDiffFormatter' => __DIR__ . '/includes/diff/UnifiedDiffFormatter.php',
'UnlistedSpecialPage' => __DIR__ . '/includes/specialpage/UnlistedSpecialPage.php',
'UnprotectAction' => __DIR__ . '/includes/actions/UnprotectAction.php',
'UnregisteredLocalFile' => __DIR__ . '/includes/filerepo/file/UnregisteredLocalFile.php',
'UnsupportedSlotDiffRenderer' => __DIR__ . '/includes/diff/UnsupportedSlotDiffRenderer.php',
'UnwatchAction' => __DIR__ . '/includes/actions/UnwatchAction.php',
'UpdateArticleCount' => __DIR__ . '/maintenance/updateArticleCount.php',
'UpdateCollation' => __DIR__ . '/maintenance/updateCollation.php',
'UpdateExtensionJsonSchema' => __DIR__ . '/maintenance/updateExtensionJsonSchema.php',
'UpdateRestrictions' => __DIR__ . '/maintenance/updateRestrictions.php',
'UpdateSearchIndex' => __DIR__ . '/maintenance/updateSearchIndex.php',
'UpdateSpecialPages' => __DIR__ . '/maintenance/updateSpecialPages.php',
'UploadBase' => __DIR__ . '/includes/upload/UploadBase.php',
'UploadChunkFileException' => __DIR__ . '/includes/upload/exception/UploadChunkFileException.php',
'UploadChunkVerificationException' => __DIR__ . '/includes/upload/exception/UploadChunkVerificationException.php',
'UploadChunkZeroLengthFileException' => __DIR__ . '/includes/upload/exception/UploadChunkZeroLengthFileException.php',
'UploadForm' => __DIR__ . '/includes/specials/forms/UploadForm.php',
'UploadFromChunks' => __DIR__ . '/includes/upload/UploadFromChunks.php',
'UploadFromFile' => __DIR__ . '/includes/upload/UploadFromFile.php',
'UploadFromStash' => __DIR__ . '/includes/upload/UploadFromStash.php',
'UploadFromUrl' => __DIR__ . '/includes/upload/UploadFromUrl.php',
'UploadLogFormatter' => __DIR__ . '/includes/logging/UploadLogFormatter.php',
'UploadRevisionImporter' => __DIR__ . '/includes/import/UploadRevisionImporter.php',
'UploadSourceAdapter' => __DIR__ . '/includes/import/UploadSourceAdapter.php',
'UploadSourceField' => __DIR__ . '/includes/specials/formfields/UploadSourceField.php',
'UploadStash' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashBadPathException' => __DIR__ . '/includes/upload/exception/UploadStashBadPathException.php',
'UploadStashException' => __DIR__ . '/includes/upload/exception/UploadStashException.php',
'UploadStashFile' => __DIR__ . '/includes/upload/UploadStashFile.php',
'UploadStashFileException' => __DIR__ . '/includes/upload/exception/UploadStashFileException.php',
'UploadStashFileNotFoundException' => __DIR__ . '/includes/upload/exception/UploadStashFileNotFoundException.php',
'UploadStashNoSuchKeyException' => __DIR__ . '/includes/upload/exception/UploadStashNoSuchKeyException.php',
'UploadStashNotLoggedInException' => __DIR__ . '/includes/upload/exception/UploadStashNotLoggedInException.php',
'UploadStashWrongOwnerException' => __DIR__ . '/includes/upload/exception/UploadStashWrongOwnerException.php',
'UploadStashZeroLengthFileException' => __DIR__ . '/includes/upload/exception/UploadStashZeroLengthFileException.php',
'UppercaseCollation' => __DIR__ . '/includes/collation/UppercaseCollation.php',
'UppercaseTitlesForUnicodeTransition' => __DIR__ . '/maintenance/uppercaseTitlesForUnicodeTransition.php',
'User' => __DIR__ . '/includes/user/User.php',
'UserArray' => __DIR__ . '/includes/user/UserArray.php',
'UserArrayFromResult' => __DIR__ . '/includes/user/UserArrayFromResult.php',
'UserBlockedError' => __DIR__ . '/includes/exception/UserBlockedError.php',
'UserCache' => __DIR__ . '/includes/cache/UserCache.php',
'UserEditCountInfo' => __DIR__ . '/includes/deferred/UserEditCountInfo.php',
'UserEditCountInitJob' => __DIR__ . '/includes/jobqueue/jobs/UserEditCountInitJob.php',
'UserEditCountUpdate' => __DIR__ . '/includes/deferred/UserEditCountUpdate.php',
'UserGroupExpiryJob' => __DIR__ . '/includes/jobqueue/jobs/UserGroupExpiryJob.php',
User group memberships that expire This patch adds an ug_expiry column to the user_groups table, a timestamp giving a date when the user group expires. A new UserGroupMembership class, based on the Block class, manages entries in this table. When the expiry date passes, the row in user_groups is ignored, and will eventually be purged from the DB when UserGroupMembership::insert is next called. Old, expired user group memberships are not kept; instead, the log entries are available to find the history of these memberships, similar to the way it has always worked for blocks and protections. Anyone getting user group info through the User object will get correct information. However, code that reads the user_groups table directly will now need to skip over rows with ug_expiry < wfTimestampNow(). See UsersPager for an example of how to do this. NULL is used to represent infinite (no) expiry, rather than a string 'infinity' or similar (except in the API). This allows existing user group assignments and log entries, which are all infinite in duration, to be treated the same as new, infinite-length memberships, without special casing everything. The whole thing is behind the temporary feature flag $wgDisableUserGroupExpiry, in accordance with the WMF schema change policy. The opportunity has been taken to refactor some static user-group-related functions out of User into UserGroupMembership, and also to add a primary key (ug_user, ug_group) to the user_groups table. There are a few breaking changes: - UserRightsProxy-like objects are now required to have a getGroupMemberships() function. - $user->mGroups (on a User object) is no longer present. - Some protected functions in UsersPager are altered or removed. - The UsersPagerDoBatchLookups hook (unused in any Wikimedia Git-hosted extension) has a change of parameter. Bug: T12493 Depends-On: Ia9616e1e35184fed9058d2d39afbe1038f56d7fa Depends-On: I86eb1d5619347ce54a5f33a591417742ebe5d6f8 Change-Id: I93c955dc7a970f78e32aa503c01c67da30971d1a
2017-01-12 06:07:56 +00:00
'UserGroupMembership' => __DIR__ . '/includes/user/UserGroupMembership.php',
'UserMailer' => __DIR__ . '/includes/mail/UserMailer.php',
'UserNamePrefixSearch' => __DIR__ . '/includes/user/UserNamePrefixSearch_deprecated.php',
'UserNotLoggedIn' => __DIR__ . '/includes/exception/UserNotLoggedIn.php',
'UserOptionsMaintenance' => __DIR__ . '/maintenance/userOptions.php',
'UserOptionsUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/UserOptionsUpdateJob.php',
'UserPasswordPolicy' => __DIR__ . '/includes/password/UserPasswordPolicy.php',
'UserRightsProxy' => __DIR__ . '/includes/user/UserRightsProxy.php',
'UserrightsPage' => __DIR__ . '/includes/specials/SpecialUserrights.php',
'UsersPager' => __DIR__ . '/includes/specials/pagers/UsersPager.php',
'UzConverter' => __DIR__ . '/includes/language/converters/UzConverter.php',
'VFormHTMLForm' => __DIR__ . '/includes/htmlform/VFormHTMLForm.php',
Implement extension registration from an extension.json file Introduces wfLoadExtension()/wfLoadSkin() which should be used in LocalSettings.php rather than require-ing a PHP entry point. Extensions and skins would add "extension.json" or "skin.json" files in their root, which contains all the information typically present in PHP entry point files (classes to autoload, special pages, API modules, etc.) A full schema can be found at docs/extension.schema.json, and a script to validate these to the schema is provided. An additional script is provided to convert typical PHP entry point files into their JSON equivalents. The basic flow of loading an extension goes like: * Get the ExtensionRegistry singleton instance * ExtensionRegistry takes a filename, reads the file or tries to get the parsed JSON from APC if possible. * The JSON is run through a Processor instance, which registers things with the appropriate global settings. * The output of the processor is cached in APC if possible. * The extension/skin is marked as loaded in the ExtensionRegistry and a callback function is executed if one was specified. For ideal performance, a batch loading method is also provided: * The absolute path name to the JSON file is queued in the ExtensionRegistry instance. * When loadFromQueue() is called, it constructs a hash unique to the members of the current queue, and sees if the queue has been cached in APC. If not, it processes each file individually, and combines the result of each Processor into one giant array, which is cached in APC. * The giant array then sets various global settings, defines constants, and calls callbacks. To invalidate the cached processed info, by default the mtime of each JSON file is checked. However that can be slow if you have a large number of extensions, so you can set $wgExtensionInfoMTime to the mtime of one file, and `touch` it whenever you update your extensions. Change-Id: I7074b65d07c5c7d4e3f1fb0755d74a0b07ed4596
2014-10-15 00:31:15 +00:00
'ValidateRegistrationFile' => __DIR__ . '/maintenance/validateRegistrationFile.php',
'Version' => __DIR__ . '/maintenance/version.php',
'VersionChecker' => __DIR__ . '/includes/registration/VersionChecker.php',
'ViewAction' => __DIR__ . '/includes/actions/ViewAction.php',
'ViewCLI' => __DIR__ . '/maintenance/view.php',
'VirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTService.php',
'VirtualRESTServiceClient' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTServiceClient.php',
'VueComponentParser' => __DIR__ . '/includes/ResourceLoader/VueComponentParser.php',
'WANObjectCache' => __DIR__ . '/includes/libs/objectcache/wancache/WANObjectCache.php',
'WantedFilesPage' => __DIR__ . '/includes/specials/SpecialWantedfiles.php',
'WantedPagesPage' => __DIR__ . '/includes/specials/SpecialWantedpages.php',
'WantedQueryPage' => __DIR__ . '/includes/specialpage/WantedQueryPage.php',
'WatchAction' => __DIR__ . '/includes/actions/WatchAction.php',
'WatchedItem' => __DIR__ . '/includes/watcheditem/WatchedItem.php',
'WatchedItemQueryService' => __DIR__ . '/includes/watcheditem/WatchedItemQueryService.php',
'WatchedItemQueryServiceExtension' => __DIR__ . '/includes/watcheditem/WatchedItemQueryServiceExtension.php',
'WatchedItemStore' => __DIR__ . '/includes/watcheditem/WatchedItemStore.php',
'WatchedItemStoreInterface' => __DIR__ . '/includes/watcheditem/WatchedItemStoreInterface.php',
'WatchlistExpiryJob' => __DIR__ . '/includes/jobqueue/jobs/WatchlistExpiryJob.php',
'WebInstaller' => __DIR__ . '/includes/installer/WebInstaller.php',
'WebInstallerComplete' => __DIR__ . '/includes/installer/WebInstallerComplete.php',
'WebInstallerCopying' => __DIR__ . '/includes/installer/WebInstallerCopying.php',
'WebInstallerDBConnect' => __DIR__ . '/includes/installer/WebInstallerDBConnect.php',
'WebInstallerDBSettings' => __DIR__ . '/includes/installer/WebInstallerDBSettings.php',
'WebInstallerDocument' => __DIR__ . '/includes/installer/WebInstallerDocument.php',
'WebInstallerExistingWiki' => __DIR__ . '/includes/installer/WebInstallerExistingWiki.php',
'WebInstallerInstall' => __DIR__ . '/includes/installer/WebInstallerInstall.php',
'WebInstallerLanguage' => __DIR__ . '/includes/installer/WebInstallerLanguage.php',
'WebInstallerName' => __DIR__ . '/includes/installer/WebInstallerName.php',
'WebInstallerOptions' => __DIR__ . '/includes/installer/WebInstallerOptions.php',
'WebInstallerOutput' => __DIR__ . '/includes/installer/WebInstallerOutput.php',
'WebInstallerPage' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerReleaseNotes' => __DIR__ . '/includes/installer/WebInstallerReleaseNotes.php',
'WebInstallerRestart' => __DIR__ . '/includes/installer/WebInstallerRestart.php',
'WebInstallerUpgrade' => __DIR__ . '/includes/installer/WebInstallerUpgrade.php',
'WebInstallerUpgradeDoc' => __DIR__ . '/includes/installer/WebInstallerUpgradeDoc.php',
'WebInstallerWelcome' => __DIR__ . '/includes/installer/WebInstallerWelcome.php',
'WebPHandler' => __DIR__ . '/includes/media/WebPHandler.php',
'WebRequest' => __DIR__ . '/includes/WebRequest.php',
'WebRequestUpload' => __DIR__ . '/includes/Request/WebRequestUpload.php',
'WebResponse' => __DIR__ . '/includes/WebResponse.php',
'WikiBirthday' => __DIR__ . '/maintenance/wikiBirthday.php',
'WikiCategoryPage' => __DIR__ . '/includes/page/WikiCategoryPage.php',
'WikiExporter' => __DIR__ . '/includes/export/WikiExporter.php',
'WikiFilePage' => __DIR__ . '/includes/page/WikiFilePage.php',
'WikiImporter' => __DIR__ . '/includes/import/WikiImporter.php',
'WikiImporterFactory' => __DIR__ . '/includes/import/WikiImporterFactory.php',
'WikiMap' => __DIR__ . '/includes/WikiMap.php',
'WikiPage' => __DIR__ . '/includes/page/WikiPage.php',
'WikiReference' => __DIR__ . '/includes/WikiReference.php',
'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php',
'Wikimedia\\DebugInfo\\AnnotationReader' => __DIR__ . '/includes/libs/DebugInfo/AnnotationReader.php',
'Wikimedia\\DebugInfo\\DebugInfoTrait' => __DIR__ . '/includes/libs/DebugInfo/DebugInfoTrait.php',
'Wikimedia\\DebugInfo\\DumpUtils' => __DIR__ . '/includes/libs/DebugInfo/DumpUtils.php',
'Wikimedia\\DebugInfo\\Placeholder' => __DIR__ . '/includes/libs/DebugInfo/Placeholder.php',
'Wikimedia\\DependencyStore\\DependencyStore' => __DIR__ . '/includes/ResourceLoader/dependencystore/DependencyStore.php',
'Wikimedia\\DependencyStore\\KeyValueDependencyStore' => __DIR__ . '/includes/ResourceLoader/dependencystore/KeyValueDependencyStore.php',
'Wikimedia\\DependencyStore\\SqlModuleDependencyStore' => __DIR__ . '/includes/ResourceLoader/dependencystore/SqlModuleDependencyStore.php',
'Wikimedia\\Http\\HttpAcceptNegotiator' => __DIR__ . '/includes/libs/http/HttpAcceptNegotiator.php',
'Wikimedia\\Http\\HttpAcceptParser' => __DIR__ . '/includes/libs/http/HttpAcceptParser.php',
'Wikimedia\\LightweightObjectStore\\ExpirationAwareness' => __DIR__ . '/includes/libs/objectcache/utils/ExpirationAwareness.php',
'Wikimedia\\LightweightObjectStore\\StorageAwareness' => __DIR__ . '/includes/libs/objectcache/utils/StorageAwareness.php',
'Wikimedia\\Message\\DataMessageValue' => __DIR__ . '/includes/libs/Message/DataMessageValue.php',
'Wikimedia\\Message\\IMessageFormatterFactory' => __DIR__ . '/includes/libs/Message/IMessageFormatterFactory.php',
'Wikimedia\\Message\\ITextFormatter' => __DIR__ . '/includes/libs/Message/ITextFormatter.php',
'Wikimedia\\Message\\ListParam' => __DIR__ . '/includes/libs/Message/ListParam.php',
'Wikimedia\\Message\\ListType' => __DIR__ . '/includes/libs/Message/ListType.php',
'Wikimedia\\Message\\MessageParam' => __DIR__ . '/includes/libs/Message/MessageParam.php',
'Wikimedia\\Message\\MessageValue' => __DIR__ . '/includes/libs/Message/MessageValue.php',
'Wikimedia\\Message\\ParamType' => __DIR__ . '/includes/libs/Message/ParamType.php',
'Wikimedia\\Message\\ScalarParam' => __DIR__ . '/includes/libs/Message/ScalarParam.php',
'Wikimedia\\Metrics\\Exceptions\\InvalidConfigurationException' => __DIR__ . '/includes/libs/Metrics/Exceptions/InvalidConfigurationException.php',
'Wikimedia\\Metrics\\Exceptions\\InvalidLabelsException' => __DIR__ . '/includes/libs/Metrics/Exceptions/InvalidLabelsException.php',
'Wikimedia\\Metrics\\Exceptions\\UndefinedPrefixException' => __DIR__ . '/includes/libs/Metrics/Exceptions/UndefinedPrefixException.php',
'Wikimedia\\Metrics\\Exceptions\\UnsupportedFormatException' => __DIR__ . '/includes/libs/Metrics/Exceptions/UnsupportedFormatException.php',
'Wikimedia\\Metrics\\MetricUtils' => __DIR__ . '/includes/libs/Metrics/MetricUtils.php',
'Wikimedia\\Metrics\\MetricsFactory' => __DIR__ . '/includes/libs/Metrics/MetricsFactory.php',
'Wikimedia\\Metrics\\Metrics\\CounterMetric' => __DIR__ . '/includes/libs/Metrics/Metrics/CounterMetric.php',
'Wikimedia\\Metrics\\Metrics\\GaugeMetric' => __DIR__ . '/includes/libs/Metrics/Metrics/GaugeMetric.php',
'Wikimedia\\Metrics\\Metrics\\NullMetric' => __DIR__ . '/includes/libs/Metrics/Metrics/NullMetric.php',
'Wikimedia\\Metrics\\Metrics\\TimingMetric' => __DIR__ . '/includes/libs/Metrics/Metrics/TimingMetric.php',
'Wikimedia\\Metrics\\Sample' => __DIR__ . '/includes/libs/Metrics/Sample.php',
mime: Convert built-in MIME mappings to PHP arrays Currently, MimeAnalyzer builds the internal mappings of MIME types <=> file extensions by concatenating several string buffers in mime.type format into a giant string, and then parsing it. The mapping of MIME types to internal media types is built up in a similar way, except we use a dubious homegrown format with undocumented conventions. It's a mess, and an expensive one -- ~1.5% of api.php CPU time on the WMF cluster is spent building these buffers and parsing them. Converting the mappings to PHP associative arrays makes them much cheaper to load and easier to maintain. Doing this without breaking compatibility with existing behaviors requires some delicate footwork. The current mime.types buffer is made up of the following fragments, in order: 1) MimeAnalyzer::$wellKnownTypes 2) If $wgMimeTypeFile == 'includes/mime.types' (sic!): the contents of includes/libs/mime/mime.types. If $wgMimeTypeFile is another file path (e.g., '/etc/mime.types'): the contents of that file. If !wg$MimeTypeFile, this fragment is blank. 3) MimeAnalyzer::$extraTypes (populated by extensions via hook). The mime.info buffer is built up in the exact same way, except it's MimeAnalyzer::$wellKnownInfo, $wgMimeInfoFile, and MimeAnalyzer::$extraInfo. What this means in effect is that some built-in MediaWiki MIME mappings are "baked in" (anything in MimeAnalyzer::$wellKnown*), and others can be overridden (anything in includes/libs/mime/mime.*). To avoid breaking backward compatibility, we have to preserve the distinction. Thus this change has two MIME mappings, encapsulated in two classes: 'MimeMapMinimal', which contains just the baked-in mappings, and 'MimeMap' which contains both the baked-in and overridable mappings. We also have to keep the code for parsing mime.types and the ad-hoc mime.info format, at least for now. In a FUTURE change (i.e., not here), I think we can: * Deprecate $wgMimeTypeFile in favor of a new config var, $wgExtraMimeTypeFile. $wgMimeTypeFile is evil because if you are using to add support for additional MIME types, you can end up unwittingly dropping support for other types that exist in MediaWiki's mime.types but not your file. The new $wgExtraMimeTypeFile would only be used to add new MIME mappings on top of the standard MimeMappings, which was probably the original intent for $wgMimeTypeFile. * Deprecate $wgMimeInfoFile. I don't think we need to provide a replacement, because extensions can use the hook, and I doubt anyone is using the config var. But if we wanted to provide an alternative, we could have a $wgExtraMimeInfoMap that has an array of extra mappings. * Deprecate MimeAnalyzer::addExtraTypes and MimeAnalyzer::addExtraInfo, and provide alternative interfaces that take structured input instead of string blobs. I tested this by dumping the internal state of MimeAnalyzer before and after this CL using the script in Ib856a69fe, using both default and custom values for $wgMimeInfo(File|Type). Bug: T252228 Change-Id: I9b2979d3c9c0dee96bb19e0290f680724e718891
2020-05-12 19:42:35 +00:00
'Wikimedia\\Mime\\MimeMap' => __DIR__ . '/includes/libs/mime/MimeMap.php',
'Wikimedia\\Mime\\MimeMapMinimal' => __DIR__ . '/includes/libs/mime/MimeMapMinimal.php',
'Wikimedia\\NonSerializable\\NonSerializableTrait' => __DIR__ . '/includes/libs/NonSerializableTrait.php',
'Wikimedia\\ParamValidator\\Callbacks' => __DIR__ . '/includes/libs/ParamValidator/Callbacks.php',
'Wikimedia\\ParamValidator\\ParamValidator' => __DIR__ . '/includes/libs/ParamValidator/ParamValidator.php',
'Wikimedia\\ParamValidator\\SimpleCallbacks' => __DIR__ . '/includes/libs/ParamValidator/SimpleCallbacks.php',
'Wikimedia\\ParamValidator\\TypeDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\BooleanDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/BooleanDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\EnumDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/EnumDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\ExpiryDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/ExpiryDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\FloatDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/FloatDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\IntegerDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/IntegerDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\LimitDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/LimitDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\NumericDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/NumericDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\PasswordDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/PasswordDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\PresenceBooleanDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/PresenceBooleanDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\StringDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/StringDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\TimestampDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/TimestampDef.php',
'Wikimedia\\ParamValidator\\TypeDef\\UploadDef' => __DIR__ . '/includes/libs/ParamValidator/TypeDef/UploadDef.php',
'Wikimedia\\ParamValidator\\Util\\UploadedFile' => __DIR__ . '/includes/libs/ParamValidator/Util/UploadedFile.php',
'Wikimedia\\ParamValidator\\Util\\UploadedFileStream' => __DIR__ . '/includes/libs/ParamValidator/Util/UploadedFileStream.php',
'Wikimedia\\ParamValidator\\ValidationException' => __DIR__ . '/includes/libs/ParamValidator/ValidationException.php',
'Wikimedia\\Rdbms\\AtomicSectionIdentifier' => __DIR__ . '/includes/libs/rdbms/database/utils/AtomicSectionIdentifier.php',
'Wikimedia\\Rdbms\\Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php',
'Wikimedia\\Rdbms\\CriticalSessionInfo' => __DIR__ . '/includes/libs/rdbms/database/utils/CriticalSessionInfo.php',
'Wikimedia\\Rdbms\\DBAccessError' => __DIR__ . '/includes/libs/rdbms/exception/DBAccessError.php',
'Wikimedia\\Rdbms\\DBConnRef' => __DIR__ . '/includes/libs/rdbms/database/DBConnRef.php',
'Wikimedia\\Rdbms\\DBConnectionError' => __DIR__ . '/includes/libs/rdbms/exception/DBConnectionError.php',
'Wikimedia\\Rdbms\\DBError' => __DIR__ . '/includes/libs/rdbms/exception/DBError.php',
'Wikimedia\\Rdbms\\DBExpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBExpectedError.php',
'Wikimedia\\Rdbms\\DBLanguageError' => __DIR__ . '/includes/libs/rdbms/exception/DBLanguageError.php',
'Wikimedia\\Rdbms\\DBPrimaryPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBPrimaryPos.php',
'Wikimedia\\Rdbms\\DBQueryDisconnectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryDisconnectedError.php',
'Wikimedia\\Rdbms\\DBQueryError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryError.php',
'Wikimedia\\Rdbms\\DBQueryTimeoutError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryTimeoutError.php',
'Wikimedia\\Rdbms\\DBReadOnlyError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyError.php',
'Wikimedia\\Rdbms\\DBReadOnlyRoleError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyRoleError.php',
'Wikimedia\\Rdbms\\DBReplicationWaitError' => __DIR__ . '/includes/libs/rdbms/exception/DBReplicationWaitError.php',
'Wikimedia\\Rdbms\\DBSessionStateError' => __DIR__ . '/includes/libs/rdbms/exception/DBSessionStateError.php',
'Wikimedia\\Rdbms\\DBTransactionError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionError.php',
'Wikimedia\\Rdbms\\DBTransactionSizeError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionSizeError.php',
'Wikimedia\\Rdbms\\DBTransactionStateError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionStateError.php',
'Wikimedia\\Rdbms\\DBUnexpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBUnexpectedError.php',
'Wikimedia\\Rdbms\\Database' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
'Wikimedia\\Rdbms\\DatabaseDomain' => __DIR__ . '/includes/libs/rdbms/database/domain/DatabaseDomain.php',
'Wikimedia\\Rdbms\\DatabaseFactory' => __DIR__ . '/includes/libs/rdbms/database/DatabaseFactory.php',
'Wikimedia\\Rdbms\\DatabaseMysqlBase' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqlBase.php',
'Wikimedia\\Rdbms\\DatabaseMysqli' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqli.php',
'Wikimedia\\Rdbms\\DatabasePostgres' => __DIR__ . '/includes/libs/rdbms/database/DatabasePostgres.php',
'Wikimedia\\Rdbms\\DatabaseSqlite' => __DIR__ . '/includes/libs/rdbms/database/DatabaseSqlite.php',
'Wikimedia\\Rdbms\\Database\\DatabaseFlags' => __DIR__ . '/includes/libs/rdbms/database/DatabaseFlags.php',
'Wikimedia\\Rdbms\\Database\\DbQuoter' => __DIR__ . '/includes/libs/rdbms/database/DbQuoter.php',
'Wikimedia\\Rdbms\\Database\\IDatabaseFlags' => __DIR__ . '/includes/libs/rdbms/database/IDatabaseFlags.php',
'Wikimedia\\Rdbms\\DoctrineAbstractSchemaTrait' => __DIR__ . '/includes/libs/rdbms/dbal/DoctrineAbstractSchemaTrait.php',
'Wikimedia\\Rdbms\\DoctrineSchemaBuilder' => __DIR__ . '/includes/libs/rdbms/dbal/DoctrineSchemaBuilder.php',
'Wikimedia\\Rdbms\\DoctrineSchemaBuilderFactory' => __DIR__ . '/includes/libs/rdbms/dbal/DoctrineSchemaBuilderFactory.php',
'Wikimedia\\Rdbms\\DoctrineSchemaChangeBuilder' => __DIR__ . '/includes/libs/rdbms/dbal/DoctrineSchemaChangeBuilder.php',
'Wikimedia\\Rdbms\\EnumType' => __DIR__ . '/includes/libs/rdbms/dbal/EnumType.php',
'Wikimedia\\Rdbms\\FakeResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php',
'Wikimedia\\Rdbms\\Field' => __DIR__ . '/includes/libs/rdbms/field/Field.php',
'Wikimedia\\Rdbms\\GeneralizedSql' => __DIR__ . '/includes/libs/rdbms/database/utils/GeneralizedSql.php',
'Wikimedia\\Rdbms\\IBlob' => __DIR__ . '/includes/libs/rdbms/encasing/IBlob.php',
'Wikimedia\\Rdbms\\IDatabase' => __DIR__ . '/includes/libs/rdbms/database/IDatabase.php',
'Wikimedia\\Rdbms\\ILBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/ILBFactory.php',
'Wikimedia\\Rdbms\\ILoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/ILoadBalancer.php',
rdbms: Remove instance ownership concept Instance ownership is supposed to protect LoadBalancer and Database against unauthorized calls to internal methods other than by the owning LoadBalancer/LBFactory. This seems like unnecessary complexity. It was introduced for T231443 and T217819, but the link was speculative and in the end it didn't help to fix or isolate those bugs. Since then it has caused a production error (T303885) and an intermittent CI failure (T292239). Instead, split the ILoadBalancer interface, introducing ILoadBalancerForOwner, which contains the methods which are only safe to call by LBFactory or by the caller of LBFactory::newMainLB(). This allows phan to statically detect inappropriate calls to internal methods. Ownership was used for convenience for two things unrelated to its original purpose: * Suppressing calls to ScopedCallback::newScopedIgnoreUserAbort() when the caller has already called it. But nested calls are apparently harmless, so I just called it unconditionally. * Suppressing exceptions from Database::close(). I extended the behaviour for owned instances to apply to all instances, so even unowned instances will no longer throw on close. CodeSearch suggests nothing in extensions is calling these methods with an owner parameter. One extension (Wikibase) overrides a method with an owner parameter in a test mock class and so needs to be simultaneously updated. Depends-On: Ib03aba9d8f5f05b875a321d00b14483633a636a8 Change-Id: I27ba4973d24d759c88b3868c95e7db875801ca0c
2022-04-14 03:29:45 +00:00
'Wikimedia\\Rdbms\\ILoadBalancerForOwner' => __DIR__ . '/includes/libs/rdbms/loadbalancer/ILoadBalancerForOwner.php',
'Wikimedia\\Rdbms\\ILoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/ILoadMonitor.php',
'Wikimedia\\Rdbms\\IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php',
'Wikimedia\\Rdbms\\IResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php',
'Wikimedia\\Rdbms\\JoinGroup' => __DIR__ . '/includes/libs/rdbms/querybuilder/JoinGroup.php',
'Wikimedia\\Rdbms\\JoinGroupBase' => __DIR__ . '/includes/libs/rdbms/querybuilder/JoinGroupBase.php',
'Wikimedia\\Rdbms\\LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php',
'Wikimedia\\Rdbms\\LBFactoryMulti' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactoryMulti.php',
'Wikimedia\\Rdbms\\LBFactorySimple' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactorySimple.php',
'Wikimedia\\Rdbms\\LBFactorySingle' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactorySingle.php',
'Wikimedia\\Rdbms\\LikeMatch' => __DIR__ . '/includes/libs/rdbms/encasing/LikeMatch.php',
'Wikimedia\\Rdbms\\LoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancer.php',
'Wikimedia\\Rdbms\\LoadBalancerSingle' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php',
'Wikimedia\\Rdbms\\LoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitor.php',
'Wikimedia\\Rdbms\\LoadMonitorNull' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php',
'Wikimedia\\Rdbms\\MWMySQLPlatform' => __DIR__ . '/includes/libs/rdbms/dbal/MWMySQLPlatform.php',
'Wikimedia\\Rdbms\\MWPostgreSqlPlatform' => __DIR__ . '/includes/libs/rdbms/dbal/MWPostgreSqlPlatform.php',
'Wikimedia\\Rdbms\\MaintainableDBConnRef' => __DIR__ . '/includes/libs/rdbms/database/MaintainableDBConnRef.php',
'Wikimedia\\Rdbms\\MySQLField' => __DIR__ . '/includes/libs/rdbms/field/MySQLField.php',
'Wikimedia\\Rdbms\\MySQLMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/MySQLPrimaryPos.php',
'Wikimedia\\Rdbms\\MySQLPrimaryPos' => __DIR__ . '/includes/libs/rdbms/database/position/MySQLPrimaryPos.php',
DBMS-specific ResultWrapper subclasses Cleanup after the switch of Database::query() to return ResultWrapper instead of resource. * Soft-deprecate the IResultWrapper accessors in IDatabase. * Move relevant DBMS-specific functionality to ResultWrapper subclasses. The deprecated methods in IResultWrapper become short and simple. ResultWrapper is now abstract (b/c break). * Move the implementation of fieldName(), numFields() and one of the fieldInfo() implementations to the ResultWrapper subclass in order to avoid ResultWrapper::unwrap() calls. * Make Database::doQuery() return a ResultWrapper subclass instead of underlying result data, so that the Database parent class does not need to be aware of wrapper construction. * Hard-deprecate ResultWrapper::unwrap(), DatabaseMysqlBase::fieldType(), DatabasePostgres::fieldType(). * Fix the inefficient seeking method in SQLite. * Make FakeResultWrapper extend ResultWrapper with an implementation similar to the SQLite one. This is possible because ResultWrapper does not depend on IDatabase anymore. * Resolve fixme in DatabasePostgres: from studying the source, neither pg_fetch_object() nor pg_num_rows() can set an error retrievable with pg_last_error(). Removed unnecessary warning suppression. * ResultWrapperTest didn't make sense as a unit test anymore, so I adapted it as an integration test against the current DBMS. This change also means that ResultWrapper::key() always gives the correct offset, even if Iterator methods are not being used. Bug: T286694 Change-Id: I935835316c0bd7d3d061bd8fde9c9ce99ce756ec
2021-07-15 00:46:59 +00:00
'Wikimedia\\Rdbms\\MysqliResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/MysqliResultWrapper.php',
'Wikimedia\\Rdbms\\NextSequenceValue' => __DIR__ . '/includes/libs/rdbms/database/utils/NextSequenceValue.php',
'Wikimedia\\Rdbms\\Platform\\ISQLPlatform' => __DIR__ . '/includes/libs/rdbms/platform/ISQLPlatform.php',
'Wikimedia\\Rdbms\\Platform\\MySQLPlatform' => __DIR__ . '/includes/libs/rdbms/platform/MySQLPlatform.php',
'Wikimedia\\Rdbms\\Platform\\PostgresPlatform' => __DIR__ . '/includes/libs/rdbms/platform/PostgresPlatform.php',
'Wikimedia\\Rdbms\\Platform\\SQLPlatform' => __DIR__ . '/includes/libs/rdbms/platform/SQLPlatform.php',
'Wikimedia\\Rdbms\\Platform\\SqlitePlatform' => __DIR__ . '/includes/libs/rdbms/platform/SqlitePlatform.php',
'Wikimedia\\Rdbms\\PostgresBlob' => __DIR__ . '/includes/libs/rdbms/encasing/PostgresBlob.php',
'Wikimedia\\Rdbms\\PostgresField' => __DIR__ . '/includes/libs/rdbms/field/PostgresField.php',
DBMS-specific ResultWrapper subclasses Cleanup after the switch of Database::query() to return ResultWrapper instead of resource. * Soft-deprecate the IResultWrapper accessors in IDatabase. * Move relevant DBMS-specific functionality to ResultWrapper subclasses. The deprecated methods in IResultWrapper become short and simple. ResultWrapper is now abstract (b/c break). * Move the implementation of fieldName(), numFields() and one of the fieldInfo() implementations to the ResultWrapper subclass in order to avoid ResultWrapper::unwrap() calls. * Make Database::doQuery() return a ResultWrapper subclass instead of underlying result data, so that the Database parent class does not need to be aware of wrapper construction. * Hard-deprecate ResultWrapper::unwrap(), DatabaseMysqlBase::fieldType(), DatabasePostgres::fieldType(). * Fix the inefficient seeking method in SQLite. * Make FakeResultWrapper extend ResultWrapper with an implementation similar to the SQLite one. This is possible because ResultWrapper does not depend on IDatabase anymore. * Resolve fixme in DatabasePostgres: from studying the source, neither pg_fetch_object() nor pg_num_rows() can set an error retrievable with pg_last_error(). Removed unnecessary warning suppression. * ResultWrapperTest didn't make sense as a unit test anymore, so I adapted it as an integration test against the current DBMS. This change also means that ResultWrapper::key() always gives the correct offset, even if Iterator methods are not being used. Bug: T286694 Change-Id: I935835316c0bd7d3d061bd8fde9c9ce99ce756ec
2021-07-15 00:46:59 +00:00
'Wikimedia\\Rdbms\\PostgresResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/PostgresResultWrapper.php',
'Wikimedia\\Rdbms\\QueryStatus' => __DIR__ . '/includes/libs/rdbms/database/utils/QueryStatus.php',
'Wikimedia\\Rdbms\\Replication\\MysqlReplicationReporter' => __DIR__ . '/includes/libs/rdbms/database/replication/MysqlReplicationReporter.php',
'Wikimedia\\Rdbms\\Replication\\ReplicationReporter' => __DIR__ . '/includes/libs/rdbms/database/replication/ReplicationReporter.php',
'Wikimedia\\Rdbms\\ResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php',
'Wikimedia\\Rdbms\\SQLiteField' => __DIR__ . '/includes/libs/rdbms/field/SQLiteField.php',
'Wikimedia\\Rdbms\\SchemaBuilder' => __DIR__ . '/includes/libs/rdbms/dbal/SchemaBuilder.php',
'Wikimedia\\Rdbms\\SchemaChangeBuilder' => __DIR__ . '/includes/libs/rdbms/dbal/SchemaChangeBuilder.php',
'Wikimedia\\Rdbms\\SelectQueryBuilder' => __DIR__ . '/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php',
'Wikimedia\\Rdbms\\SessionConsistentConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php',
DBMS-specific ResultWrapper subclasses Cleanup after the switch of Database::query() to return ResultWrapper instead of resource. * Soft-deprecate the IResultWrapper accessors in IDatabase. * Move relevant DBMS-specific functionality to ResultWrapper subclasses. The deprecated methods in IResultWrapper become short and simple. ResultWrapper is now abstract (b/c break). * Move the implementation of fieldName(), numFields() and one of the fieldInfo() implementations to the ResultWrapper subclass in order to avoid ResultWrapper::unwrap() calls. * Make Database::doQuery() return a ResultWrapper subclass instead of underlying result data, so that the Database parent class does not need to be aware of wrapper construction. * Hard-deprecate ResultWrapper::unwrap(), DatabaseMysqlBase::fieldType(), DatabasePostgres::fieldType(). * Fix the inefficient seeking method in SQLite. * Make FakeResultWrapper extend ResultWrapper with an implementation similar to the SQLite one. This is possible because ResultWrapper does not depend on IDatabase anymore. * Resolve fixme in DatabasePostgres: from studying the source, neither pg_fetch_object() nor pg_num_rows() can set an error retrievable with pg_last_error(). Removed unnecessary warning suppression. * ResultWrapperTest didn't make sense as a unit test anymore, so I adapted it as an integration test against the current DBMS. This change also means that ResultWrapper::key() always gives the correct offset, even if Iterator methods are not being used. Bug: T286694 Change-Id: I935835316c0bd7d3d061bd8fde9c9ce99ce756ec
2021-07-15 00:46:59 +00:00
'Wikimedia\\Rdbms\\SqliteResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/SqliteResultWrapper.php',
'Wikimedia\\Rdbms\\Subquery' => __DIR__ . '/includes/libs/rdbms/encasing/Subquery.php',
'Wikimedia\\Rdbms\\TimestampType' => __DIR__ . '/includes/libs/rdbms/dbal/TimestampType.php',
'Wikimedia\\Rdbms\\TinyIntType' => __DIR__ . '/includes/libs/rdbms/dbal/TinyIntType.php',
'Wikimedia\\Rdbms\\TransactionIdentifier' => __DIR__ . '/includes/libs/rdbms/database/utils/TransactionIdentifier.php',
'Wikimedia\\Rdbms\\TransactionManager' => __DIR__ . '/includes/libs/rdbms/database/TransactionManager.php',
'Wikimedia\\Rdbms\\TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php',
'Wikimedia\\Reflection\\GhostFieldAccessTrait' => __DIR__ . '/includes/libs/GhostFieldAccessTrait.php',
'Wikimedia\\StaticArrayWriter' => __DIR__ . '/includes/libs/StaticArrayWriter.php',
'Wikimedia\\UUID\\GlobalIdGenerator' => __DIR__ . '/includes/libs/uuid/GlobalIdGenerator.php',
'Wikimedia\\WRStats\\ArrayStatsStore' => __DIR__ . '/includes/libs/WRStats/ArrayStatsStore.php',
'Wikimedia\\WRStats\\BagOStuffStatsStore' => __DIR__ . '/includes/libs/WRStats/BagOStuffStatsStore.php',
'Wikimedia\\WRStats\\EntityKey' => __DIR__ . '/includes/libs/WRStats/EntityKey.php',
'Wikimedia\\WRStats\\GlobalEntityKey' => __DIR__ . '/includes/libs/WRStats/GlobalEntityKey.php',
'Wikimedia\\WRStats\\LimitBatch' => __DIR__ . '/includes/libs/WRStats/LimitBatch.php',
'Wikimedia\\WRStats\\LimitBatchResult' => __DIR__ . '/includes/libs/WRStats/LimitBatchResult.php',
'Wikimedia\\WRStats\\LimitCondition' => __DIR__ . '/includes/libs/WRStats/LimitCondition.php',
'Wikimedia\\WRStats\\LimitOperation' => __DIR__ . '/includes/libs/WRStats/LimitOperation.php',
'Wikimedia\\WRStats\\LimitOperationResult' => __DIR__ . '/includes/libs/WRStats/LimitOperationResult.php',
'Wikimedia\\WRStats\\LocalEntityKey' => __DIR__ . '/includes/libs/WRStats/LocalEntityKey.php',
'Wikimedia\\WRStats\\MetricSpec' => __DIR__ . '/includes/libs/WRStats/MetricSpec.php',
'Wikimedia\\WRStats\\RatePromise' => __DIR__ . '/includes/libs/WRStats/RatePromise.php',
'Wikimedia\\WRStats\\SequenceSpec' => __DIR__ . '/includes/libs/WRStats/SequenceSpec.php',
'Wikimedia\\WRStats\\StatsStore' => __DIR__ . '/includes/libs/WRStats/StatsStore.php',
'Wikimedia\\WRStats\\TimeRange' => __DIR__ . '/includes/libs/WRStats/TimeRange.php',
'Wikimedia\\WRStats\\WRStatsError' => __DIR__ . '/includes/libs/WRStats/WRStatsError.php',
'Wikimedia\\WRStats\\WRStatsFactory' => __DIR__ . '/includes/libs/WRStats/WRStatsFactory.php',
'Wikimedia\\WRStats\\WRStatsRateLimiter' => __DIR__ . '/includes/libs/WRStats/WRStatsRateLimiter.php',
'Wikimedia\\WRStats\\WRStatsReader' => __DIR__ . '/includes/libs/WRStats/WRStatsReader.php',
'Wikimedia\\WRStats\\WRStatsWriter' => __DIR__ . '/includes/libs/WRStats/WRStatsWriter.php',
'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php',
'WikitextContentHandler' => __DIR__ . '/includes/content/WikitextContentHandler.php',
'WikitextLogFormatter' => __DIR__ . '/includes/logging/WikitextLogFormatter.php',
'WinCacheBagOStuff' => __DIR__ . '/includes/libs/objectcache/WinCacheBagOStuff.php',
'WordLevelDiff' => __DIR__ . '/includes/diff/WordLevelDiff.php',
'WrapOldPasswords' => __DIR__ . '/maintenance/wrapOldPasswords.php',
'XCFHandler' => __DIR__ . '/includes/media/XCFHandler.php',
'XMLRCFeedFormatter' => __DIR__ . '/includes/rcfeed/XMLRCFeedFormatter.php',
Decouple Xhprof profiling from profiling data processing The motivation for this patch came from trying to use xhprof to profile the unit tests. I was able to profile specific test suites, but if I tried to profile a complete PHPUnit run, I ended up with empty profiling data. My initial suspicion was that this was due to some Xhprof buffer getting exhausted. The actual reason ended up being much simpler: the XhprofTest suite indirectly called xhprof_enable() / xhprof_disable(), which stopped xhprof and cleared out the data, so that when I was calling xhprof_disable() at the end of the run, there was no profiling data to return, because xhprof was not running. For the most part the XhprofTest was already doing the right thing by trying to avoid having side-effects or relying on xhprof. Wherever possible, test fixture profiling data was used in lieu of actually running xhprof. But this was not totally successful because the Xhprof class coupled the collection of data to the processing of data. Xhprof::__construct() called xhprof_enable(), so there was no real way around that. I think that the right way to fix that is to decouple profiling from profiling data analysis. Thus I renamed 'Xhprof' to 'XhprofData', and modified the class so that it expects to be fed profiling data rather than going out and collecting it on its own. As a result, it is now possible to profile a full phpunit run with xhprof, and the work that went into writing fixtures for the Xhprof unit tests pays off: the class and the tests no longer have a hard dependency on the xhprof extension, and the tests do not have to be skipped when it is not installed. And the tests are really testing the system under test, rather than the xhprof extension. Finally, I added a new Xhprof class, which really is just an extremely thin wrapper around xhprof_enable() / xhprof_disable(). The only extra functionality it provides is the ability to check whether xhprof is running, via Xhprof::isEnabled(). Calling Xhprof::enable() when it is already enabled will cause an exception to be thrown. This should help us avoid running into situations where two components contend for control of the profiler without realizing it. A unit test tests this behavior. The only part of this change that is not covered by tests is the change to ProfilerXhprof. I tested it manually and it works. Change-Id: Ica96beded68f04083abaf48ef1ae8c726eb60fa6
2016-05-12 18:10:39 +00:00
'XhprofData' => __DIR__ . '/includes/libs/XhprofData.php',
'Xml' => __DIR__ . '/includes/xml/Xml.php',
'XmlDumpWriter' => __DIR__ . '/includes/export/XmlDumpWriter.php',
'XmlJsCode' => __DIR__ . '/includes/xml/XmlJsCode.php',
'XmlSelect' => __DIR__ . '/includes/xml/XmlSelect.php',
'XmlTypeCheck' => __DIR__ . '/includes/libs/mime/XmlTypeCheck.php',
'ZhConverter' => __DIR__ . '/includes/language/converters/ZhConverter.php',
'ZipDirectoryReader' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',
'ZipDirectoryReaderError' => __DIR__ . '/includes/utils/ZipDirectoryReaderError.php',
'concatenatedgziphistoryblob' => __DIR__ . '/includes/historyblob/ConcatenatedGzipHistoryBlob.php',
'historyblobcurstub' => __DIR__ . '/includes/historyblob/HistoryBlobCurStub.php',
'historyblobstub' => __DIR__ . '/includes/historyblob/HistoryBlobStub.php',
];