2021-04-06 20:49:22 +00:00
|
|
|
|
= MediaWiki 1.37 =
|
|
|
|
|
|
|
|
|
|
|
|
== MediaWiki 1.37.0-PRERELEASE ==
|
|
|
|
|
|
|
|
|
|
|
|
THIS IS NOT A RELEASE YET
|
|
|
|
|
|
|
|
|
|
|
|
MediaWiki 1.37 is an alpha-quality development branch, and is not recommended
|
|
|
|
|
|
for use in production.
|
|
|
|
|
|
|
|
|
|
|
|
== Upgrading notes for 1.37 ==
|
|
|
|
|
|
Don't forget to always back up your database before upgrading!
|
|
|
|
|
|
|
2021-04-06 23:25:35 +00:00
|
|
|
|
See the file UPGRADE for more detailed per-version upgrade instructions from the
|
|
|
|
|
|
oldest supported upgrading version, MediaWiki 1.27.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
|
|
|
|
|
|
Some specific notes for MediaWiki 1.37 upgrades are below:
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
For notes on 1.36.x and older releases, see HISTORY.
|
|
|
|
|
|
|
|
|
|
|
|
=== Configuration changes for system administrators in 1.37 ===
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
==== New configuration ====
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
==== Changed configuration ====
|
2021-05-15 16:59:36 +00:00
|
|
|
|
* $wgContentHandlerTextFallback - This setting, which defines how to
|
|
|
|
|
|
react if a plain text version of a non-text Content object is
|
|
|
|
|
|
requested using ContentHandler::getContentText(), is deprecated.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
==== Removed configuration ====
|
2021-04-13 06:34:50 +00:00
|
|
|
|
* $wgLegacyJavaScriptGlobals was deprecated in 1.36.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
|
|
|
|
|
|
=== New user-facing features in 1.37 ===
|
2021-03-14 01:07:51 +00:00
|
|
|
|
* (T161934) MediaWiki now supports JPEG2000 files, to a limited extent.
|
2021-04-17 19:38:23 +00:00
|
|
|
|
* Media files uploaded server side using the importImages.php maintenance
|
|
|
|
|
|
script now have the "mw-server-side-upload" change tag.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
=== New developer features in 1.37 ===
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
=== External library changes in 1.37 ===
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
==== New external libraries ====
|
2021-04-15 11:56:41 +00:00
|
|
|
|
* Added whatwg-fetch 3.6.2.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
===== New development-only external libraries =====
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
==== Changed external libraries ====
|
2021-04-24 02:33:12 +00:00
|
|
|
|
* Updated OOjs from v5.0.0 to v6.0.0
|
2021-06-02 05:01:30 +00:00
|
|
|
|
* Updated WVUI from v0.1.0 to v0.2.0
|
2021-04-25 18:41:41 +00:00
|
|
|
|
* Updated psr/container from v1.0.0 to v1.1.1.
|
2021-06-07 19:11:35 +00:00
|
|
|
|
* Updated wikimedia/minify from v2.2.2 to v2.2.3.
|
2021-04-25 18:41:41 +00:00
|
|
|
|
* Updated wikimedia/object-factory from v3.0.0 to v3.0.2.
|
2021-04-26 17:16:32 +00:00
|
|
|
|
* Updated wikimedia/parsoid from v0.13.0-a20 to v0.14.0-a1.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
===== Changed development-only external libraries =====
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
==== Removed external libraries ====
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
=== Bug fixes in 1.37 ===
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
=== Action API changes in 1.37 ===
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
=== Action API internal changes in 1.37 ===
|
|
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
=== Languages updated in 1.37 ===
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
2021-04-17 07:29:24 +00:00
|
|
|
|
* (T280435) LRM and RLM characters were removed from names of languages with
|
|
|
|
|
|
parentheses in Names.php
|
2021-05-22 16:20:58 +00:00
|
|
|
|
* (T283422) Add namespace name translations and change the autonym of
|
|
|
|
|
|
the Kinyarwanda language to "Ikinyarwanda".
|
2021-05-30 08:10:28 +00:00
|
|
|
|
* (T283423) Change the autonym of the Lombard language from "lumbaart"
|
|
|
|
|
|
to "lombard".
|
2021-04-08 08:52:21 +00:00
|
|
|
|
* (T279619) Added language support for Dagbani (dag).
|
2021-05-05 15:07:28 +00:00
|
|
|
|
* (T282085) Added language support for Malay in Arabic (Jawi) script (ms-arab).
|
2021-05-18 11:08:56 +00:00
|
|
|
|
* (T283053) Added language support for Ojibwe (ojb).
|
2021-05-24 09:10:08 +00:00
|
|
|
|
* (T283480) Added language support for Wallisian (wls, Fakaʻuvea).
|
2021-05-28 12:10:47 +00:00
|
|
|
|
* (T284002) Added language support for Paiwan (pwn).
|
2021-06-01 08:31:35 +00:00
|
|
|
|
* (T284044) Added language support for Carpathian Romani (rmc).
|
2021-04-06 20:49:22 +00:00
|
|
|
|
|
|
|
|
|
|
=== Breaking changes in 1.37 ===
|
2021-04-11 20:49:08 +00:00
|
|
|
|
* The Revision class, hard deprecated in 1.35, is being removed. As
|
|
|
|
|
|
part of this, the following hooks that included a Revision object
|
|
|
|
|
|
were removed:
|
|
|
|
|
|
- ArticleRevisionUndeleted - use RevisionUndeleted
|
|
|
|
|
|
- ArticleRollbackComplete - use RollbackComplete
|
|
|
|
|
|
- DiffRevisionTools - use DiffTools
|
|
|
|
|
|
- DiffViewHeader - use DifferenceEngineViewHeader
|
|
|
|
|
|
- HistoryRevisionTools - use HistoryTools
|
|
|
|
|
|
- NewRevisionFromEditComplete - use RevisionFromEditComplete
|
|
|
|
|
|
- PageContentInsertComplete - use PageSaveComplete
|
|
|
|
|
|
- PageContentSaveComplete - use PageSaveComplete
|
|
|
|
|
|
- ParserFetchTemplate - use BeforeParserFetchTemplateRevisionRecord
|
|
|
|
|
|
- RevisionInsertComplete - use RevisionRecordInserted
|
|
|
|
|
|
- TitleMoveComplete - use PageMoveComplete
|
|
|
|
|
|
- TitleMoveCompleting - use PageMoveCompleting
|
|
|
|
|
|
- UndeleteShowRevision - no replacement
|
2021-04-30 23:25:07 +00:00
|
|
|
|
- UserRetrieveNewTalks - no replacement
|
2021-04-21 04:35:50 +00:00
|
|
|
|
and the following methods and variables have been removed
|
|
|
|
|
|
- Article::$mRevision
|
|
|
|
|
|
- Article::getRevisionFetched()
|
|
|
|
|
|
- ContribsPager::tryToCreateValidRevision()
|
|
|
|
|
|
- EditPage::$mBaseRevision
|
|
|
|
|
|
- EditPage::getBaseRevision()
|
|
|
|
|
|
- LinksUpdate::getRevision()
|
|
|
|
|
|
- LinksUpdate::setRevision()
|
2021-05-02 02:44:33 +00:00
|
|
|
|
- PageArchive::getArchivedRevision()
|
2021-04-21 06:59:29 +00:00
|
|
|
|
- PageArchive::getPreviousRevision
|
2021-05-02 02:44:33 +00:00
|
|
|
|
- PageArchive::getRevision()
|
|
|
|
|
|
- Title::countAuthorsBetween()
|
2021-04-21 04:35:50 +00:00
|
|
|
|
- Title::getFirstRevision()
|
2021-04-30 23:25:07 +00:00
|
|
|
|
- User::getNewMessageLinks()
|
|
|
|
|
|
- User::getNewMessageRevisionId()
|
|
|
|
|
|
- User::setNewtalk()
|
2021-04-21 04:35:50 +00:00
|
|
|
|
- WikiPage::getOldestRevision()
|
|
|
|
|
|
- WikiPage::getRevision()
|
2021-04-21 19:33:04 +00:00
|
|
|
|
- WikiPage::getUndoContent()
|
|
|
|
|
|
- WikiPage::updateIfNewerOn()
|
2021-04-21 15:43:13 +00:00
|
|
|
|
and the following methods no longer accept Revision objects as parameters:
|
2021-05-02 02:44:33 +00:00
|
|
|
|
- CategoryMembershipChange::__construct
|
|
|
|
|
|
- ContentHandler::getUndoContent
|
|
|
|
|
|
- DerivedPageDataUpdater::prepareUpdate
|
|
|
|
|
|
- DifferenceEngine::getRevisionHeader
|
2021-04-21 15:43:13 +00:00
|
|
|
|
- Linker::buildRollbackLink
|
|
|
|
|
|
- Linker::generateRollback
|
|
|
|
|
|
- Linker::getRevDeleteLink
|
|
|
|
|
|
- Linker::getRollbackEditCount
|
|
|
|
|
|
- Linker::revComment
|
|
|
|
|
|
- Linker::revUserLink
|
|
|
|
|
|
- Linker::revUserTools
|
2021-04-21 19:33:04 +00:00
|
|
|
|
- WikiPage::doDeleteUpdates
|
|
|
|
|
|
- WikiPage::doEditUpdates
|
|
|
|
|
|
- WikiPage::hasDifferencesOutsideMainSlot
|
|
|
|
|
|
- WikiPage::onArticleEdit
|
|
|
|
|
|
- WikiPage::prepareContentForEdit
|
|
|
|
|
|
- WikiPage::updateRevisionOn
|
2021-05-02 02:44:33 +00:00
|
|
|
|
The following methods return arrays that formerly included a 'revision'
|
|
|
|
|
|
key that would emit deprecation warnings when accessed and return a
|
|
|
|
|
|
Revision object. The Revision object has been removed from the arrays,
|
|
|
|
|
|
and the 'revision-record' key should be used to get the relevant
|
|
|
|
|
|
RevisionRecord instead:
|
|
|
|
|
|
- PageUpdater::doCreate
|
|
|
|
|
|
- PageUpdater::doModify
|
|
|
|
|
|
- Parser::statelessFetchTemplate
|
|
|
|
|
|
The ParserOptions `templateCallback` option is a callback that is called
|
|
|
|
|
|
in Parser::fetchTemplateAndTitle() and should return an array - the
|
|
|
|
|
|
'revision' key to that array used to be a Revision object and was used if
|
|
|
|
|
|
no 'revision-record' was returned - it is now ignored.
|
2021-04-07 02:04:24 +00:00
|
|
|
|
* WANObjectCache::HOLDOFF_NONE, deprecated since 1.35, was removed.
|
|
|
|
|
|
Use HOLDOFF_TTL_NONE instead.
|
2021-04-11 20:05:46 +00:00
|
|
|
|
* The following methods and fields in the Language class, deprecated since
|
|
|
|
|
|
1.35, have been removed:
|
|
|
|
|
|
- classFromCode()
|
|
|
|
|
|
- clearCaches()
|
|
|
|
|
|
- convertTitle()
|
|
|
|
|
|
- findVariantLink()
|
|
|
|
|
|
- mConverter
|
|
|
|
|
|
- updateConversionTable()
|
2021-04-25 17:29:33 +00:00
|
|
|
|
* The following methods in the Parser class have been removed after having
|
|
|
|
|
|
been deprecated in 1.35:
|
|
|
|
|
|
- fetchCurrentRevisionOfTitle()
|
|
|
|
|
|
- statelessFetchRevision()
|
|
|
|
|
|
- fetchTemplate()
|
|
|
|
|
|
- Title()
|
2021-02-17 04:11:46 +00:00
|
|
|
|
* (T273354) When an edit is prevented by an 'EditFilterMergedContent' hook
|
|
|
|
|
|
handler without changing the status, the edit form will now be displayed.
|
2021-04-08 19:34:40 +00:00
|
|
|
|
* User::clearNotification() which had been deprecated in 1.35 has been removed.
|
|
|
|
|
|
Use WatchlistManager::clearTitleUserNotification() instead.
|
2021-04-30 23:25:07 +00:00
|
|
|
|
* User::getNewtalk() which had been deprecated in 1.35 has been removed. Use
|
|
|
|
|
|
TalkPageNotificationManager::userHasNewMessages() instead.
|
2021-04-19 04:07:09 +00:00
|
|
|
|
* Autopromote class, deprecated since 1.35, was removed. Use
|
|
|
|
|
|
UserGroupManager instead.
|
2021-04-20 11:41:54 +00:00
|
|
|
|
* The following classes, hard-deprecated since 1.36, have been removed:
|
|
|
|
|
|
CachedAction, SpecialCachedPage, CacheHelper, ICacheHelper.
|
2021-03-28 16:19:05 +00:00
|
|
|
|
* The hooks BeforeHttpsRedirect, CanIPUseHTTPS and UserRequiresHTTPS, deprecated
|
|
|
|
|
|
in 1.35, were removed.
|
2021-06-02 13:46:17 +00:00
|
|
|
|
* The TitleArrayFromResult hook, deprecated in 1.36, was removed.
|
2021-04-21 02:15:03 +00:00
|
|
|
|
* The deprecated "es6-promise" alias ResourceLoader module has been removed. Use
|
|
|
|
|
|
"es6-polyfills" directly intead.
|
2021-04-16 13:17:10 +00:00
|
|
|
|
* AuthenticationProvider interface doesn't extend LoggerAwareInterface.
|
|
|
|
|
|
So AuthenticationProvider can't be typehinted as LoggerAwareInterface.
|
2021-04-06 03:09:28 +00:00
|
|
|
|
* The following methods, deprecated in 1.35, were removed:
|
|
|
|
|
|
- Parser::fetchCurrentRevisionOfTitle
|
|
|
|
|
|
- Parser::statelessFetchRevision
|
|
|
|
|
|
- Parser::getRevisionObject
|
|
|
|
|
|
- ParserOptions::getCurrentRevisionCallback
|
|
|
|
|
|
- ParserOptions::setCurrentRevisionCallback
|
2021-05-01 09:21:33 +00:00
|
|
|
|
* User::getGrantName(), hard deprecated since 1.36, has been removed.
|
|
|
|
|
|
Use MWGrants::grantName instead.
|
2021-04-29 20:44:45 +00:00
|
|
|
|
* SessionProvider class doesn't extend LoggerAwareInterface.
|
|
|
|
|
|
So SessionProvider can't be typehinted as LoggerAwareInterface.
|
2021-05-09 01:58:32 +00:00
|
|
|
|
* The following ApiBase methods, deprecated since 1.35, have been removed:
|
|
|
|
|
|
- ApiBase::explodeMultiValue
|
|
|
|
|
|
- ApiBase::parseMultiValue
|
|
|
|
|
|
- ApiBase::validateLimit
|
|
|
|
|
|
- ApiBase::validateTimestamp
|
2021-04-06 20:53:56 +00:00
|
|
|
|
* User::idCacheByName public static field was removed without deprecation.
|
|
|
|
|
|
instead of using it, get a UserIdentity by name from UserIdentityLookup.
|
2021-05-05 15:03:21 +00:00
|
|
|
|
* IDatabase::upsert() and IDatabase::replace() only accept a single unique key.
|
|
|
|
|
|
Previously, a warning was issued if there were multiple unique keys provided.
|
2021-05-08 18:39:28 +00:00
|
|
|
|
* The MediaWiki:Autoblock_whitelist block exemption control was moved in 1.36 to
|
|
|
|
|
|
MediaWiki:Block-autoblock-exemptionlist. The backward-compatibility of reading
|
|
|
|
|
|
the old MediaWiki:Autoblock_whitelist page has now been dropped.
|
2021-04-05 19:43:12 +00:00
|
|
|
|
* The following overridable methods in File hierarchy has changed signatures:
|
|
|
|
|
|
- File::deleteFile - now accepts UserIdentity instead of User
|
|
|
|
|
|
- File::getDescription - now accepts Authority instead of User
|
|
|
|
|
|
- File::userCan - now accepts Authority instead of User
|
|
|
|
|
|
- LocalFile::deleteOldFile - now accepts UserIdentity instead of User
|
2021-05-10 22:03:58 +00:00
|
|
|
|
* The following global methods, each deprecated since 1.36, have been removed:
|
|
|
|
|
|
- wfAppendToArrayIfNotDefault
|
|
|
|
|
|
- wfAcceptToPrefs
|
2021-05-10 22:07:17 +00:00
|
|
|
|
- wfConfiguredReadOnlyReason
|
2021-05-10 22:05:45 +00:00
|
|
|
|
- wfDebugMem
|
2021-05-10 22:08:40 +00:00
|
|
|
|
- wfGetPrecompiledData
|
2021-05-10 22:09:49 +00:00
|
|
|
|
- wfNegotiateType
|
2021-05-03 20:44:39 +00:00
|
|
|
|
* The following deprecated methods of Title class have been removed:
|
|
|
|
|
|
- nameOf, deprecated in 1.36
|
|
|
|
|
|
- getPreviousRevisionID, deprecated in 1.34
|
|
|
|
|
|
- getNextRevisionID, deprecated in 1.34
|
|
|
|
|
|
- getEarliestRevTime, deprecated in 1.35
|
2021-05-15 14:04:48 +00:00
|
|
|
|
* UploadBase::stashFile, deprecated since 1.28, was removed.
|
2021-05-16 16:44:38 +00:00
|
|
|
|
* wfGetRusage(), deprecated since 1.35, has been removed.
|
2021-03-17 18:19:25 +00:00
|
|
|
|
* The following CLI options were removed from tests/phpunit.php:
|
|
|
|
|
|
- use-filebackend
|
|
|
|
|
|
- use-jobqueue
|
|
|
|
|
|
- use-bagostuff
|
|
|
|
|
|
The following options (inherited from Maintenance) were also removed:
|
|
|
|
|
|
- conf
|
|
|
|
|
|
- dbuser
|
|
|
|
|
|
- dbpass
|
|
|
|
|
|
- dbdefaultgroup
|
|
|
|
|
|
- globals
|
|
|
|
|
|
- memory-limit
|
|
|
|
|
|
- profiler
|
|
|
|
|
|
- server
|
|
|
|
|
|
The following options were changed to environment variables:
|
|
|
|
|
|
- wiki => PHPUNIT_WIKI
|
|
|
|
|
|
- use-normal-tables => PHPUNIT_USE_NORMAL_TABLES
|
|
|
|
|
|
- use-filebackend => PHPUNIT_USE_FILEBACKEND
|
|
|
|
|
|
- use-bagostuff => PHPUNIT_USE_BAGOSTUFF
|
|
|
|
|
|
- use-jobqueue => PHPUNIT_USE_JOBQUEUE
|
|
|
|
|
|
This is so that we can use the default PHPUnit entry point (T90875).
|
2021-05-19 09:23:29 +00:00
|
|
|
|
* The PHPUNIT_REUSE_DB / --reuse-db option was removed from the phpunit.php
|
|
|
|
|
|
runner. It had been broken for at least three years already. The original use
|
|
|
|
|
|
case was speeding up tests on Oracle, but Oracle support was dropped several
|
|
|
|
|
|
releases ago.
|
2021-05-25 22:53:12 +00:00
|
|
|
|
* DatabaseBlock::chooseBlock, deprecated since 1.35, was removed.
|
2021-05-26 20:44:58 +00:00
|
|
|
|
* SpecialPageFactory::getRestrictedPages, deprecated since 1.36, was removed.
|
2021-05-30 16:16:23 +00:00
|
|
|
|
* SpecialBlock::validateTarget, deprecated since 1.36, was removed.
|
2021-05-29 04:35:08 +00:00
|
|
|
|
* The PatchFileLocation trait was removed without deprecation.
|
2021-06-04 14:53:32 +00:00
|
|
|
|
* ActorMigrationBase::getExistingActorId and ::getNewActorId, hard deprecated
|
|
|
|
|
|
since 1.36, were removed.
|
Use the unserialized form of image metadata internally
Image metadata is usually a serialized string representing an array.
Passing the string around internally and having everything unserialize
it is an awkward convention.
Also, many image handlers were reading the file twice: once for
getMetadata() and again for getImageSize(). Often getMetadata()
would actually read the width and height and then throw it away.
So, in filerepo:
* Add File::getMetadataItem(), which promises to allow partial
loading of metadata per my proposal on T275268 in a future commit.
* Add File::getMetadataArray(), which returns the unserialized array.
Some file handlers were returning non-serializable strings from
getMetadata(), so I gave them a legacy array form ['_error' => ...]
* Changed MWFileProps to return the array form of metadata.
* Deprecate the weird File::getImageSize(). It was apparently not
called by anything, but was overridden by UnregisteredLocalFile.
* Wrap serialize/unserialize with File::getMetadataForDb() and
File::loadMetadataFromDb() in preparation for T275268.
In MediaHandler:
* Merged MediaHandler::getImageSize() and MediaHandler::getMetadata()
into getSizeAndMetadata(). Deprecated the old methods.
* Instead of isMetadataValid() we now have isFileMetadataValid(), which
only gets a File object, so it can decide what data it needs to load.
* Simplified getPageDimensions() by having it return false for non-paged
media. It was not called in that case, but was implemented anyway.
In specific handlers:
* Rename DjVuHandler::getUnserializedMetadata() and
extractTreesFromMetadata() for clarity. "Metadata" in these function
names meant an XML string.
* Updated DjVuImage::getImageSize() to provide image sizes in the new
style.
* In ExifBitmapHandler, getRotationForExif() now takes just the
Orientation tag, rather than a serialized string. Also renamed for
clarity.
* In GIFMetadataExtractor, return the width, height and bits per channel
instead of throwing them away. There was some conflation in
decodeBPP() which I picked apart. Refer to GIF89a section 18.
* In JpegMetadataExtractor, process the SOF0/SOF2 segment to extract
bits per channel, width, height and components (channel count). This
is essentially a port of PHP's getimagesize(), so should be bugwards
compatible.
* In PNGMetadataExtractor, return the width and height, which were
previously assigned to unused local variables. I verified the
implementation by referring to the specification.
* In SvgHandler, retain the version validation from unpackMetadata(),
but rename the function since it now takes an array as input.
In tests:
* In ExifBitmapTest, refactored some tests by using a provider.
* In GIFHandlerTest and PNGHandlerTest, I removed the tests in which
getMetadata() returns null, since it doesn't make sense when ported to
getMetadataArray(). I added tests for empty arrays instead.
* In tests, I retained serialization of input data since I figure it's
useful to confirm that existing database rows will continue to be read
correctly. I removed serialization of expected values, replacing them
with plain data.
* In tests, I replaced access to private class constants like
BROKEN_FILE with string literals, since stability is essential. If
the class constant changes, the test should fail.
Elsewhere:
* In maintenance/refreshImageMetadata.php, I removed the check for
shrinking image metadata, since it's not easy to implement and is
not future compatible. Image metadata is expected to shrink in
future.
Bug: T275268
Change-Id: I039785d5b6439d71dcc21dcb972177dba5c3a67d
2021-05-19 00:24:32 +00:00
|
|
|
|
* The protected property LocalFile::$metadata was removed without deprecation.
|
2021-05-15 14:04:48 +00:00
|
|
|
|
* …
|
2021-04-06 20:49:22 +00:00
|
|
|
|
|
|
|
|
|
|
=== Deprecations in 1.37 ===
|
2021-04-01 20:55:37 +00:00
|
|
|
|
* JobQueue::getWiki, deprecated in 1.33, now emits deprecation warnings.
|
2021-04-16 12:55:24 +00:00
|
|
|
|
* In AbstractBlock, the getTargetAndType() and getTarget() methods are
|
|
|
|
|
|
deprecated. Instead use getTargetName() and getTargetUserIdentity() together
|
|
|
|
|
|
with getType().
|
2021-03-26 22:24:43 +00:00
|
|
|
|
* Deprecated passing UserIdentity to
|
|
|
|
|
|
WatchlistManager::clearAllUserNotifications() and
|
|
|
|
|
|
WatchlistManager::clearTitleUserNotifications(). Pass Authority instead.
|
|
|
|
|
|
* Deprecated passing LinkTarget to
|
|
|
|
|
|
WatchlistManager::clearTitleUserNotifications() and
|
|
|
|
|
|
WatchlistManager::getTitleNotificationTimestamp(). Pass PageIdentity instead.
|
2021-03-26 22:24:43 +00:00
|
|
|
|
* Deprecated User::isWatched(), User::isTempWatched(), User::addWatch(), and
|
|
|
|
|
|
User::removeWatch(). Use corresponding methods in WatchlistManager instead.
|
2021-04-13 03:28:23 +00:00
|
|
|
|
* Deprecated WatchAction::doWatchOrUnwatch(). Use WatchlistManager::setWatch()
|
|
|
|
|
|
instead.
|
|
|
|
|
|
* Deprecated WatchAction::doWatch() and WatchAction::doUnwatch(). Use
|
2021-04-19 17:35:35 +00:00
|
|
|
|
WatchlistManager::addWatch() or WatchlistManager::removeWatch(), instead.
|
2021-04-25 17:29:33 +00:00
|
|
|
|
* The getTitle() and setTitle() methods in Parser have been deprecated.
|
|
|
|
|
|
Use getPage() and setPage() instead.
|
2021-04-08 19:34:40 +00:00
|
|
|
|
* Title::isWatchable() has been deprecated. Use WatchlistManager::isWatchable()
|
|
|
|
|
|
instead.
|
2021-04-11 15:55:02 +00:00
|
|
|
|
* wfIncrStats(), deprecated in 1.36, now emits deprecation warnings.
|
2021-03-28 16:19:05 +00:00
|
|
|
|
* wfCanIPUseHTTPS() is now deprecated, and always returns true.
|
2021-05-01 01:28:36 +00:00
|
|
|
|
* The UserLoadFromDatabase hook has been deprecated. It had no known uses.
|
2021-04-16 13:17:10 +00:00
|
|
|
|
* AbstractAuthenticationProvider ::setLogger(), ::setManager(), ::setConfig(),
|
|
|
|
|
|
::setHookContainer() were soft deprecated. Use ::init() to inject
|
|
|
|
|
|
dependencies or override ::postInitSetup() to do any custom
|
|
|
|
|
|
post-initialization configuration.
|
2021-04-30 14:41:54 +00:00
|
|
|
|
* The following methods in ApiPageSet have been deprecated:
|
|
|
|
|
|
- getTitles(), use getTargets() instead.
|
|
|
|
|
|
- getGoodTitles(), use getGoodPages() instead.
|
|
|
|
|
|
- getMissingTitles(), use getMissingPages() instead.
|
|
|
|
|
|
- getGoodAndMissingTitles(), use getGoodAndMissingPages() instead.
|
|
|
|
|
|
- getRedirectTitles(), use getRedirectTargets() instead.
|
|
|
|
|
|
- getSpecialTitles(), use getSpecialPages() instead.
|
2021-04-12 14:45:26 +00:00
|
|
|
|
* The following functions from the User class, deprecated in 1.35, now emit
|
|
|
|
|
|
deprecation warnings:
|
|
|
|
|
|
- getOptions
|
|
|
|
|
|
- isIP
|
2021-05-28 13:38:53 +00:00
|
|
|
|
- isUsableName
|
|
|
|
|
|
- isCreatableName
|
|
|
|
|
|
- getCanonicalName
|
2021-04-06 20:53:56 +00:00
|
|
|
|
* The following methods in User were deprecated:
|
|
|
|
|
|
- ::idFromName - use UserIdentityLookup::getUserIdentityByName instead.
|
|
|
|
|
|
- ::resetIdByNameCache - in tests, reset service container. No replacement
|
|
|
|
|
|
needed in production code.
|
2021-04-22 06:00:25 +00:00
|
|
|
|
* Use of ActorMigration for any table except revision, deprecated in 1.34, now
|
|
|
|
|
|
emits deprecation warnings. Instead of getInsertValues(), use
|
|
|
|
|
|
ActorNormalization::acquireActorId(). Instead of getWhere() and getJoin(),
|
|
|
|
|
|
do your own join on the actor table.
|
2021-04-26 20:25:28 +00:00
|
|
|
|
* DatabasePostgres::remappedTableName() and its dependent constructor parameter
|
|
|
|
|
|
'keywordTableMap' are deprecated. Reserved identifiers that are used as table
|
|
|
|
|
|
names should be quoted where necessary.
|
2021-05-03 12:29:14 +00:00
|
|
|
|
* LinkCache::singleton(), deprecated since 1.28, now emits deprecation warnings.
|
2021-05-03 13:08:33 +00:00
|
|
|
|
* MessageCache::singleton(), deprecated since 1.34, now emits deprecation
|
|
|
|
|
|
warnings.
|
2021-05-03 14:38:44 +00:00
|
|
|
|
* LockManagerGroup::singleton() and ::destroySingletons(), deprecated since
|
|
|
|
|
|
1.34, now emit deprecation warnings.
|
2021-05-07 22:19:29 +00:00
|
|
|
|
* HtmlFileCacheUpdate::newFromTitles() is now deprecated and emitting warnings.
|
|
|
|
|
|
Use newFromPages() instead.
|
2021-04-29 20:44:45 +00:00
|
|
|
|
* SessionProvider ::setLogger(), ::setManager(), ::setConfig(),
|
|
|
|
|
|
::setHookContainer() were soft deprecated. Use ::init() to inject
|
|
|
|
|
|
dependencies or override ::postInitSetup() to do any custom
|
|
|
|
|
|
post-initialization configuration.
|
2020-12-23 03:24:16 +00:00
|
|
|
|
* User->isLoggedIn(), deprecated since 1.36, now emits deprecation warnings. Use
|
|
|
|
|
|
the method it wraps, User->isRegistered(), instead.
|
2021-05-03 19:22:09 +00:00
|
|
|
|
* FileBackendGroup::singleton() and ::destroySingletons(), deprecated since
|
|
|
|
|
|
1.35, now emit deprecation warnings.
|
2021-03-17 12:37:06 +00:00
|
|
|
|
* JobQueueGroup::singleton was deprecated - use
|
|
|
|
|
|
MediaWikiServices::getJobQueueGroup instead.
|
|
|
|
|
|
* JobQueueGroup::destroySingletons was deprecated. JobQueueGroups are now
|
|
|
|
|
|
automatically destroyed after tests.
|
2021-05-07 19:56:38 +00:00
|
|
|
|
* SessionProvider ::setLogger(), ::setManager(), ::setConfig(),
|
|
|
|
|
|
::setHookContainer() were hard deprecated. Use ::init() to inject
|
|
|
|
|
|
dependencies or override ::postInitSetup() to do any custom
|
|
|
|
|
|
post-initialization configuration.
|
2021-06-02 14:14:15 +00:00
|
|
|
|
* ContentHandler::getContentText() is now soft deprecated.
|
2021-05-15 16:59:36 +00:00
|
|
|
|
Use Content::getText() instead.
|
2021-05-26 05:28:12 +00:00
|
|
|
|
* MediaWiki\User\UserNamePrefixSearch::search() previously accepted as
|
|
|
|
|
|
its first parameter either the string 'public' or a UserIdentity object,
|
|
|
|
|
|
to filter results for. It now expects an Authority object instead of
|
|
|
|
|
|
UserIdentity, and providing just a UserIdentity is hard deprecated.
|
2021-05-18 14:36:20 +00:00
|
|
|
|
* wfLocalFile(), deprecated since 1.34, now emits deprecation warnings.
|
2021-05-18 14:59:04 +00:00
|
|
|
|
* wfFindFile(), deprecated since 1.34, now emits deprecation warnings.
|
2021-05-20 15:14:28 +00:00
|
|
|
|
* User::getRights(), deprecated since 1.34, now emits deprecation warnings.
|
2021-05-25 14:01:35 +00:00
|
|
|
|
* User::changeableGroups and ::changeableByGroup were hard deprecated, use
|
2021-05-25 13:48:49 +00:00
|
|
|
|
corresponding methods in UserGroupManager instead.
|
2021-04-24 04:54:48 +00:00
|
|
|
|
* User::incEditCount() was deprecated in favor of the new method
|
|
|
|
|
|
UserEditTracker::incrementUserEditCount().
|
2021-05-06 09:30:50 +00:00
|
|
|
|
* RepoGroup::singleton(), ::destroySingleton() and ::setSingleton(),
|
|
|
|
|
|
deprecated since 1.34, now emit deprecation warnings.
|
2021-05-28 12:16:14 +00:00
|
|
|
|
* AbstractAuthenticationProvider ::setLogger(), ::setManager(), ::setConfig(),
|
|
|
|
|
|
::setHookContainer() were hard deprecated. Use ::init() to inject
|
|
|
|
|
|
dependencies or override ::postInitSetup() to do any custom
|
|
|
|
|
|
post-initialization configuration.
|
2021-05-27 15:49:33 +00:00
|
|
|
|
* RecentChange::getPerformer(), hard-deprecated since 1.37,
|
|
|
|
|
|
use getPerformerIdentity() instead.
|
2021-06-02 14:14:15 +00:00
|
|
|
|
* ContentHandler::cleanupHandlersCache(), deprecated since 1.35, now emits
|
|
|
|
|
|
deprecation warnings.
|
2021-05-27 19:37:50 +00:00
|
|
|
|
* File::getUser method was hard deprecated, along with overrides in LocalFile
|
|
|
|
|
|
and ForeignApiFile in favor of ::getUploader.
|
2021-06-02 06:49:01 +00:00
|
|
|
|
* SpecialBlock::checkUnblockSelf(), deprecated in 1.36, now emits deprecation
|
|
|
|
|
|
warnings.
|
2021-06-02 19:03:07 +00:00
|
|
|
|
* (T284179) The mediawiki.viewport ResourceLoader module is deprecated. You can
|
|
|
|
|
|
now just use MutationObserver or InterSectionObserver directly, which are
|
|
|
|
|
|
widely available in all supported JavaScript browsers.
|
2021-06-04 09:05:47 +00:00
|
|
|
|
* The following constructor options of DatabaseBlock class,
|
|
|
|
|
|
hard deprecated since 1.37:
|
|
|
|
|
|
- 'byText' property with blocker's name,
|
|
|
|
|
|
use 'by' property with UserIdentity value instead.
|
|
|
|
|
|
- 'by' property with blocker's ID,
|
|
|
|
|
|
use 'by' property with UserIdentity value instead.
|
2021-01-12 00:19:53 +00:00
|
|
|
|
* The BeforeResetNotificationTimestamp hook was deprecated.
|
2021-06-02 16:48:33 +00:00
|
|
|
|
* ArchivedFile::getUser, ::getRawUser, ::getRawUserText were deprecated in
|
|
|
|
|
|
favor of ::getUploader. ::getRawDescription was deprecated in favor of
|
|
|
|
|
|
::getDescription with RAW audience parameter.
|
2021-06-03 01:34:31 +00:00
|
|
|
|
* When calling LocalFile::newFromRow() or LocalFile::loadFromRow(), passing
|
|
|
|
|
|
extra fields not requested by ::getQueryInfo() is hard deprecated. This is
|
|
|
|
|
|
to warn callers that deprefixing and automatic assignment of such fields will
|
|
|
|
|
|
not be done in a future version.
|
2021-05-13 23:54:44 +00:00
|
|
|
|
* JobSpecification::getTitle was deprecated without providing a replacement.
|
|
|
|
|
|
It wasn't used and job given the purpose of JobSpecification class it's
|
|
|
|
|
|
not needed.
|
Use the unserialized form of image metadata internally
Image metadata is usually a serialized string representing an array.
Passing the string around internally and having everything unserialize
it is an awkward convention.
Also, many image handlers were reading the file twice: once for
getMetadata() and again for getImageSize(). Often getMetadata()
would actually read the width and height and then throw it away.
So, in filerepo:
* Add File::getMetadataItem(), which promises to allow partial
loading of metadata per my proposal on T275268 in a future commit.
* Add File::getMetadataArray(), which returns the unserialized array.
Some file handlers were returning non-serializable strings from
getMetadata(), so I gave them a legacy array form ['_error' => ...]
* Changed MWFileProps to return the array form of metadata.
* Deprecate the weird File::getImageSize(). It was apparently not
called by anything, but was overridden by UnregisteredLocalFile.
* Wrap serialize/unserialize with File::getMetadataForDb() and
File::loadMetadataFromDb() in preparation for T275268.
In MediaHandler:
* Merged MediaHandler::getImageSize() and MediaHandler::getMetadata()
into getSizeAndMetadata(). Deprecated the old methods.
* Instead of isMetadataValid() we now have isFileMetadataValid(), which
only gets a File object, so it can decide what data it needs to load.
* Simplified getPageDimensions() by having it return false for non-paged
media. It was not called in that case, but was implemented anyway.
In specific handlers:
* Rename DjVuHandler::getUnserializedMetadata() and
extractTreesFromMetadata() for clarity. "Metadata" in these function
names meant an XML string.
* Updated DjVuImage::getImageSize() to provide image sizes in the new
style.
* In ExifBitmapHandler, getRotationForExif() now takes just the
Orientation tag, rather than a serialized string. Also renamed for
clarity.
* In GIFMetadataExtractor, return the width, height and bits per channel
instead of throwing them away. There was some conflation in
decodeBPP() which I picked apart. Refer to GIF89a section 18.
* In JpegMetadataExtractor, process the SOF0/SOF2 segment to extract
bits per channel, width, height and components (channel count). This
is essentially a port of PHP's getimagesize(), so should be bugwards
compatible.
* In PNGMetadataExtractor, return the width and height, which were
previously assigned to unused local variables. I verified the
implementation by referring to the specification.
* In SvgHandler, retain the version validation from unpackMetadata(),
but rename the function since it now takes an array as input.
In tests:
* In ExifBitmapTest, refactored some tests by using a provider.
* In GIFHandlerTest and PNGHandlerTest, I removed the tests in which
getMetadata() returns null, since it doesn't make sense when ported to
getMetadataArray(). I added tests for empty arrays instead.
* In tests, I retained serialization of input data since I figure it's
useful to confirm that existing database rows will continue to be read
correctly. I removed serialization of expected values, replacing them
with plain data.
* In tests, I replaced access to private class constants like
BROKEN_FILE with string literals, since stability is essential. If
the class constant changes, the test should fail.
Elsewhere:
* In maintenance/refreshImageMetadata.php, I removed the check for
shrinking image metadata, since it's not easy to implement and is
not future compatible. Image metadata is expected to shrink in
future.
Bug: T275268
Change-Id: I039785d5b6439d71dcc21dcb972177dba5c3a67d
2021-05-19 00:24:32 +00:00
|
|
|
|
* The protected method File::getImageSize() is deprecated.
|
|
|
|
|
|
* MediaHandler::getImageSize(), ::getMetadata() and ::isMetadataValid were
|
|
|
|
|
|
deprecated and should no longer be overridden. Instead, subclasses should
|
|
|
|
|
|
override getSizeAndMetadata().
|
|
|
|
|
|
* Deprecated File::getMetadata(). Instead use ::getMetadataArray(),
|
|
|
|
|
|
::getMetadataItem() and ::getMetadataItems().
|
2021-05-12 01:20:12 +00:00
|
|
|
|
* Message::title was deprecated, use Message::page instead.
|
2021-04-11 15:55:02 +00:00
|
|
|
|
* …
|
2021-04-06 20:49:22 +00:00
|
|
|
|
|
|
|
|
|
|
=== Other changes in 1.37 ===
|
2021-04-19 17:35:35 +00:00
|
|
|
|
* WatchlistManager::addWatch and WatchlistManager::addWatchIgnoringRights(),
|
|
|
|
|
|
which replace User::addWatch(), now call the WatchArticle and
|
|
|
|
|
|
WatchArticleComplete hooks.
|
|
|
|
|
|
* WatchlistManager::removeWatch and
|
|
|
|
|
|
WatchlistManager::removeWatchIgnoringRights(), which replace
|
|
|
|
|
|
User::removeWatch(), now call the UnwatchArticle and UnwatchArticleComplete
|
|
|
|
|
|
hooks.
|
2021-04-16 13:17:10 +00:00
|
|
|
|
* The overridable postInitSetup() method was added to the
|
|
|
|
|
|
AbstractAuthenticationProvider class. A provider can override postInitSetup()
|
|
|
|
|
|
to do any custom post-initialization configuration.
|
2021-04-29 20:44:45 +00:00
|
|
|
|
* The overridable postInitSetup() method was added to the SessionProvider
|
|
|
|
|
|
class. A provider can override postInitSetup() to do any custom
|
|
|
|
|
|
post-initialization configuration.
|
|
|
|
|
|
* The protected getConfig() method was added to the SessionProvider class.
|
|
|
|
|
|
Use SessionProvider::getConfig to get a config.
|
2021-04-30 09:10:48 +00:00
|
|
|
|
* The DBAccessBase class is deprecated. Classes that used to extend it
|
|
|
|
|
|
should get a load balancer (factory) injected in the constructor instead.
|
2021-05-25 14:28:19 +00:00
|
|
|
|
* ActorNormalization::acquireActorId now requires IDatabase parameter.
|
|
|
|
|
|
Not providing one emitted deprecation warnings since 1.36.
|
2021-05-30 12:47:20 +00:00
|
|
|
|
* Anti-lock constants ALF_PRELOAD_LINK, ALF_NO_BLOCK_LOCK, ALF_NO_LINK_LOCK
|
|
|
|
|
|
and ALF_PRELOAD_EXISTENCE have been removed. They're unused since 1.25.
|
2021-04-06 20:49:22 +00:00
|
|
|
|
* …
|
|
|
|
|
|
|
|
|
|
|
|
== Compatibility ==
|
|
|
|
|
|
|
|
|
|
|
|
MediaWiki 1.37 requires PHP 7.3.19 or later and the following PHP extensions:
|
|
|
|
|
|
|
|
|
|
|
|
* ctype
|
|
|
|
|
|
* dom
|
|
|
|
|
|
* fileinfo
|
|
|
|
|
|
* iconv
|
|
|
|
|
|
* intl
|
|
|
|
|
|
* json
|
|
|
|
|
|
* mbstring
|
|
|
|
|
|
* xml
|
|
|
|
|
|
|
|
|
|
|
|
MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
|
|
|
|
|
|
but support for them is somewhat less mature.
|
|
|
|
|
|
|
|
|
|
|
|
The supported versions are:
|
|
|
|
|
|
|
|
|
|
|
|
* MySQL 5.5.8 or later
|
|
|
|
|
|
* PostgreSQL 9.4 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 ==
|
2021-05-20 20:57:48 +00:00
|
|
|
|
There's usually someone online in #mediawiki on irc.libera.chat.
|