MediaWiki 1.31

Jump to: navigation, search
Translate this page; This page contains changes which are not marked for translation.

Other languages:
العربية • ‎dansk • ‎English • ‎español • ‎français • ‎עברית • ‎日本語 • ‎Lëtzebuergesch • ‎मराठी • ‎português do Brasil • ‎русский • ‎Santali • ‎中文

MediaWiki 1.31 is a future release of MediaWiki. Consult the RELEASE-NOTES file for the full list of changes. It is currently deployed on Wikimedia Foundation wikis through incremental "wmf"-branches starting 26 September 2017. The 1.31.0 stable release is expected to come out on sometime in June 2018.

Download the latest snapshot or checkout the REL1_31 branch in Git to follow this release.

What's new[edit]

More bundled extensions[edit]

The set of extensions that are bundled with the MediaWiki tarball is increasing. The new additions are:

Clicking on this image should trigger the MultimediaViewer extension.

Tidy replaced with HTML 5 parsing algorithm[edit]

See the frequently asked questions for more details

The HTML 4 based Tidy library has been replaced by a pure-PHP HTML 5 parser to clean up improper wikitext in a modern and standards compliant way. If your content relied on some of the tidy fix-ups that are not being continued, they will need to be fixed. [Something about how in the long-run this will all be better. Pointers to Linter and ParserMigration].

Interwiki usernames[edit]


Further UI standardization[edit]


Upgrade notices for MediaWiki administrators[edit]


Configuration changes[edit]

  • $wgEnableAPI and $wgEnableWriteAPI are now deprecated and will be removed in a future version. The API is now considered to be stable, secure and essential.
  • $wgUsejQueryThree was removed, as it is now the default. This was documented as a temporary variable during the migration period, deprecated since 1.29.
  • $wgLogoHD has been updated to support svg images and uses $wgLogo where possible for fallback images such as png.
  • (task T44246) $wgFilterLogTypes will no longer ignore 'patrol' when user does not have the right to mark things patrolled.
  • Wikis that contain imported revisions or CentralAuth global blocks should run maintenance/cleanupUsersWithNoId.php.
  • $wgResourceLoaderMinifierStatementsOnOwnLine and $wgResourceLoaderMinifierMaxLineLength were removed (deprecated since 1.27).
  • $wgReferrerPolicy now supports having fallbacks for browsers that are not using the latest version of the Referrer Policy specification.
  • $wgFragmentMode is now set to [ 'legacy', 'html5' ] by default. This is a first step of migration to human-readable section IDs that will later result in 'html5' being the default mode.
  • The old CategorizedRecentChanges feature, including its related configuration option $wgAllowCategorizedRecentChanges, has been removed.
  • (T188472) The 'comma' value for $wgArticleCountMethod is no longer supported forperformance reasons, and installations with this setting will now work as if it was configured with 'any'.

New features[edit]

  • Wikimedia\Rdbms\IDatabase->select() and similar methods now support joins with parentheses for grouping.
  • As a first pass in standardizing dialog boxes across the MediaWiki product, Html class now provides helper methods for messageBox, successBox, errorBox and warningBox generation.
  • (task T9240) Imports will now record unknown (and, optionally, known) usernames in a format like "iw>Example".
  • (task T20209) Linker (used on history pages, log pages, and so on) will display usernames formed like "iw>Example" as interwiki links, as if by wikitext like iw>Example.
  • (task T111605) The 'ImportHandleUnknownUser' hook allows extensions to auto-create users during an import.
  • Added a hook, ParserOutputPostCacheTransform, to allow extensions to affect the ParserOutput::getText() post-cache transformations.

Action API changes[edit]

Action API internal changes[edit]

Languages updated[edit]

  • (task T180052) Mirandese (mwl) now supports gendered NS_USER/NS_USER_TALK namespaces.

