| = MediaWiki 1.41 = |
| |
| PHP 8.0 workboard: https://phabricator.wikimedia.org/tag/php_8.0_support/ |
| PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/ |
| PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/ |
| PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/ |
| PHP 8.4 workboard: https://phabricator.wikimedia.org/tag/php_8.4_support/ |
| |
| == MediaWiki 1.41.5 == |
| |
| This is a maintenance release of the MediaWiki 1.41 branch. |
| |
| === Changes since MediaWiki 1.41.4 === |
| * Localisation updates. |
| * (T370380) installer: Support MW_SKIP_EXTERNAL_DEPENDENCIES in update.php. |
| * (T377450) [DatabaseUpdater] Don't interact with updatelog on virtual domains. |
| * (T377916) specials: Avoid passing null to str_replace(). |
| * (T378006, T372500) AutoLoader: Use require_once rather than require. |
| * (T378304) GlobalIdGenerator: Update str_getcsv() call for PHP 8.4. |
| * Upgrade php-session-serializer from 2.0.1 to 3.0.0. |
| * Upgrade xmp-reader from 0.9.1 to 0.9.2. |
| * (T376911) Upgrade AtEase from 2.1.0 to 3.0.0. |
| * (T372569) installer: Consistently use double quotes when outputting settings. |
| * (T362829) Correct range error in regexp of formatmetadata. |
| * (T381068) ButtonAuthenticationRequest: Add AllowDynamicProperties directive. |
| |
| == MediaWiki 1.41.4 == |
| |
| This is a maintenance release of the MediaWiki 1.41 branch. |
| |
| === Changes since MediaWiki 1.41.3 === |
| * Fix issue related to backport of AbuseFilter patch for T372998. |
| |
| == MediaWiki 1.41.3 == |
| |
| This is a security and maintenance release of the MediaWiki 1.41 branch. |
| |
| === Changes since MediaWiki 1.41.2 === |
| * Localisation updates. |
| * Parser: Deprecate use of mOutput before initialization. |
| * Clarify that $wgAllowCrossOrigin only applies to REST. |
| * composer.json: Add 5 more ext- to suggests. |
| * resources: Fix 404 Not Found for foreign Financial-Times/polyfill-library. |
| * ResourceLoader: Fix regression of color mapping in Less.php. |
| * ResourceLoader: Upgrade wikimedia/less.php to 4.4.1. |
| * SpecialExport: Prevent passing null to strtolower. |
| |
| == MediaWiki 1.41.2 == |
| |
| This is a maintenance release of the MediaWiki 1.41 branch. |
| |
| === Changes since MediaWiki 1.41.1 === |
| * Localisation updates. |
| * maintenance/generateSitemap.php: Partially revert 676fcf4. |
| * tests: Skip failing tests on php8.2 (and make pass). |
| * (T326480) ApiResult: Make array ordering consistent across PHP versions. |
| * (T352789, T287972) build: Raise TestingAccessWrapper from 2.0.0 to 3.0.0. |
| * (T326478) tests: Create new classes to hold dynamic properties in auth tests. |
| * (T353180) WANObjectCacheTest::testPreemptiveRefresh: Skip flaky test for PHP |
| 8.2+. |
| * tests: Remove es6 option from StartUpModuleTest. |
| * (T326478) tests: Avoid dynamic properties in AuthenticationProvider Test. |
| * tests: Skip failing tests on php8.3 (and make pass). |
| * (T326466) Introduce and use DynamicPropertyTestHelper. |
| * (T326478) tests: Avoid dynamic properties in auth tests. |
| * (T352910) tests: Use TestingAccessWrapper::newFromClass in session tests. |
| * (T326478) tests: Avoid dynamic properties in SessionManagerTest. |
| * ArticleTest: Skip testGetOrSetOnNewProperty() if PHP >= 8.2. |
| * tests: Remove dead code from WikiPageDbTest::assertPreparedEditNotEquals. |
| * (T326479, T361985) StatusValue: Allow passing arbitrary data to augment |
| result. |
| * (T357760) Use i18n strings for truncated subpage message in SpecialMovePage. |
| * debug: Update PsySH 0.11.1 -> 0.12.3. |
| * (T361991) Fix slash-delimited regex from CLI on maintenence/grep.php. |
| * (T352695) tests: Only set $dbSetup if setupTestDB() ends without throwing. |
| * (T362272) api: Replace null $httpCode by 0 in ApiBase::dieWithErrorOrDebug. |
| * (T362740) api: Pass wikiId to UserIdentity instance for action=userrights. |
| * (T343994) SpecialPages: Document which class getDescription is returning a |
| string from. |
| * (T150647, T216682) Make EncryptedPassword work with Argon2Password. |
| * (T364270) Fix long param names overlapping docs in API help pages. |
| * wrapOldPasswords: Improve progress output and decrease batch size. |
| * (T361367) ApiFeedWatchlist: Fix handling of array parameters. |
| * (T366130) EncryptedPassword: Store default parameters as strings. |
| * Name the PagerTools array entries to allow hooks to unset them. |
| * Do not mark HttpRequestFactory as @internal. |
| |
| == MediaWiki 1.41.1 == |
| |
| This is a security and maintenance release of the MediaWiki 1.41 branch. |
| |
| === Changes since MediaWiki 1.41.0 === |
| * Localisation updates. |
| * CategoryViewer: Fix "count(): Argument #1 ($value) must be of type |
| Countable|array, null given". |
| * (T353929) ActiveUsersPager: Count actions only once. |
| * composer: Use @php instead of php. |
| * (T334992) Headings in the license pickers should not be selected. |
| * (T326065) Indent JsonContent using tabs. |
| * Correct deprecation version of mediawiki.ui resource loader module. |
| * Resources.php: Replace short urls with full urls. |
| * (T354541) authmanager: Improve AuthenticationRequest docs. |
| * Tweak docs for UseLegacyMediaStyles. |
| * (T353870) Parse custom edit intro as content to enable language conversion. |
| * (T330428) ForeignResourceManager: Add trailing newline in validateLicense. |
| * ForeignResourceManager: Make it clearer what is being skipped for |
| documentation-only. |
| * (T355017) Add missing space in Special:RecentChangesLinked. |
| * (T355003) composer.json Add ext-bcmath and ext-gmp to suggests. |
| * PHPVersionCheck: Update text to match currently supported upstream PHP |
| versions (8.1+). |
| * (T354045) API: mark HTML output as non-cacheable. |
| * (T355530) filerepo: Fix img_major_mime for files with a non-standard |
| extensions. |
| * (T355530) MimeAnalyzer: Add @since to isValidMajorMimeType. |
| * (T352554) ZhConverter: Fix language variant fallback chain. |
| * (T347541) Add 'maxlength' and 'minlength' support to HTMLTextAreaField. |
| * (T357668) Parser::getExternalLinkAttribs: Don't set rel attribute to null. |
| * LockManagerGroupIntegrationTest: Remove test depending on DBLockManager. |
| * (T357808) LinkRendererTest: Add missing import for LinkTarget. |
| * (T353305) ApiResetPassword: Allow both user and email parameters to be passed |
| for reset. |
| * (T358949) updateCollation: Explicitly cast $scale to int. |
| * (T359055) api: Improve linking of language codes lists in top level i18n |
| messages. |
| * (T359294) Make sure MovePage::isValidFileMove matches UploadBase::getTitle. |
| * (T230245) Respect $maxConcurrency when queuing async FileOps. |
| * (T352554) Follow-up "ZhConverter: Fix language variant fallback chain". |
| * (T359139) Restore ability to disable footer links with "-". |
| * Fix use of array keys in SessionManager::getVaryHeaders(). |
| * (T292237, T317451) build: Restore Doxygen output for MediaWiki release tags. |
| * (T324903) HistoryPager: Add #[AllowDynamicProperties]. |
| * (T360850) Update Apache config syntax in .htaccess files. |
| * Update wikimedia/parsoid to 0.18.2. |
| * docs: Remove use of $IP from mwdocgen.php. |
| * (T317451) build: Restore Doxygen output for MediaWiki release tags (take 3). |
| * docs: Set stable permalink on markdown files. |
| * (T360608) WebRequest: detectServer appends default ports that should be |
| omitted. |
| * (T357019) allow maintenance/deleteBatch.php to accept page ID. |
| * (T355538, CVE-2024-34507) SECURITY: XSS in edit summary parser. |
| * (T357760, CVE-2024-34506) SECURITY: Denial of service vector via GET request |
| to Special:MovePage on pages with thousands of subpages. |
| |
| == MediaWiki 1.41.0 == |
| |
| === Changes since MediaWiki 1.41.0-rc.0 === |
| * Localisation updates. |
| * Update wikimedia/parsoid to 0.18.0. |
| * (T351758) DEVELOPERS.md: reword WSL instructions to include best practices. |
| * (T350615) PoolCounterConnectionManager: Add support for ipv6. |
| * (T321234) Make MagicWordArray not fail on old revs with broken UTF-8. |
| * thumb: Fix "PHP Deprecated: strlen(): Passing null to parameter". |
| * (T344971) Maintenance: Fix RebuildTextIndex. |
| * (T327007) htmlform: Correct validation for file input field. |
| |
| == MediaWiki 1.41.0-rc.0 == |
| |
| == Upgrading notes for 1.41 == |
| Don't forget to always back up your database before upgrading! |
| |
| See the file UPGRADE for more detailed per-version upgrade instructions from the |
| oldest supported upgrading version, MediaWiki 1.35. |
| |
| Some specific notes for MediaWiki 1.41 upgrades are below: |
| * (T178356) MediaWiki now requires browsers to support ES6 for them to receive |
| JavaScript, up from ES5. In practice, this primarily means that users of |
| Internet Explorer 11 (EOL in 2022) will no longer get JavaScript tools. |
| |
| For notes on 1.40.x and older releases, see HISTORY. |
| |
| === Configuration changes for system administrators in 1.41 === |
| * $wgGroupPermissions: The 'purge' permission is now considered an |
| implicit right that can be rate limited, but not revoked. This has |
| effectively already been the case for a long time, see T291316. |
| |
| ==== New configuration ==== |
| * $wgPrivilegedGroups – Users belonging in some of the listed groups will be |
| audited more aggressively. |
| * $wgPageLinksSchemaMigrationStage – This temporary flag lets you control the |
| migration stage for converting the pagelinks database table into normal form. |
| * $wgExternalLinksDomainGaps – Can be used by large wikis to optimize certain |
| external link queries. |
| * $wgResourceLoaderEnableSourceMapLinks - Add a SourceMap header to |
| ResourceLoader responses for JavaScript modules (T47514). |
| * $wgVirtualDomainsMapping - Mapping of virtual domains to other dbs. It's |
| useful to get connection to the external cluster. |
| |
| ==== Changed configuration ==== |
| * $wgAuthManagerAutoConfig – When using this setting to modify the |
| authentication system in MediaWiki, the classes |
| TemporaryPasswordPrimaryAuthenticationProvider, |
| LocalPasswordPrimaryAuthenticationProvider and |
| EmailNotificationSecondaryAuthenticationProvider now require |
| DBLoadBalancerFactory, not DBLoadBalancer, as a service. |
| * $wgUseFileCache is no longer used for ResourceLoader module caching. |
| * $wgLBFactoryConf['secret'] has been replaced by $wgChronologyProtectorSecret. |
| |
| ==== Removed configuration ==== |
| * $wgCommentTempTableSchemaMigrationStage – This temporary flag did let you |
| control the migration stage for the temporary comment database table, from |
| revision. |
| * $wgExternalLinksSchemaMigrationStage – This temporary flag did let you |
| control the migration stage for the externallinks database table. |
| * $wgParserOutputHooks - This array interacted with |
| ParserOutput::addOutputHook(), which has been deprecated since 1.38 and was |
| removed in this release. |
| |
| === New user-facing features in 1.41 === |
| * Special:RandomPage can now take multiple namespaces in its URL, split by ','. |
| * The aria-level HTML attribute is now allowed in wikitext by the Sanitizer. |
| |
| === New features for sysadmins in 1.41 === |
| * $wgDBssl can now enabled in the installer when the database type is |
| Postgres or MariaDB/MySQL (T335828). |
| * MWHttpRequest will forward 'tracestate' and/or 'traceparent' headers when |
| those are present in the original request and $wgAllowExternalReqID is set |
| to true. |
| * MultiHttpClient will send X-Request-Id header and additionally will forward |
| 'tracestate' and/or 'traceparent' headers when those are present in the |
| original request and $wgAllowExternalReqID is set to true. |
| |
| === New developer features in 1.41 === |
| * Added ForeignResourcesDir extension.json / skin.json attribute, which should |
| point to the directory holding your foreign-resources.yaml file. See |
| https://www.mediawiki.org/wiki/Foreign_resources for background. |
| * Added PrivilegedGroups attribute for extension.json / skin.json, which lets |
| you add any new user groups you define to wgPrivilegedGroups (see above). |
| * Added a .gitmessage commit template. To use it, run: |
| `git config commit.template .gitmessage` |
| * A new hook, TextSlotDiffRendererTablePrefixHook, has been added to allow |
| extensions to add content within #mw-content-text but after the |
| DifferenceEngineViewHeader or DifferenceEngineShowDiffPage hooks have been |
| run. The new hook is used to add elements within a horizontal display area, |
| where their order can be explicitly set. Examples of uses for this include |
| adding the VisualEditor diff-type switch, and the legend for inline diffs that |
| is displayed if Wikidiff2 is installed. |
| * validation callbacks for HTMLForm fields can now return Status objects. |
| HTMLForm::validate will convert good Status instances to true and Status |
| instances to a string containing a list with the errors. |
| * ?action=rollback, if successful, will fire core's postEdit JavaScript hook; |
| for now, we do *not* display a success message to the user via mw.notify(), |
| as the RollbackAction form's success page is already shown |
| * MultiHttpClient constructor will accept `headers` property which defines a |
| set of headers attached to every request performed by the client. |
| * New `Wikimedia/Http/TelemetryHeadersInterface` interface that provides a |
| telemetry information which could be attached to HTTP Requests |
| * Wikimedia/Http/TelemetryHeadersInterface can be passed to MultiHttpClient |
| via 'telemetry' option. |
| * UserRegistrationLookup adds support for multiple kinds of registration dates |
| Extensions providing support for wiki-farm can use this to provide a global |
| registration date (across all wikis), for example. |
| * When $wgUseXssLanguage is set to true (enabled by default in |
| DevelopmentSettings.php), ?uselang=x-xss can be used to easily test |
| whether all messages are being escaped correctly. |
| * Html::noticeBox accepts new optional parameters, 'heading' & 'iconClassName'. |
| 'heading' allows to pass an string as title; 'iconClassName' overwrites the |
| default info icon. |
| |
| === External library changes in 1.41 === |
| |
| ==== New external libraries ==== |
| * Added pinia at v2.0.16. |
| * Added symfony/polyfill-php81 at v1.28.0. |
| * Added symfony/polyfill-php82 at v1.28.0. |
| * Added symfony/polyfill-php83 at v1.28.0. |
| |
| ==== Changed external libraries ==== |
| * Updated codex, codex-design-tokens and codex-icons |
| from v0.6.2 to v1.0.0. |
| * Updated guzzlehttp/guzzle from 7.5.0 to 7.5.3. |
| * Updated jQuery from v3.6.1 to v3.7.0. |
| * Updated justinrainbow/json-schema from 5.2.12 to v5.2.13. |
| * Updated Mustache from 3.0.1 to 4.2.0. |
| * Updated OOjs from 6.0.0 to 7.0.1. |
| * Updated OOUI from v0.46.3 to v0.48.1. |
| * Updated pear/mail from 1.5.0 to 1.5.1. |
| * Updated symfony/polyfill-php82 from v1.27.0 to v1.28.0. |
| * Updated symfony/yaml from v5.4.17 to v5.4.23. |
| * Updated wikimedia/at-ease from 2.1.0 to 3.0.0. |
| * Updated wikimedia/bcp-47-code from 1.0.0 to 2.0.0. |
| * Updated wikimedia/common-passwords from 0.4.0 to 0.5.0. |
| * Updated wikimedia/composer-merge-plugin from 2.0.1 to 2.1.0. |
| * Updated wikimedia/html-formatter from 3.0.1 to 4.0.3. |
| * Updated wikimedia/ip-utils from 4.0.0 to 5.0.0. |
| * Updated wikimedia/less.php from 4.0.0 to 4.1.1. |
| * Updated wikimedia/minify from 2.3.0 to 2.5.1. |
| * Updated wikimedia/php-session-serializer from 2.0.1 to 3.0.0. |
| * Updated wikimedia/remex-html from 3.0.3 to 4.0.1. |
| * Updated wikimedia/timestamp from 4.1.0 to 4.1.1. |
| * Updated wikimedia/utfnormal from 3.0.2 to 4.0.0. |
| * Updated wikimedia/xmp-reader from 0.9.1 to 0.9.2. |
| |
| ===== Changed development-only external libraries ===== |
| * Updated mediawiki/mediawiki-codesniffer from 41.0.0 to 42.0.0. |
| * Updated mediawiki/mediawiki-phan-config from 0.12.1 to 0.13.0. |
| |
| ==== Removed external libraries ==== |
| * jquery.hoverIntent was removed. |
| * codex-search was removed, it's part of codex now. |
| * wikimedia/ip-set was removed, it's part of wikimedia/ip-utils now. |
| * jquery.color was removed. |
| * jquery.fullscreen was removed. |
| * jquery.form was removed. |
| |
| === Action API changes in 1.41 === |
| * (T322944) `Authorization` was added to the default list of headers |
| allowed for cross-origin API requests ($wgAllowedCorsHeaders). |
| |
| === Languages updated in 1.41 === |
| MediaWiki supports over 350 languages. Many localisations are updated regularly. |
| Below only new and removed languages are listed, as well as changes to languages |
| because of Phabricator reports. |
| |
| * (T345807) Added language support for Karekare (kai). |
| * (T333765) Removed language support for Akan (Ak). |
| * (T332113) Added language support for Northern Hindko (hno). |
| * (T333425) Added language support for Iraqi (Mesopotamian) Arabic (acm). |
| * (T336919) Added language support for Crimean Tatar (Romania) (crh-ro). |
| * (T338416) Added language support for Betawi (bew). |
| * (T341545) Added language support for West Coast Bajau (a.k.a. Sama; bdr). |
| * (T332118) Namespace translations for Angika (anp) were added |
| * (T341942) The autonym of the Buginese language is changed to the Latin-script |
| name "Basa Ugi", and the localization in the language code "bug" is now only |
| in the Latin script. It's possible to add localization in the Lontara script |
| in translatewiki under the code "bug-bugi". |
| * (T341943) Main Page name translation was changed from "Leppa Indoë" |
| to "Watangpola". If you manage a wiki in this language, make sure that |
| links to the main page are correctly updated. See |
| https://translatewiki.net/w/i.php?title=Support&oldid=11723654#Change_MediaWiki:Mainpage/bug |
| |
| === Breaking changes in 1.41 === |
| * Article::doDelete(), deprecated since 1.37, has been removed. |
| * CommentStore::getStore(), deprecated since 1.31, has been removed. |
| * Article::getRedirectHeaderHtml() no longer accepts an array as $target. |
| Passing an array was deprecated in 1.39. (The method itself has also |
| been deprecated.) |
| * BagOStuff::addBusyCallback(), deprecated since 1.39, has been removed. |
| * IExpiringStore has been removed, use either ExpirationAwareness or |
| StorageAwareness constants instead. |
| * IDatabase::wasErrorReissuable(), deprecated since 1.40, has been removed. |
| * IDatabase::lastQuery and IReadableDatabase::lastQuery, deprecated in 1.40, |
| have been removed. |
| * Database::queryMulti(), unused, has been removed without deprecation. |
| The protected Database::doMultiStatementQuery method was removed, and the |
| protected Database::executeQuery method signature was changed to take |
| Query object as argument instead of a raw SQL string. |
| * Database::unionConditionPermutations(), unused, has been removed without |
| deprecation. |
| * SimpleSearchResultSetWidget and SimpleSearchResultWidget classes, deprecated |
| in 1.31, have been removed. |
| * Database::factory(), deprecated in 1.39, has been removed. |
| * Calling IDatabase::delete() or IDatabase::update() with empty conditions |
| has been deprecated since 1.35. This now throws an error. |
| * Maintenance::shutdown() has been moved over into the MaintenanceRunner class |
| without deprecation. |
| * The following DatabasePostgres methods were unused and have been removed: |
| - ::currentSequenceValue() |
| - ::triggerExists() |
| - ::ruleExists() |
| * The following IDatabase methods were unused and removed without deprecation: |
| - ::wasLockTimeout() |
| - ::wasConnectionLoss() |
| * Database::getTempTableWrites(), previously protected, is now private. |
| * DatabasePostgres class parameter "keywordTableMap", deprecated since 1.37, |
| has been removed. |
| * Database::doUpsert() and ::doReplace() have been removed without deprecation. |
| Subclasses should override ::upsert() or ::replace() respectively. |
| * SelectQueryBuilder::lockForUpdate(), deprecated in 1.40 and unused, |
| has been removed without hard deprecation. |
| * TransactionProfiler::setSilenced() deprecated in 1.40, has been removed. |
| * ILoadBalancer::closeConnection, unused, has been removed without deprecation. |
| * ILoadBalancer::waitFor, unused, has been removed without deprecation. |
| * ILBFactory::resolveDomainID and ::getChronologyProtectorTouched, unused, |
| have been removed without deprecation. |
| * The following methods have been moved from ILoadBalancer to |
| ILoadBalancerForOwner: |
| - ::redefineLocalDomain() |
| - ::hasPrimaryConnection() |
| - ::setIndexAliases() |
| * LBFactory::makeCookieValueFromCPIndex() and ::getCPInfoFromCookieValue() |
| has been moved to ChronologyProtector class without backward compatability |
| as they are not supposed to be used outside of core. |
| * MWHttpRequest::factory(), deprecated since 1.34, has been removed. |
| * The Http class, deprecated since 1.34, with the functions ::request(), |
| ::get(), ::post(), ::userAgent(), ::isValidURI(), ::getProxy(), |
| ::createMultiClient() have been removed. |
| * WikiPage::factory(), ::newFromID() and ::newFromRow, deprecated in 1.36, |
| have been removed. |
| * Maintenance::$mArgList, ::shouldExecute(), ::setAgentAndTriggers(), |
| ::adjustMemoryLimit(), ::globals(), and ::loadSettings() have been removed. |
| * The GenericArrayObject class, deprecated in 1.40, |
| has been removed. |
| * The $replace parameter has been removed from HookContainer::scopedRegister. |
| This parameter was unused outside core, and the functionality was intended |
| for testing. |
| * PrevNextNavigationRenderer class, deprecated in 1.39, |
| has been removed. |
| * class alias MediaWiki\User\WatchlistNotificationManager, deprecated in 1.36, |
| has been removed. |
| * MediaWikiServices::getWatchlistNotificationManager(), deprecated in 1.36, |
| has been removed. |
| * Interface MediaWiki\Hook\ParserTestTablesHook, deprecated in 1.36, |
| has been removed. |
| * The NewPagesLineEndingHook now takes NewPagesPager instead of |
| SpecialNewpages as first argument. |
| * The following methods in the Title class, deprecated since 1.37, have been |
| removed: |
| - ::areCascadeProtectionSourcesLoaded() |
| - ::areRestrictionsCascading() |
| - ::areRestrictionsLoaded() |
| - ::getAllRestrictions() |
| - ::getCascadeProtectionSources() |
| - ::getFilteredRestrictionTypes() |
| - ::getRestrictionExpiry() |
| - ::getRestrictionTypes() |
| - ::getRestrictions() |
| - ::isCascadeProtected() |
| - ::isProtected() |
| - ::isSemiProtected() |
| - ::loadRestrictionsFromRows() |
| * Global function wfShowingResults, deprecated in 1.40, has been removed. |
| * Global function wfClearOutputBuffers, deprecated in 1.36, has been removed. |
| * LinkBatch::__construct() now requires that all parameters be passed. The |
| fallback to MediaWikiServices emitted deprecation notices since 1.35. |
| * The methods IndexPager::getPagingLinks(), IndexPager::getLimitLinks() and |
| IndexPager::buildPrevNextNavigation(), deprecated in 1.39, |
| have been removed. |
| * Overriding the method IndexPager::makeLink(), deprecated in 1.39, |
| is no longer possible. |
| * MagicWordFactory::getCacheTime() is deprecated and returns -1. |
| * Various mediawiki.less mediawiki.ui variables, deprecated in 1.35, have been |
| removed. See also below that the remaining mediawiki.ui variables are now also |
| deprecated. |
| * Calling getId() on an AbstractBlock from the wrong wiki, deprecated since |
| 1.38, now throws an exception. |
| * SQLite no longer supports raw MySQL queries. |
| * The following functions from the mediawiki.mixins Less import, deprecated |
| since 1.37, have been removed: .transition(), .transition-transform(), |
| .transform() and .transform-origin(). |
| * Support was dropped for skins with paths relative to core which has been |
| sending deprecation notices since 1.37. The skin `templateDirectory` key |
| should now always be relative to the skin. |
| * The SkinTemplate public thisquery property was removed without deprecation. |
| Only one skin was known to use it and that has been patched accordingly. |
| * The jquery.tipsy module, deprecated since 1.28, has now been removed. |
| * NamespaceInfo::getRestrictionLevels(), deprecated in 1.34, has been removed. |
| Use PermissionManager::getNamespaceRestrictionLevels() instead. |
| * Proto-relative external links are now stored and indexed only as HTTPS |
| instead of two rows, one for HTTP and one for HTTPS. |
| * MediaWikiIntegrationTestCase::getTestUser(), ::getTestSysop(), and |
| ::getMutableTestUser() have been made protected and non-static. |
| * MediaWikiIntegrationTestCase::$supportedDBs has been changed to a private |
| constant. |
| * MediaWikiIntegrationTestCase::addCoreDBData() has been deprecated. The method |
| is now a no-op and is no longer called. Tests should create the fixtures |
| they need. |
| * Saving preferences for a temporary user now throws an error (e.g. via |
| UserOptionsManager::saveOptions) |
| * ApiQuery::getNamedDB() and ApiQueryBase::selectNamedDB(), deprecated in |
| 1.39, have been removed. |
| * ChangeTags::addTagsAccompanyingChangeWithChecks() and |
| ChangeTags::undefineTag() unused everywhere, have been removed without |
| deprecation. |
| * Usage of MediaWiki::preOutputCommit() with the $postCommitWork arg has been |
| dropped. It's no longer used. |
| * SkinTemplateNavigation and SkinTemplateNavigation::SpecialPage hooks, |
| deprecated in 1.39, have been removed. |
| * The PersonalUrls hook, deprecated in 1.39, has been removed. |
| * OutputPage::getCSPNonce(), soft deprecated in 1.35, now emits deprecation |
| warnings. |
| * Support of the third parameter of LogEventsListGetExtraInputs hook, |
| deprecated since 1.32, has been removed. |
| * JobSpecification::getTitle(), deprecated in 1.37, has been removed. |
| * The module mw.ui.anchor has been removed. Projects that need it should |
| maintain a local copy or use the Codex link mixin. More information |
| at T235961. |
| * ParsoidCachePrewarmJob::newSpec() now requires a PageRecord as the second |
| parameter instead of a page ID. |
| * Public access to the DifferenceEngine properties mOldid, mNewid, mOldRev, |
| mNewRev, mOldPage, mNewPage, mOldContent, mNewContent, mRevisionsLoaded, |
| mTextLoaded and mCacheHit, deprecated in 1.32, was removed. |
| * SearchDatabase::db, deprecated since 1.38, has been removed. |
| * SearchDatabase::lb has been removed without deprecation, use ::dbProvider |
| instead. |
| * StreamFile::STREAM_HEADLESS and StreamFile::STREAM_ALLOW_OB, deprecated |
| in 1.34, have been removed. |
| * AbstractAuthenticationProvider::setLogger(), ::setManager(), ::setConfig() |
| and ::setHookContainer() have been removed and also from it's related |
| interface, AuthenticationProvider. The corresponding properties are set in |
| AbstractAuthenticationProvider::init(). For side effects, you can override |
| AbstractAuthenticationProvider::postInitSetup(). |
| * Title::newFromTitleValue(), deprecated since 1.34, has been removed. |
| * Parser::OT_MSG, related to OT_MSG(3) MediaWiki constant, parameter for |
| starting external parse has been dropped. This was kept since 2008 for B/C |
| only and no longer used. Use instead Parser::OT_PREPROCESS as the |
| replacement. |
| * SpecialPageAction has been removed without deprecation. There were no known |
| uses outside of core. |
| * ConfigRepository::getValueOf() has been removed without deprecation. This |
| method was introduced and never used for a long time now. |
| * BacklinkCache::get(), ::getLinks(), ::getCascadeProtectedLinks() which |
| emitted deprecation warnings has no usage left. It has been removed. |
| * The following constants and methods in the Language class, hard deprecated |
| since 1.40, have been removed: |
| - ::ALL |
| - ::SUPPORTED |
| - ::MESSAGES_FALLBACKS |
| - ::STRICT_FALLBACKS |
| - ::factory() |
| - ::isSupportedLanguage() |
| - ::isWellFormedLanguageTag() |
| - ::isValidCode() |
| - ::isValidBuiltInCode() |
| - ::isKnownLanguageTag() |
| - ::getLocalisationCache() |
| - ::fetchLanguageNames() |
| - ::fetchLanguageName() |
| - ::getConverter() |
| - ::autoConvert() |
| - ::autoConvertToAllVariants() |
| - ::convert() |
| - ::convertNamespace() |
| - ::hasVariants() |
| - ::hasVariant() |
| - ::convertHtml() |
| - ::convertCategoryKey() |
| - ::getVariants() |
| - ::getPreferredVariant() |
| - ::getDefaultVariant() |
| - ::getURLVariant() |
| - ::getExtraHashOptions() |
| - ::getParentLanguage() |
| - ::getFileName() |
| - ::getMessagesFileName() |
| - ::getJsonMessagesFileName() |
| - ::getFallbackFor() |
| - ::getFallbacksFor() |
| - ::getFallbacksIncludingSiteLanguage() |
| - ::getMessagesFor() |
| - ::getMessageFor() |
| - ::getMessageKeysFor() |
| - ::getConvRuleTitle() |
| * The parameter noSeparators to Language::formatNum, deprecated since 1.36, |
| has been removed. Use Language::formatNumNoSeparators instead. |
| * The following methods in the ParserOutput class, deprecated since 1.38, have |
| been removed: |
| - ::addOutputHook() |
| - ::addTrackingCategory() |
| - ::addWarning() |
| - ::getCategoryLinks() |
| - ::getOutputHooks() |
| - ::getProperties() |
| - ::getProperty() |
| - ::hasDynamicContent() |
| - ::hideNewSection() |
| - ::preventClickjacking() |
| - ::setCategoryLinks() |
| - ::setProperty() |
| - ::unsetProperty() |
| * OutputPage::allowClickjacking() and ::preventClickjacking(), deprecated |
| since 1.38, have been removed. |
| * ResourceFileCache has been removed without deprecation. There were no known |
| uses outside of core. |
| * Many LocalisationCache constants, properties and methods that have no known |
| usage outside of the class have been made private without deprecation. |
| * User::idFromName(), deprecated in 1.37, has been removed. Instead, you should |
| use UserIdentityLookup::getUserIdentityByName(). |
| * User::incEditCount(), deprecated in 1.37, has been removed. Instead, use |
| UserEditTracker::incrementUserEditCount(). |
| * Article::getTimestamp(), deprecated in 1.35, has been removed. Use WikiPage's |
| or RevisionRecord's version of this method instead. |
| * ActionFactory::actionExists(), deprecated since 1.38, has been dropped. |
| * Action::exists(), deprecated since 1.38, has been dropped. |
| * ContentHandler::getForTitle(), deprecated since 1.35, has been dropped. |
| * LockManagerGroup::getDefault() and ::getAny(), deprecated since 1.35, have |
| been dropped. |
| * BaseTemplate::getToolbox(), deprecated since 1.35, has been dropped. To add |
| items to the toolbox, use the SidebarBeforeOutput hook. To get the toolbox, |
| subclasses can use $this->data['sidebar']['TOOLBOX']. |
| * IndexPager::getHookContainer(), deprecated since 1.40, has been removed. You |
| should instead inject a HookContainer into your code. |
| * Not specifying a manifest_version in your extension.json or skin.json file, |
| deprecated since 1.26 and emitting warnings since 1.29, is no longer supported |
| with a fallback; it will now have unspecified behaviour. |
| * RecentChange::getEngine(), deprecated since 1.29, has been removed. Use |
| RCFeed::factory() instead. |
| * EditPage::showEditForm() no longer respects the $formCallback parameter, which |
| was deprecated in 1.25. Use the EditPage::showEditForm:fields hook instead. |
| * The following properties in EditPage, deprecated in 1.38, were made private: |
| - $mArticle |
| - $mTitle |
| - $isNew |
| - $allowBlankArticle |
| - $selfRedirect |
| - $allowSelfRedirect |
| - $diff |
| - $undoAfter |
| - $edit |
| - $contentLength |
| * EditPage::addNewLineAtEnd(), deprecated since 1.38, was removed. |
| * AuthManager::checkAccountCreatePermissions(), deprecated in 1.39, has been |
| removed. Use authorizeCreateAccount() or probablyCanCreateAccount() instead. |
| * LinkCache::addGoodLinkObj(), deprecated in 1.37, has been removed. You should |
| use ::addGoodLinkObjFromRow(). |
| * Constructing TextConflictHelper without a ContentHandlerFactory, deprecated |
| since 1.35, will now trigger a type error. |
| * JobQueue::getWiki(), deprecated in 1.33, has been removed. |
| * ManualLogEntry::setTags(), deprecated in 1.33, has been removed. |
| * WikiPage::getDeletionUpdates(), deprecated in 1.37, has been removed. |
| * ResourceLoader\Context::getConfig(), deprecated in 1.34, has been removed. |
| * When creating a SearchUpdate instance, passing a non-Content string or Boolean |
| as the $c parameter, deprecated since 1.34, will now trigger type errors. |
| * SkinTemplate::getNameSpaceKey(), deprecated in 1.35, has been dropped. Instead |
| you should use Title::getNamespaceKey(). |
| * The AddNewAccount hook, deprecated since 1.27, will now trigger deprecation |
| warnings. You should use the LocalUserCreated hook instead. |
| * The PrefixSearchBackend hook, deprecated since 1.27, will now trigger |
| deprecation warnings. Override SearchEngine::completionSearchBackend instead. |
| * PrefixSearch::validateNamespaces(), completely unused everywhere, has been |
| removed without deprecation. |
| * BaseTemplate::getTrail() and ::printTrail(), deprecated since 1.39, have been |
| dropped. |
| * Passing a second query parameter to Title::getFullURL(), Title::getLocalURL(), |
| Title::getInternalURL(), or Title::getCanonicalURL(), each deprecated in 1.19, |
| is now not supported. Pass it as a key,value pair in the first parameter array |
| instead. |
| * Title::getBacklinkCache(), deprecated since 1.37, has been dropped. Instead, |
| use BacklinkCacheFactory::getBacklinkCache(). |
| * Title::newFromIDs and TitleFactory::newFromIDs, deprecated in 1.38, have been |
| dropped; use a PageStore QueryBuilder instead. |
| * Title::getSelectFields(), deprecated since 1.36, has been dropped. You can use |
| PageStore::newSelectQueryBuilder() instead. |
| * Title::getTouched() will now trigger an error if you pass it an instance of |
| IDatabase rather than a READ_XXX constant. This legacy behaviour has been |
| deprecated since 1.38. |
| * User::getGroupPermissions(), getGroupsWithPermission() & groupHasPermission(), |
| all of which were deprecated since 1.34, have been removed. Instead, use the |
| GroupPermissionsLookup service. |
| * Similarly, PermissionManager::getGroupPermissions(), getGroupsWithPermission() |
| & groupHasPermission(), all of which were deprecated since 1.36, have also |
| been removed. Instead, use the GroupPermissionsLookup service. |
| * The following old, deprecated aliases for classes in the RDBMS layer, have now |
| been removed: |
| - DBConnRef (use Wikimedia\Rdbms\DBConnRef) |
| - Database (use Wikimedia\Rdbms\Database) |
| - DatabaseBase (use Wikimedia\Rdbms\Database) |
| - DatabaseMysqlBase (use Wikimedia\Rdbms\DatabaseMySQL) |
| - DatabaseMysqli (use Wikimedia\Rdbms\DatabaseMySQL) |
| - DatabasePostgres (use Wikimedia\Rdbms\DatabasePostgres) |
| - DatabaseSqlite (use Wikimedia\Rdbms\DatabaseSqlite) |
| - IDatabase (use Wikimedia\Rdbms\IDatabase) |
| - FakeResultWrapper (use Wikimedia\Rdbms\FakeResultWrapper) |
| - ResultWrapper (use Wikimedia\Rdbms\ResultWrapper) |
| * The following old, deprecated aliases for classes have now been removed: |
| - MediaWiki\Rest\Handler\HtmlInputTransformHelper |
| - MediaWiki\Rest\Handler\HtmlMessageOutputHelper |
| - MediaWiki\Rest\Handler\HtmlOutputRendererHelper |
| - MediaWiki\Rest\Handler\PageContentHelper |
| - MediaWiki\Rest\Handler\PageRestHelperFactory |
| - MediaWiki\Rest\Handler\ParsoidFormatHelper |
| - MediaWiki\Rest\Handler\RevisionContentHelper |
| (use the classes from namespace MediaWiki\Rest\Handler\Helper) |
| - SearchNearMatcher (use MediaWiki\Search\TitleMatcher) |
| * $CHANGEDORCREATED argument of 'enotif_body' message was removed. |
| It wasn't used in the default messages since 1.21. |
| * The AbstractBlock and DatabaseBlock public properties mExpiry, mHideName, |
| mTimestamp, mAuto and mParentBlockId, deprecated since 1.34, have been |
| removed. |
| * WikiPage::doDeleteUpdates() and ::getDeletionUpdates(), deprecated in 1.37, |
| have been removed. |
| * The User public properties mOptions, mBlock, mBlockedby and mHideName, |
| deprecated since 1.35, were removed. |
| * User::CHECK_USER_RIGHTS and User::IGNORE_USER_RIGHTS were removed. They were |
| flags passed to methods which were previously removed. |
| * All public properties of LinksUpdate, deprecated in 1.38, were removed. |
| * The class Wikimedia\Rdbms\MySQLMasterPos, deprecated in 1.37, has been |
| removed. Use Wikimedia\Rdbms\MySQLPrimaryPos instead. |
| * The class GetBlockErrorMessageKey, deprecated in 1.40, has been removed. |
| * The ability to set Parser::mTitle to null, deprecated in 1.34, was removed. |
| * The following MagicWord methods have been removed without deprecation. There |
| were no known uses. |
| - ::addToArray |
| - ::compareStringLength |
| - ::getVariableRegex |
| - ::getVariableStartToEndRegex |
| - ::getWasModified |
| - ::matchStart |
| - ::matchVariableStartToEnd |
| - ::pregRemoveAndRecord |
| - ::substituteCallback |
| * The following MagicWordArray methods have been removed or made private without |
| deprecation. There were no known uses outside of the class. |
| - ::addArray |
| - ::getRegex, already marked as @internal, now private |
| - ::getRegexStart, already marked as @internal, now private |
| - ::getVariableRegex, deprecated since 1.36 |
| - ::getVariableStartToEndRegex, already marked as @internal, now private |
| - ::parseMatch, now private |
| * AbstractContent::getRedirectChain() and ::getUltimateRedirectTarget(), both |
| deprecated in 1.38, have been removed. |
| |
| === Deprecations in 1.41 === |
| * The MessageCache::get hook is deprecated for performance reasons. Use |
| MessageCacheFetchOverrides instead. |
| * EtcdConfig::setLogger() is deprecated as it was unused and could not be |
| used correctly. As a standalone class, its warnings now surface |
| unconditionally via the native PHP error log. |
| * The interface for hook ParserModifyImageHTML have been renamed from |
| ParserModifyImageHTML to ParserModifyImageHTMLHook, |
| the old name is deprecated. |
| * (T178356) The es6-polyfills module is deprecated and is now a no-op. |
| * SerializedValueContainer::newUnified() is unused and now emits deprecation |
| warnings. |
| * Profiler::setProfileID() and ::getAllowOutput() are now deprecated and also |
| emit deprecation warnings. For ::setProfileID(), override the related class |
| member directly in sub-class. |
| * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class |
| namespace as appropriate, so that we can use PSR-4 auto-loading, which will |
| speed up general code loading of MediaWiki. The old global namespace class |
| names are being left behind as deprecated aliases. |
| |
| In this release of MediaWiki, 1661 classes now have a namespace and 972 do |
| not yet (63% done, up from 54% in MediaWiki 1.40.0). The following have newly |
| been moved: |
| - MediaWiki\Config: |
| - Config |
| - ConfigException |
| - ConfigFactory |
| - EtcdConfig |
| - EtcdConfigParseError |
| - GlobalVarConfig |
| - HashConfig |
| - MultiConfig |
| - MutableConfig |
| - SiteConfiguration |
| - MediaWiki\EventRelayer: |
| - EventRelayer |
| - EventRelayerNull |
| - EventRelayerGroup |
| - MediaWiki\Installer: |
| - Pingback |
| - MediaWiki\Libs: |
| - Emptiable |
| - MediaWiki\Output: |
| - OutputPage |
| - OutputHandler |
| - StreamFile |
| - MediaWiki\Pager: |
| - ActiveUsersPager |
| - AllMessagesTablePager |
| - AlphabeticPager |
| - BlockListPager |
| - CategoryPager |
| - ContribsPager |
| - DeletedContribsPager |
| - HistoryPager |
| - ImageListPager |
| - IndexPager |
| - LogPager |
| - MergeHistoryPager |
| - NewFilesPager |
| - NewPagesPager |
| - Pager |
| - PagerTools |
| - ProtectedPagesPager |
| - ProtectedTitlesPager |
| - RangeChronologicalPager |
| - ReverseChronologicalPager |
| - TablePager |
| - UsersPager |
| - MediaWiki\Parser: |
| - Sanitizer |
| - MediaWiki\Request: |
| - ProxyLookup |
| - WebRequest |
| - MediaWiki\SiteStats: |
| - SiteStats |
| - SiteStatsInit |
| - MediaWiki\Specials: |
| - SpecialActiveUsers |
| - SpecialAllMessages |
| - SpecialAncientPages |
| - SpecialApiHelp |
| - SpecialApiSandbox |
| - SpecialAutoblockList |
| - SpecialBlankpage |
| - SpecialBlock |
| - SpecialBlockList |
| - SpecialBookSources |
| - SpecialBotPasswords |
| - SpecialBrokenRedirects |
| - SpecialCategories |
| - SpecialChangeContentModel |
| - SpecialChangeCredentials |
| - SpecialChangeEmail |
| - SpecialChangePassword |
| - SpecialComparePages |
| - SpecialConfirmEmail |
| - SpecialContribute |
| - SpecialContributions |
| - SpecialCreateAccount |
| - SpecialDeadendPages |
| - SpecialDeletePage |
| - SpecialDeletedContributions |
| - SpecialDiff |
| - SpecialDoubleRedirects |
| - SpecialEditPage |
| - SpecialEditTags |
| - SpecialEditWatchlist |
| - SpecialEmailInvalidate |
| - SpecialEmailUser |
| - SpecialExpandTemplates |
| - SpecialExport |
| - SpecialFewestRevisions |
| - SpecialFileDuplicateSearch |
| - SpecialFilepath |
| - SpecialGoToInterwiki |
| - SpecialImport |
| - SpecialJavaScriptTest |
| - SpecialLinkAccounts |
| - SpecialLinkSearch |
| - SpecialListDuplicatedFiles |
| - SpecialListFiles |
| - SpecialListGrants |
| - SpecialListGroupRights |
| - SpecialListRedirects |
| - SpecialListUsers |
| - SpecialLockdb |
| - SpecialLog |
| - SpecialLonelyPages |
| - SpecialLongPages |
| - SpecialMIMESearch |
| - SpecialMediaStatistics |
| - SpecialMergeHistory |
| - SpecialMostCategories |
| - SpecialMostInterwikis |
| - SpecialMostLinked |
| - SpecialMostLinkedCategories |
| - SpecialMostLinkedTemplates |
| - SpecialMostRevisions |
| - SpecialMute |
| - SpecialMyLanguage |
| - SpecialNewFiles |
| - SpecialNewPages (and capitalisation corrected) |
| - SpecialNewSection |
| - SpecialPageData |
| - SpecialPageHistory |
| - SpecialPageInfo |
| - SpecialPageLanguage |
| - SpecialPagesWithProp |
| - SpecialPasswordPolicies |
| - SpecialPasswordReset |
| - SpecialPermanentLink |
| - SpecialPreferences |
| - SpecialPrefixIndex (and capitalisation corrected) |
| - SpecialProtectedPages (and capitalisation corrected) |
| - SpecialProtectedTitles (and capitalisation corrected) |
| - SpecialProtectPage |
| - SpecialPurge |
| - SpecialRandomInCategory |
| - SpecialRandom |
| - SpecialRandomRedirect |
| - SpecialRandomRootPage |
| - SpecialRecentChanges |
| - SpecialRecentChangesLinked |
| - SpecialRedirect |
| - SpecialRedirectToSpecial |
| - SpecialRemoveCredentials |
| - SpecialRenameUser (and capitalisation corrected) |
| - SpecialResetTokens |
| - SpecialRevisionDelete |
| - SpecialRunJobs |
| - SpecialSearch |
| - SpecialShortPages |
| - SpecialSpecialPages (and capitalisation corrected) |
| - SpecialStatistics |
| - SpecialTags |
| - SpecialTrackingCategories |
| - SpecialUnblock |
| - SpecialUncategorizedCategories |
| - SpecialUncategorizedImages |
| - SpecialUncategorizedPages |
| - SpecialUncategorizedTemplates |
| - SpecialUndelete |
| - SpecialUnlinkAccounts |
| - SpecialUnlockdb |
| - SpecialUnusedCategories |
| - SpecialUnusedImages |
| - SpecialUnusedTemplates |
| - SpecialUnwatchedPages |
| - SpecialUpload |
| - SpecialUploadStash |
| - SpecialUserLogin |
| - SpecialUserLogout |
| - SpecialVersion |
| - SpecialWantedCategories |
| - SpecialWantedTemplates |
| - SpecialWatchlist |
| - SpecialWhatLinksHere |
| - SpecialWithoutInterwiki |
| - MediaWiki\Specials\Redirects: |
| - SpecialAllMyUploads |
| - SpecialListAdmins |
| - SpecialListBots |
| - SpecialMycontributions |
| - SpecialMylog |
| - SpecialMypage |
| - SpecialMytalk |
| - SpecialMyuploads |
| - MediaWiki\SpecialPage: |
| - AuthManagerSpecialPage |
| - ChangesListSpecialPage |
| - DisabledSpecialPage |
| - FormSpecialPage |
| - ImageQueryPage |
| - IncludableSpecialPage |
| - LoginSignupSpecialPage |
| - PageQueryPage |
| - QueryPage |
| - RedirectSpecialArticle |
| - RedirectSpecialPage |
| - SpecialPage |
| - SpecialRedirectToSpecial |
| - SpecialRedirectWithAction |
| - UnlistedSpecialPage |
| - WantedQueryPage |
| - MediaWiki\Status: |
| - Status |
| - MediaWiki\Title: |
| - ForeignTitle |
| - ForeignTitleFactory |
| - ImportTitleFactory |
| - MalformedTitleException |
| - MediaWikiTitleCodec |
| - NaiveForeignTitleFactory |
| - NaiveImportTitleFactory |
| - NamespaceAwareForeignTitleFactory |
| - NamespaceImportTitleFactory |
| - NamespaceInfo |
| - SubpageImportTitleFactory |
| - TitleFormatter |
| - TitleParser |
| - TitleValue |
| - MediaWiki\User: |
| - BotPassword |
| - ExternalUserNames |
| - LoggedOutEditToken |
| - PasswordReset |
| - User |
| - UserArray |
| - UserArrayFromResult |
| - UserGroupMembership |
| - UserRightsProxy |
| - MediaWiki\User\CentralId: |
| - CentralIdLookup |
| - LocalIdLookup |
| - MediaWiki\Utils: |
| - MWTimestamp |
| - GitInfo |
| - ExtensionInfo (previously under MediaWiki\ExtensionInfo) |
| - Wikimedia\Rdbms: |
| - ConfiguredReadOnlyMode |
| - ReadOnlyMode |
| * Various mediawiki.ui variables have been deprecated in favor of |
| 'mediawiki.skin.variables.less' Codex design tokens featuring replacements. |
| * Hook handlers must now be specified either as a PHP callable, or as a PHP |
| object that has a method matching the hook name. Other ways to specify |
| the handler are deprecated and will soon be removed. Deprecated ways to |
| specify a hook handler include callables wrapped in an array. Handlers |
| defined using a "HookHandlers" entry in extension.json are not affected. |
| * TitleArray::newFromResult() has been deprecated and now emits deprecation |
| warnings, use TitleArrayFromResults instead. |
| * The MediaWikiIntegrationTestCase::$users has been deprecated. Use Authority |
| if possible, or call ::getTestUser() or ::getTestSysop() directly. |
| * WebRequest::isSafeRequest() and ::markAsSafeRequest() has been deprecated |
| and now emits deprecation warnings. Use ::hasSafeMethod() instead. |
| * The tests/phpunit/phpunit.php entrypoint has been deprecated. PHPUnit |
| tests should be run with composer, for example with the |
| `composer phpunit:entrypoint` command. |
| * The unnamespace UserNamePrefixSearch class, deprecated in 1.36, now emits |
| deprecation warnings. Use the MediaWiki\User\UserNamePrefixSearch service. |
| * The jquery.cookie ResourceLoader module has been merged into the existing |
| mediawiki.cookie module; jquery.cookie remains but is deprecated. |
| * Passing a database to DatabaseBlockStore::insertBlock() is deprecated. |
| DatabaseBlockStoreFactory should be used to fetch a correct |
| DatabaseBlockStore instead. |
| * The global function wfGetLangObj is deprecated and emits deprecation |
| warnings. Use MediaWiki\Languages\LanguageFactory::getLanguage instead. |
| * The SwiftVirtualRESTService class is deprecated in 1.41 and now emits |
| deprecation warnings. |
| * SqlBagOStuff::expireAll() is deprecated and now emits deprecation warnings, |
| use SqlBagOStuff::deleteObjectsExpiringBefore() instead. |
| * SqlBagOStuff::deleteAll() is deprecated and now emits deprecation warnings. |
| * Passing an actor id to the UserIdentityValue constructor is now emits |
| deprecation warnings, it is deprecated since 1.36. |
| * UserGroupMembership::getGroupName(), deprecated in 1.38, and |
| UserGroupMembership::getGroupMemberName(), deprecated in 1.40, now emit |
| deprecation warnings. |
| * UserGroupMembership::getLink() has been deprecated in favour of |
| ::getLinkHTML() and ::getLinkWiki(). |
| * Linker::formatComment(), ::formatLinksInComment(), ::commentBlock() and |
| ::revComment(), deprecated in 1.38, now emit deprecation warnings. |
| * PageArchive::listRevisions(), ::getRevisionRecordByTimestamp(), |
| ::getArchivedRevisionRecord(), ::getPreviousRevisionRecord(), |
| ::getLastRevisionId() and ::isDeleted(), deprecated in 1.38, |
| now emit deprecation warnings. |
| * SearchResultThumbnail::getSize() has been deprecated to be dropped in the |
| future as it is resource intensive and degrades performance. |
| * The EmailUserPermissionsErrors and UserCanSendEmail hooks have been |
| deprecated in favour of the EmailUserAuthorizeSend hook. |
| * The EmailUser hook has been deprecated in favour of the EmailUserSendEmail |
| hook. |
| * The InterwikiLoadPrefix hook now emits deprecation warnings. Resetting the |
| $wgInterwikiCache setting instead. |
| * SiteConfiguration::getConfig() now emits deprecation warnings, Use ::get() |
| instead. |
| * SiteConfiguration::extractVar() and ::extractGlobal() have been deprecated |
| and also emit deprecation warnings. |
| * JobQueueGroup::waitForBackups() is deprecated. JobQueue::waitForBackups() |
| should be used instead. |
| * Hooks::isRegistered(), ::getHandlers(), ::run() and ::runWithoutAbort(), |
| deprecated in 1.35, now emit deprecation warnings. |
| * VirtualRESTService class and its subclasses now emit deprecation warnings |
| in 1.41 and as a replacement we can use MultiHttpClient. |
| * Calling the MediaWikiServices::getVirtualRESTServiceClient() function |
| which creates the VirtualRESTServiceClient now emits deprecation warnings. |
| * Language::getMessage and Language::getAllMessages are deprecated. Use |
| LocalisationCache or MessageCache as appropriate. |
| * VirtualRESTService class is deprecated in 1.41 and as a replacement |
| we can use MultiHttpClient. |
| * MediaWikiServices::getConfiguredReadOnlyMode() is deprecated. Use |
| ::getReadOnlyMode() instead. ReadOnlyMode::getConfiguredReason() |
| and ::isConfiguredReadOnly() has been added to support that. |
| * UploadBase::isThrottled() has been deprecated and is emitting deprecation |
| warnings. Rate limits are enforced by UploadBase::verifyTitlePermissions(), |
| since rate limit checks are now implicit in permission checks. |
| * JobSpecification::toSerializableArray() now emits deprecation warnings. |
| * The following skin methods were deprecated: |
| - Skin::makeSpecialUrl (use Title or Special class instead) |
| - Skin::makeSpecialUrlSubpage (use Title or Special class instead) |
| * mw.jqueryMsg.parser, deprecated in 1.31, now emits deprecation warnings. |
| * ResourceLoader (T127268): The targets system is deprecated. Modules that |
| have been marked as desktop or mobile only are no longer supported and |
| will send deprecation warnings. |
| * TextSlotDiffRenderer::setLanguage() is deprecated, and calling it will |
| have no effect. Use ContentHandler::getSlotDiffRenderer(), or in subclasses, |
| ContentHandler::createTextSlotDiffRenderer(), to correctly inject |
| dependencies into TextSlotDiffRenderer. |
| * The static methods encodeJsVar() and encodeJsCall() have been moved from the |
| Xml class to the more appropriate MediaWiki\Html\Html one, and the old ones |
| are now deprecated. |
| * Some work to rename classes was done in previous releases, but the renaming |
| was not noted at the time. The old aliases work for now but are deprecated; |
| this is now explicitly noted: |
| From 1.40: |
| - Category -> MediaWiki\Category\Category |
| - CategoriesRdf -> MediaWiki\Category\CategoriesRdf |
| - CategoryViewer -> MediaWiki\Category\CategoryViewer |
| - TrackingCategories -> MediaWiki\Category\TrackingCategories |
| - CommentStore -> MediaWiki\CommentStore\CommentStore |
| - CommentStoreComment -> MediaWiki\CommentStore\CommentStoreComment |
| - EditPage -> MediaWiki\EditPage\EditPage |
| - TemplatesOnThisPageFormatter |
| -> MediaWiki\EditPage\TemplatesOnThisPageFormatter |
| - LinkFilter -> MediaWiki\ExternalLinks\LinkFilter |
| - AtomFeed -> MediaWiki\Feed\AtomFeed |
| - ChannelFeed -> MediaWiki\Feed\ChannelFeed |
| - FeedItem -> MediaWiki\Feed\FeedItem |
| - FeedUtils -> MediaWiki\Feed\FeedUtils |
| - RSSFeed -> MediaWiki\Feed\RSSFeed |
| - Html -> MediaWiki\Html\Html |
| - FormOptions -> MediaWiki\Html\FormOptions |
| - HtmlHelper -> MediaWiki\Html\HtmlHelper |
| - ListToggle -> MediaWiki\Html\ListToggle |
| - TemplateParser -> MediaWiki\Html\TemplateParser |
| - RawMessage -> MediaWiki\Language\RawMessage |
| - FileDeleteForm -> MediaWiki\Page\File\FileDeleteForm |
| - MergeHistory -> MediaWiki\Page\File\MergeHistory |
| - MovePage -> MediaWiki\Page\File\MovePage |
| - ProtectionForm -> MediaWiki\Page\File\ProtectionForm |
| - MediaWiki\BadFileLookup -> MediaWiki\Page\File\BadFileLookup |
| - PageProps -> MediaWiki\Page\PageProps |
| - MagicWord -> MediaWiki\Parser\MagicWord |
| - MagicWordArray -> MediaWiki\Parser\MagicWordArray |
| - MagicWordFactory -> MediaWiki\Parser\MagicWordFactory |
| - Linker -> MediaWiki\Linker\Linker |
| - DummyLinker -> MediaWiki\Linker\DummyLinker |
| - ForkController -> MediaWiki\Maintenance\ForkController |
| - OrderedStreamingForkController |
| -> MediaWiki\Maintenance\OrderedStreamingForkController |
| - ContentSecurityPolicy -> MediaWiki\Request\ContentSecurityPolicy |
| - DerivativeRequest -> MediaWiki\Request\DerivativeRequest |
| - FauxRequest -> MediaWiki\Request\FauxRequest |
| - FauxRequestUpload -> MediaWiki\Request\FauxRequestUpload |
| - PathRouter -> MediaWiki\Request\PathRouter |
| - WebRequestUpload -> MediaWiki\Request\WebRequestUpload |
| - FauxResponse -> MediaWiki\Request\FauxResponse |
| - WebResponse -> MediaWiki\Request\WebResponse |
| - MediaWiki\HeaderCallback -> MediaWiki\Request\HeaderCallback |
| - StubObject -> MediaWiki\StubObject\StubObject |
| - DeprecatedGlobal -> MediaWiki\StubObject\DeprecatedGlobal |
| - StubGlobalUser -> MediaWiki\StubObject\StubGlobalUser |
| - StubUserLang -> MediaWiki\StubObject\StubUserLang |
| - Title -> MediaWiki\Title\Title |
| - TitleArray -> MediaWiki\Title\TitleArray |
| - TitleArrayFromResult -> MediaWiki\Title\TitleArrayFromResult |
| - TitleFactory -> MediaWiki\Title\TitleFactory |
| - ActorMigration -> MediaWiki\User\ActorMigration |
| - ActorMigrationBase -> MediaWiki\User\ActorMigrationBase |
| - WikiMap -> MediaWiki\WikiMap\WikiMap |
| - WikiReference -> MediaWiki\WikiMap\WikiReference |
| From 1.39: |
| - ResourceLoader -> MediaWiki\ResourceLoader\ResourceLoader |
| From 1.29: |
| - IMaintainableDatabase -> Wikimedia\Rdbms\IMaintainableDatabase |
| * The WebRequest::getRequestId() and WebRequest::overrideRequestId() are |
| deprecated. Use methods from MediaWiki\Http\Telemetry class instead. |
| * The XmlJsCode wrapper class has been renamed to MediaWiki\Html\HtmlJsCode, |
| and the old name is now deprecated. |
| * The use of non-serializable arguments to ParserOutput::addWarningMsg() has |
| been deprecated and will emit deprecation warnings. |
| * Class UserRightsProxy, deprecated since 1.38, now emits |
| deprecation warnings from its factory functions. |
| * MediaWiki\ResourceLoader\Module::getDeprecationInformation() is deprecated. |
| Use ::getDeprecationWarning() instead. |
| * Passing a Message to OutputPage::setPageTitle() is deprecated. |
| Use ::setPageTitleMsg() instead (which escapes HTML metacharacters). |
| * Passing arguments to OutputPage::prepareErrorPage() is deprecated. |
| Use explicit calls to OutputPage::setPageTitleMsg() and ::setHTMLTitle() |
| instead. |
| * Returning a string from Action::getPageTitle() is deprecated; |
| return a Message instead, which will be formatted using FORMAT_ESCAPED. |
| * Returning a string from SpecialPage::getDescription() is deprecated; |
| return a Message instead, which will be formatted using FORMAT_ESCAPED. |
| * MediaWiki\Block\AbstractBlock::getReason(), deprecated since 1.35, now emits |
| deprecation warnings. Use ::getReasonComment() instead. |
| * User::getGroups(), ::addGroup(), ::removeGroup(), ::getGroupMemberships(), |
| ::getAllGroups(), ::getImplicitGroups(), deprecated since 1.35, now emit |
| deprecation warnings. |
| * The global function wfReportTime(), deprecated since 1.40, now emits |
| deprecation warnings. The SkinTemplate parameter 'reporttime' is deprecated. |
| * RevisionStore::getQueryInfo() and RevisionFactory::getQueryInfo() have been |
| deprecated. Use ::newSelectQueryBuilder() instead. |
| * Following methods in rdbms library have been made internal: |
| - IDatabase::getLBInfo() |
| - IDatabase::setLBInfo() |
| - IDatabase::insert() Use InsertQueryBuilder instead. |
| - IDatabase::update() Use UpdateQueryBuilder instead. |
| - IDatabase::replace() Use ReplaceQueryBuilder instead. |
| - IDatabase::upsert() Use InsertQueryBuilder instead. |
| - IDatabase::delete() Use DeleteQueryBuilder instead. |
| - IReadableDatabase::selectField() Use SelectQueryBuilder instead. |
| - IReadableDatabase::selectFieldValues() Use SelectQueryBuilder instead. |
| - IReadableDatabase::select() Use SelectQueryBuilder instead. |
| - IReadableDatabase::selectRow() Use SelectQueryBuilder instead. |
| - IReadableDatabase::estimateRowCount() Use SelectQueryBuilder instead. |
| - IReadableDatabase::selectRowCount() Use SelectQueryBuilder instead. |
| - ISQLPlatform::unionQueries() Use UnionQueryBuilder instead. |
| * The core Wikimedia\Rdbms\DatabaseMysqlBase class has been renamed to reflect |
| the earlier merger of Mysqli into it; it's now Wikimedia\Rdbms\DatabaseMySQL. |
| * The following methods in SpecialEmailUser have been deprecated: |
| - SpecialEmailUser::validateTarget(), use EmailUser::validateTarget() |
| - SpecialEmailUser::getPermissionsError(), use EmailUser::canSend() or |
| EmailUser::authorizeSend() |
| - SpecialEmailUser::submit(), use EmailUser::sendEmailUnsafe() |
| * User::isBlockedFromEmailuser() has been deprecated. EmailUser::canSend() |
| checks blocks amongst other things. If you only need this check, use |
| User::getBlock()->appliesToRight( 'sendemail' ). |
| * User::canSendEmail() has been deprecated. Use EmailUser::canSend() instead. |
| * The following methods, previously deprecated, now emit deprecation warnings: |
| - ConfigFactory::getDefaultInstance(), deprecated since 1.27 |
| - AbstractContent::getNativeData(), deprecated since 1.33 |
| - TablePager::getBody(), deprecated since 1.24 |
| - ContentHandler::getSlotDiffRendererInternal(), deprecated since 1.35 |
| - ParserOutput::getCategories(), deprecated since 1.40 |
| - PasswordFactory::init(), deprecated since 1.32 |
| * WikitextContent::getRedirectTargetAndText has been deprecated, use |
| WikitextContentHandler::extractRedirectTargetAndText instead. |
| * WikiPage::doDeleteArticleBatched, deprecated in 1.37, now emits deprecation |
| warnings. |
| * WikiPage::getPageIsRedirectField() is now deprecated. |
| * WikiPage::insertRedirect() is now deprecated. |
| * Parser::getFreshParser(), deprecated since 1.39, now emits deprecation |
| warnings. |
| * The legacy MediaWiki UI ResourceLoader modules, such as `mediawiki.ui`, are |
| all now emitting deprecation warnings in the JavaScript console. Please use |
| Codex CSS components instead. |
| * Article::getRedirectHeaderHtml() has been deprecated and emits deprecation |
| warnings, use LinkRenderer::makeRedirectHeader() instead. |
| * SpecialBlock::getTargetAndType(), deprecated since 1.36, now emits deprecation |
| warnings. |
| * ApiBase::checkTitleUserPermissions() now type-forces a PageIdentity instead of |
| a LinkTarget. Passing a LinkTarget has been deprecated since 1.36. |
| * Passing a User to ApiBase::checkUserRightsAny() in the second parameter, which |
| was deprecated in 1.36, is no longer read. Instead, it will use the request |
| context's set Authority via IContextSource::getAuthority(). |
| * Sanitizer::escapeIdReferenceList(), deprecated since 1.36, has been dropped. |
| * RecentChange::getPerformer(), deprecated since 1.36, has been dropped. |
| * SpecialPage::getLanguageConverter(), deprecated since 1.36, has been dropped. |
| Use LanguageConverterFactory::getLanguageConverter() directly. |
| * SpecialBlock::checkUnblockSelf(), deprecated since 1.36, has been dropped. Use |
| BlockPermissionChecker instead. |
| * DifferenceEngine::localiseLineNumbers() has been deprecated in favor of |
| BaseTextDiffer::localizeLineNumbers(). Subclasses such as PhpTextDiffer may |
| make this available via a ::localize() method. |
| * ChangeTags::modifyDisplayQuery() and ChangeTagsStore::modifyDisplayQuery() |
| have been deprecated in favor of ChangeTagsStore::modifyDisplayQueryBuilder() |
| * Calling SpecialRandomPage::__construct without services as parameters is |
| deprecated and emit deprecation warnings. |
| |
| === Other changes in 1.41 === |
| * ExternalLinksLookup::getExternalLinksForPage() now exists to centralize |
| logic of looking up externallinks rows. |
| * The update script no longer accepts the --skip-compat-checks option. |
| * Use of the deprecated "Pragma: no-cache" HTTP response header on uncachable |
| responses has been removed in favour of "Cache-Control: no-cache" (T345420). |
| * Type hints were added to: |
| - The return value of WebRequest:: and DerivativeRequest::getSession() |
| - The return value of WebRequest:: and DerivativeRequest::getIP() |
| - The return value of User::getTitleKey() |
| - The return value of User::getRequest() |
| - The `$key` parameter to Skin::normalizeKey() |
| None of the methods whose return value was updated belongs to a class |
| stable to extend, and adding type hints to parameters is backwards |
| compatible. Therefore, this is not considered a breaking change. |
| * The mergeMessageFileList script now only works for extensions and skins |
| supporting extension registration (using extension.json or skin.json). |
| It will no longer attempt to load PHP entry points. |
| * Parser will no longer fall back to $wgTitle if a null is provided as a |
| Title or PageReference. To change the relevant title used for methods |
| that do not offer an option to set the page, call Parser::setPage. |
| This affects the methods cleanSig, getSection and replaceSection. |
| * (T347726, CVE-2023-51704) SECURITY: logging: Fix non-escaped messages |
| used in rights log. |
| |
| == Compatibility == |
| |
| MediaWiki 1.41 requires PHP 7.4.3 or later and the following PHP extensions: |
| |
| * ctype |
| * dom |
| * fileinfo |
| * iconv |
| * intl |
| * json |
| * mbstring |
| * xml |
| |
| MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can |
| be used instead, but support for them is somewhat less mature. |
| |
| The supported versions are: |
| |
| * MariaDB 10.3 or higher |
| * MySQL 5.7.0 or higher |
| * PostgreSQL 10 or later |
| * SQLite 3.8.0 or later |
| |
| == Online documentation == |
| Documentation for both end-users and site administrators is available on |
| MediaWiki.org, and is covered under the GNU Free Documentation License (except |
| for pages that explicitly state that their contents are in the public domain): |
| |
| https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation |
| |
| == Mailing list == |
| A mailing list is available for MediaWiki user support and discussion: |
| |
| https://lists.wikimedia.org/mailman/listinfo/mediawiki-l |
| |
| A low-traffic announcements-only list is also available: |
| |
| https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce |
| |
| It's highly recommended that you sign up for one of these lists if you're |
| going to run a public MediaWiki, so you can be notified of security fixes. |
| |
| == IRC help == |
| There's usually someone online in #mediawiki on irc.libera.chat. |