Other changes[edit]

  • MessageBlobStore::insertMessageBlob() (deprecated in 1.27) was removed.
  • The global function wfBCP47 was renamed to LanguageCode::bcp47.
  • The global function wfBCP47 is now deprecated.
  • The global function wfCountDown() is now deprecated in favor of Maintenance::countDown()
  • The OutputPage class constructor now requires a context parameter, (instantiating without context was deprecated in 1.18)
  • (deprecated in 1.30) was removed.
  • Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the related WikiPage::PURGE_* constants, deprecated in 1.29, were removed.
  • The Article::selectFields(), Article::onArticleCreate(), Article::onArticleDelete(), and Article::onArticleEdit() methods, deprecated in 1.24, were removed.
  • Installer::locateExecutable() and Installer::locateExecutableInDefaultPaths() were removed, use ExecutableFinder::findInDefaultPaths() instead.
  • Several methods for returning lists of fields to select from the database have been deprecated in favor of similar methods that also return the tables to select from and the join conditions for those tables.
    • Block::selectFields() → Block::getQueryInfo()
    • RecentChange::selectFields() → RecentChange::getQueryInfo()
    • ArchivedFile::selectFields() → ArchivedFile::getQueryInfo()
    • LocalFile::selectFields() → LocalFile::getQueryInfo()
    • LocalFile::getCacheFields() with a prefix no longer works
    • LocalFile::getLazyCacheFields() with a prefix no longer works
    • OldLocalFile::selectFields() → OldLocalFile::getQueryInfo()
    • RecentChange::selectFields() → RecentChange::getQueryInfo()
    • Revision::userJoinCond() → Revision::getQueryInfo( [ 'user' ] )
    • Revision::selectUserFields() → Revision::getQueryInfo( [ 'user' ] )
    • Revision::pageJoinCond() → Revision::getQueryInfo( [ 'page' ] )
    • Revision::selectPageFields() → Revision::getQueryInfo( [ 'page' ] )
    • Revision::selectTextFields() → Revision::getQueryInfo( [ 'text' ] )
    • Revision::selectFields() → Revision::getQueryInfo()
    • Revision::selectArchiveFields() → Revision::getArchiveQueryInfo()
    • User::selectFields() → User::getQueryInfo()
    • WikiPage::selectFields() → WikiPage::getQueryInfo()
  • Due to significant refactoring, method ContribsPager::getUserCond() that had no access restriction has been removed.
  • Revision::setUserIdAndName() was deprecated.
  • Access to TitleValue class properties was deprecated, the relevant getters should be used instead.
  • DifferenceEngine::getDiffBodyCacheKey() is deprecated. Subclasses should override DifferenceEngine::getDiffBodyCacheKeyParams() instead.
  • The deprecated MW_DIFF_VERSION constant was removed. DifferenceEngine::MW_DIFF_VERSION should be used instead.
  • Use of Maintenance::error( $err, $die ) to exit script was deprecated. Use Maintenance::fatalError() instead.
  • Passing a ParserOptions object to OutputPage::parserOptions() is deprecated.
  • Browser support for Opera 12 and older was removed. Opera 15+ continues at Grade A support.
  • The Block class will no longer accept usable-but-missing usernames for 'byText' or ->setBlocker(). Callers should either ensure the blocker exists locally or use a new interwiki-format username like "iw>Example".
  • The following methods that get and set ParserOutput state are deprecated. Callers should use the new stateless $options parameter to ParserOutput::getText() instead.
    • ParserOptions::getEditSection()
    • ParserOptions::setEditSection()
    • ParserOutput::getEditSectionTokens()
    • ParserOutput::setEditSectionTokens()
    • ParserOutput::getTOCEnabled()
    • ParserOutput::setTOCEnabled()
    • OutputPage::enableSectionEditLinks()
    • OutputPage::sectionEditLinksEnabled()
  • The public ParserOutput state fields $mTOCEnabled and $mEditSectionTokens are also deprecated.
  • The following methods and constants from the WatchedItem class were deprecated in 1.27 have been removed.
    • WatchedItem::getTitle()
    • WatchedItem::fromUserTitle()
    • WatchedItem::addWatch()
    • WatchedItem::removeWatch()
    • WatchedItem::isWatched()
    • WatchedItem::duplicateEntries()
    • WatchedItem::IGNORE_USER_RIGHTS
    • WatchedItem::CHECK_USER_RIGHTS