847 lines
42 KiB
Text
847 lines
42 KiB
Text
= MediaWiki 1.36 =
|
||
|
||
== MediaWiki 1.36.0-PRERELEASE ==
|
||
|
||
THIS IS NOT A RELEASE YET
|
||
|
||
MediaWiki 1.36 is an alpha-quality development branch, and is not recommended
|
||
for use in production.
|
||
|
||
== Upgrading notes for 1.36 ==
|
||
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.27.
|
||
|
||
Some specific notes for MediaWiki 1.36 upgrades are below:
|
||
* MediaWiki 1.36 now requires the PHP internationalization extension (commonly
|
||
referred to as Intl, ext-intl, or php-intl).
|
||
* MediaWiki:Autoblock_whitelist has been moved to
|
||
MediaWiki:Block-autoblock-exemptionlist. If you use this feature, please move
|
||
the MediaWiki:Autoblock_whitelist page.
|
||
* …
|
||
|
||
For notes on 1.35.x and older releases, see HISTORY.
|
||
|
||
=== Configuration changes for system administrators in 1.36 ===
|
||
MediaWiki update script, maintenance/update.php, used to accept `--nopurge`
|
||
option to prevent clearing caches stored in the database during upgrade, this
|
||
is no longer recommended and the option has been removed.
|
||
…
|
||
|
||
==== New configuration ====
|
||
* (T256001) $wgManualRevertSearchRadius – This setting introduces a feature that
|
||
marks edits as reverts if they restore the page to an exact previous state.
|
||
This configuration variable sets the maximum number of revisions of a page
|
||
that will be checked against every new edit. Set this to 0 to disable the
|
||
feature entirely.
|
||
* (T244058) $wgOldRevisionParserCacheExpireTime — This setting was added to
|
||
control caching of ParserOutput for old revisions.
|
||
* (T265263) $wgRememberMe - This setting configures the "remember me" checkbox
|
||
on account log-in systems via RememberMeAuthenticationRequest.
|
||
* (T157145) $wgSkinMetaTags – This setting allows configuration of skins to
|
||
support meta tags. These tags make sharing of MediaWiki pages on a variety of
|
||
social platforms more contentful and thus useful.
|
||
* …
|
||
|
||
==== Changed configuration ====
|
||
* $wgLogos – The default value for the site logo, which is shown in an install
|
||
if you have not set one, will now be the new logo of MediaWiki.
|
||
* (T274695) $wgAjaxEditStash — This setting, to disable the edit stashing
|
||
feature when users start writing an edit summary, has been deprecated. In
|
||
future releases, this feature will always be enabled.
|
||
* $wgUploadStashScalerBaseUrl – This setting, to enable remote on-demand media
|
||
scaling, was deprecated. Use the `thumbProxyUrl` setting in $wgLocalFileRepo
|
||
instead.
|
||
* $wgSlaveLagWarning and $wgSlaveLagCritical – These settings have been renamed,
|
||
to $wgDatabaseReplicaLagWarning & $wgDatabaseReplicaLagCritical respectively.
|
||
The former configuration variable names are deprecated, but will be used as
|
||
the fall back if they are still set, and remain temporarily available for
|
||
extensions which try to read them.
|
||
* $wgWANObjectCaches - The "coalesceKeys" option was removed without
|
||
deprecation. A new "coalesceScheme" option takes its place, and is
|
||
"hash_stop" by default. If you use Dynomite, then set the new "coalesceKeys"
|
||
option to "hash_tag".
|
||
* $wgWANObjectCaches - The "cluster" and "mcrouterAware" options were removed
|
||
without deprecation. Use "broadcastRoutingPrefix" instead.
|
||
* …
|
||
|
||
==== Removed configuration ====
|
||
* $wgUseTwoButtonsSearchForm — This setting, deprecated in 1.35, has been
|
||
removed.
|
||
* $wgAllowImageMoving — This setting, deprecated in 1.35, has been removed. Use
|
||
group permission settings instead. For example, to prevent sysops from
|
||
moving files, set `$wgGroupPermissions['sysop']['movefile'] = false;`
|
||
* $wgExtNewTables, $wgExtNewFields, $wgExtNewIndexes, $wgExtPGNewFields,
|
||
$wgExtPGAlteredFields, $wgExtModifiedFields — These settings were removed.
|
||
They became obsolete after 1.17 overhauled the database updater, but were kept
|
||
for backwards compatibility. The LoadExtensionSchemaUpdates hook should be
|
||
used instead.
|
||
* $wgParserConf - This setting, deprecated in 1.35, has been removed.
|
||
The preprocessor configuration which used to live within this setting
|
||
was deprecated in 1.34 and removed in 1.35.
|
||
* $wgEnableRestAPI - This setting, ignored since 1.35, has been removed.
|
||
* $wgPagePropsHaveSortkey – This temporary setting has been removed, along with
|
||
the schema change upgrade path it controlled. If your site is still using it,
|
||
meaning you have not yet applied the `pp_sortkey` schema change from 1.24, you
|
||
must now apply it before upgrading.
|
||
* The deprecated password policies PasswordCannotMatchBlacklist and
|
||
PasswordNotInLargeBlacklist were removed. Please use
|
||
PasswordCannotMatchDefaults and PasswordNotInCommonList instead.
|
||
* …
|
||
|
||
=== New user-facing features in 1.36 ===
|
||
* The logo of MediaWiki has changed. This means that the "Powered By MediaWiki"
|
||
button shown in the skin footer will be different.
|
||
* All HTML5 named entities are now accepted in wikitext.
|
||
* …
|
||
|
||
=== New developer features in 1.36 ===
|
||
* Parser test files can now declare a dependency on a specific extension being
|
||
loaded, not just on the presence of a certain extension tag hook. This is a
|
||
better fit for extensions like TimedMediaHandler, which affect the output but
|
||
don't register parser hooks. Use `extension:Foo` in the `!! hooks` section of
|
||
your parser test file to declare a dependency on the `Foo` extension being
|
||
loaded.
|
||
* To expose code previously present in SpecialBlock/SpecialUnblock to other
|
||
parts of the code, or to extensions, the new BlockUser and UnblockUser command
|
||
objects were added. Use the BlockUserFactory and UnblockUserFactory services
|
||
to create them.
|
||
* The hook UsersPagerDoBatchLookupsHook takes now a \Wikimedia\Rdbms\IDatabase,
|
||
instead of \Wikimedia\Rdbms\DBConnRef, as the first parameter.
|
||
* MediaHandlers can now customize the formatting of the metadata they emit by
|
||
over-riding MediaHandler::formatTag( $key, $value ). The default for unknown
|
||
tags is numeric formatting; non-EXIF tags which are non-numeric should always
|
||
use this method to specify the desired formatting.
|
||
* The new 'title' type can be used to validate action API and REST API inputs.
|
||
* The new ArticleParserOptions hook allows customizing the parser options used
|
||
to parse wikitext for an article, based on user preferences, title, etc.
|
||
* The new 'raw' type can be used to validate action API inputs. It bypasses the
|
||
Unicode NFC normalization done on inputs of type 'string', so it more suitable
|
||
when the input is binary or may contain deprecated Unicode sequences or
|
||
characters (such as U+2001) that should be passed unmodified.
|
||
* (T260330) A new abstraction for running shell commands has been introduced,
|
||
called BoxedCommand. A BoxedCommand object can be obtained with
|
||
MediaWikiServices::getInstance()->getCommandFactory()->createBoxed().
|
||
* ResourceLoader modules can now mark themselves as ES6-only by setting
|
||
`'es6' => true` in their module definition. ES6-only modules will not be
|
||
executed in browsers that don't support ES6, such as IE11.
|
||
* …
|
||
|
||
=== External library changes in 1.36 ===
|
||
* …
|
||
|
||
==== New external libraries ====
|
||
* Added wikimedia/minify 2.2.1.
|
||
* Added wikimedia/request-timeout 1.1.0.
|
||
* Added wikimedia/shellbox 1.0.4.
|
||
* Added WVUI 0.1.0.
|
||
* …
|
||
|
||
===== New development-only external libraries =====
|
||
* …
|
||
|
||
==== Changed external libraries ====
|
||
* Updated composer/semver from 1.5.1 to 3.2.4.
|
||
* Updated guzzlehttp/guzzle from 6.5.4 to 7.2.0.
|
||
* Updated jquery.client from 2.0.2 to 3.0.0.
|
||
* Updated OOUI from 0.39.3 to 0.41.3.
|
||
* Updated pear/mail_mime from 1.10.8 to 1.10.9.
|
||
* Updated pear/net_smtp from 1.9.1 to 1.9.2.
|
||
* Updated pimple/pimple from 3.3.0 to 3.3.1.
|
||
* Updated wikimedia/at-ease from 2.0.0 to 2.1.0.
|
||
* Updated wikimedia/cldr-plural-rule-parser from 1.0.0 to 2.0.0.
|
||
* Updated wikimedia/common-passwords from 0.2.0 to 0.3.0.
|
||
* Updated wikimedia/composer-merge-plugin from 1.4.1 to 2.0.1.
|
||
* Updated wikimedia/html-formatter from 1.0.2 to 3.0.1.
|
||
* Updated wikimedia/ip-set from 2.1.0 to 3.0.0.
|
||
* Updated wikimedia/ip-utils from 1.0.0 to 3.0.2.
|
||
* Updated wikimedia/less.php from 3.0.0 to 3.1.0.
|
||
* Updated wikimedia/object-factory from 2.1.0 to 3.0.0.
|
||
* Updated wikimedia/php-session-serializer from 1.0.7 to 2.0.0.
|
||
* Updated wikimedia/remex-html from 2.2.0 to 2.2.2.
|
||
* Updated wikimedia/utfnormal from 2.0.0 to 3.0.2.
|
||
* Updated wikimedia/wait-condition-loop from 1.0.1 to 2.0.1.
|
||
* Updated wikimedia/xmp-reader from 0.7.0 to 0.8.1.
|
||
* …
|
||
|
||
===== Changed development-only external libraries =====
|
||
* Updated composer/spdx-licenses from 1.5.3 to 1.5.4.
|
||
* Updated doctrine/dbal from 2.10.2 to 3.0.0.
|
||
* Updated doctrine/sql-formatter from 1.1.0 to 1.1.1.
|
||
* Updated mediawiki/mediawiki-phan-config from 0.10.2 to 0.10.6.
|
||
* Updated monolog/monolog from 1.25.3 to 2.2.0.
|
||
* Updated nikic/php-parser from 4.4.0 to 4.10.2.
|
||
* Updated psy/psysh from 0.10.4 to 0.10.5.
|
||
* Updated seld/jsonlint from 1.7.1 to 1.8.3.
|
||
* Updated symfony/yaml from ~3.4|~4.3|~5.0.5 to ~3.4|~5.1.
|
||
* Updated wikimedia/testing-access-wrapper from 1.0.0 to 2.0.0.
|
||
* …
|
||
|
||
==== Removed external libraries ====
|
||
* The html5shiv library has been removed, as support for Internet Explorer 8 has
|
||
been dropped.
|
||
* The wikimedia/avro suggested development-only library has been removed, as the
|
||
support for logging in Avro format has been dropped.
|
||
* …
|
||
|
||
=== Bug fixes in 1.36 ===
|
||
* (T190285) ApiEditPage module used to switch 'undo' and 'undoafter' parameters,
|
||
if it founds you reversed them (based on assumption that higher revision ID
|
||
indicates a later revision). The assumption is not always true, and is
|
||
hindering proper edit undoing in some cases, hence the logic has been removed.
|
||
Reversing the parameters will now lead to edit conflict or undefined behavior.
|
||
* (T263340) In history merging, pages with a content model that does not support
|
||
redirects will now be recorded as deleted if no revision is being left in the
|
||
source page (that's if all revisions of the page have been merged to another).
|
||
* …
|
||
|
||
=== Action API changes in 1.36 ===
|
||
* (T269636) `Access-Control-Max-Age` was added to the default list of headers
|
||
allowed for cross-origin API requests ($wgAllowedCorsHeaders).
|
||
* (T258108) Accounts with the 'bot' right no longer have pages automatically
|
||
added to the watchlist when making API edits, regardless of their preferences.
|
||
This is to reduce the size of the watchlist data in the database. To add API
|
||
bot edits to the watchlist, explicitly set the 'watch' option.
|
||
* …
|
||
|
||
=== Action API internal changes in 1.36 ===
|
||
* …
|
||
|
||
=== Languages updated in 1.36 ===
|
||
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.
|
||
|
||
* (T258975) Added a Latin/Cyrillic script converter for the Talysh language.
|
||
* (T245359) Split Bali script locale from "ban" (Balinese) (ban-bali).
|
||
* (T259330) Added language support for Mara (mrh).
|
||
* (T263968) Added language support for Nias (nia).
|
||
* (T264582) Added language support for Madurese (mad).
|
||
* (T270365) Added language support for Tyap (kcg).
|
||
* (T276745) Added language support for Wayuu (guc).
|
||
|
||
=== Breaking changes in 1.36 ===
|
||
* Grade C (non-JavaScript) support for Internet Explorer 8 has been dropped.
|
||
* (T249459) wfIsBadImage(), deprecated in 1.34, has been removed.
|
||
* (T176526) EditPage::getContextTitle() will now throw an exception if a context
|
||
title was not set using setContextTitle(). Previously, this mis-use would only
|
||
cause a deprecation warning to be emitted.
|
||
* The DeferredStringifier class, deprecated since 1.31, was removed.
|
||
* Multiple methods that fell back to the $wgUser global variable were
|
||
individually hard deprecated previously. The following have now been removed:
|
||
- ApiTestCase::doLogin
|
||
- Article::doDeleteArticle
|
||
- Article::doDeleteArticleReal
|
||
- Article::getComment
|
||
- Article::getCreator
|
||
- Article::getUser
|
||
- Article::getUserText
|
||
- Article::insertProtectNullRevision
|
||
- File::delete
|
||
- File::recordUpload
|
||
- ForeignDBFile::delete
|
||
- ForeignDBFile::recordUpload
|
||
- LocalFile::delete
|
||
- LocalFile::deleteOld
|
||
- LocalFile::recordUpload
|
||
- PageArchive::undelete
|
||
- RecentChange::markPatrolled
|
||
- Title::getUserPermissionsErrors
|
||
- Title::quickUserCan
|
||
- Title::userCan
|
||
- WebRequest::getLimitOffset
|
||
- WikiPage::doDeleteArticle
|
||
- WikiPage::insertProtectNullRevision
|
||
* The SpecialPageFactory class, deprecated in 1.32, has been removed. Use the
|
||
SpecialPageFactory service instead.
|
||
* Multiple methods previously had optional User parameters, with fallbacks
|
||
to the $wgUser global variable. Not passing a User to those methods was
|
||
previously hard deprecated, and support for not passing a User has now
|
||
been removed:
|
||
- ArchivedFile::userCan
|
||
- File::userCan
|
||
- FileDeleteForm::__construct
|
||
- FileDeleteForm::doDelete
|
||
- LocalFileDeleteBatch::__construct
|
||
- LogEventsList::getExcludeClause (only needed for the 'user' audience)
|
||
- LogEventsList::userCan
|
||
- LogEventsList::userCanBitfield
|
||
- LogEventsList::userCanViewLogType
|
||
- LogPage::addEntry (also accepts user id instead)
|
||
- OldLocalFile::userCan
|
||
- PatrolLog::record
|
||
- Title::getNotificationTimestamp (though the entire method is deprecated)
|
||
- WikiPage::getComment (only needed for the FOR_THIS_USER audience)
|
||
- WikiPage::getCreator (only needed for the FOR_THIS_USER audience)
|
||
- WikiPage::getUser (only needed for the FOR_THIS_USER audience)
|
||
- WikiPage::getUserText (only needed for the FOR_THIS_USER audience)
|
||
* The following hooks have been removed:
|
||
- APIQueryInfoTokens
|
||
- APIQueryRecentChangesTokens
|
||
- APIQueryRevisionsTokens
|
||
- APIQueryUsersTokens
|
||
- ApiTokensGetTokenTypes
|
||
* LogEventsList::typeAction previously accepted an optional right parameter, and
|
||
checked if the context user ($wgUser) had that right. Passing a right was hard
|
||
deprecated in 1.35, and support for passing a right has now been removed.
|
||
* WikiPage::doDeleteArticleReal previously accepted an optional user as its
|
||
fifth parameter, and fell back to $wgUser if not user was provided. The
|
||
signature changed to have the user as the second parameter, and the old
|
||
signature was hard deprecated in 1.35. Support for the old signature has now
|
||
been removed.
|
||
* User::addNewUserLogEntry, deprecated since 1.27, was removed.
|
||
* As part of refactoring the EditPage class, EditPage::setPreloadedContent,
|
||
which had no known callers was removed entirely. Additionally, the following
|
||
public methods were made private:
|
||
- ::extractSectionTitle
|
||
- ::getSummaryInputWidget
|
||
- ::noSuchSectionPage
|
||
- ::initialiseForm
|
||
* EditPage::matchSpamRegex and ::matchSummarySpamRegex, deprecated in 1.35,
|
||
were removed. Use the SpamChecker service instead.
|
||
* The global function `wfWaitForSlaves`, deprecated in 1.27 and hard-deprecated
|
||
in 1.35, has been removed. Use LBFactory::waitForReplication() instead.
|
||
* Calling Action::factory() with null as the first parameter, rather than a
|
||
string, was deprecated in 1.35 and support was now removed.
|
||
* Calling Action::factory() with an object that wasn't an Article as the second
|
||
parameter was deprecated in 1.35 and support was now removed.
|
||
* The global variable $wgMemc, deprecated since 1.35, has been removed. Usage
|
||
should generally be migrated to WANObjectCache, or if you really need the
|
||
internal object, use ObjectCache::getLocalClusterInstance instead.
|
||
* The preprocessDump.php maintenance script was removed.
|
||
* CategoryFinder, which was deprecated in 1.31 and hard-deprecated in 1.35,
|
||
has been removed.
|
||
* GenderCache::singleton(), which was deprecated in 1.28 and hard-deprecated
|
||
in 1.35, has been removed.
|
||
* Sanitizer::escapeId(), deprecated in 1.30, has been removed.
|
||
* Direct invocation of Parser::__construct() (instead of via a ParserFactory)
|
||
now throws an exception; support has also been removed for several
|
||
deprecated variants on the arguments passed to Parser::__construct.
|
||
Direct invocation of Parser::__construct was deprecated in 1.34.
|
||
* Parser::setFunctionTagHook(), deprecated in 1.35, has been removed.
|
||
* The following properties of Parser, deprecated in 1.35, have been made
|
||
private:
|
||
- $mTagHooks - use Parser::getTags()
|
||
- $mFunctionHooks - use Parser::getFunctionHooks()
|
||
- $mOutput - use Parser::getOutput()
|
||
- $mPreprocessor - use Parser::getPreprocessor()
|
||
* The ParserBeforeTidy hook, deprecated in 1.35, has been removed.
|
||
* The ParserBeforeTidy, ParserBeforeStrip, and ParserAfterStrip hooks,
|
||
deprecated in 1.35, have been removed.
|
||
* All methods of MWTidy except for MW::tidy() have been removed. These were each
|
||
either marked as @internal or deprecated in 1.35.
|
||
* (T248062) Mixins `.background-image-svg()` and `.background-image-svg-quick()`
|
||
(provided by mediawiki.mixins.less), which have been deprecated since 1.35,
|
||
have now been removed. MediaWiki no longer supports any browser which would
|
||
require this SVG-fallback PNG support, so you can simply use the regular CSS
|
||
`background-image:` declaration instead.
|
||
* The ResourceLoader module `mediawiki.legacy.oldshared` and its file
|
||
'oldshared.css', deprecated since 1.35 has been removed (T248357).
|
||
* `ResourceLoader::__construct` now requires a Config parameter. The optional
|
||
nature of this parameter was deprecated in 1.34.
|
||
* The LinkBegin and LinkEnd hooks, deprecated in 1.28, have been removed. You
|
||
can instead use the HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
|
||
hooks, respectively.
|
||
* The EmailUser hook passes its fifth param, $error, by reference, to allow
|
||
hook handlers to add error messages, indicate that they have sent the email
|
||
instead of core, etc. Setting the parameter to something other than a
|
||
Status object, true, false, an empty string, an array, or a MessageSpecifier,
|
||
object, which had been deprecated in 1.29, is no longer supported, and now
|
||
results in an MWException being thrown.
|
||
* Skin::getDynamicStylesheetQuery(), deprecated in 1.32, has been removed. You
|
||
should use action=raw&ctype=text/css directly.
|
||
* Skin::makeI18nUrl(), deprecated in 1.35, has been removed.
|
||
* The following User methods, deprecated and moved to BlockManager in 1.34, were
|
||
removed:
|
||
- ::isDnsBlacklisted
|
||
- ::inDnsBlacklist
|
||
- ::isLocallyBlockedProxy
|
||
- ::trackBlockWithCookie
|
||
* Support for v1 of the parser tests file format has been removed; it was
|
||
deprecated in 1.35. (T174199)
|
||
* SpecialUnblockUser::processUIUnblock() now returns a Status object instead of
|
||
an array of messages or a boolean value. This function was also marked as
|
||
@internal and is no longer safe to call it publicly.
|
||
* mw.Title.getDotExtension() from the 'mediawiki.Title' module was removed
|
||
without deprecation. You should use mw.Title.getExtension() and prepend the
|
||
dot if need be.
|
||
* Profiler::getTemplated and Profiler::setTemplated, deprecated in 1.34, have
|
||
been removed.
|
||
* Removed HookContainer::getOriginalHooksForTest() without deprecation. This
|
||
method was introduced in 1.35 for internal use, and appears unused outside of
|
||
MediaWiki core.
|
||
* ParserCache::__construct() now requires three parameters.
|
||
* Message->getFormat(), deprecated in 1.29, has been removed.
|
||
* Support for passing Article to ParserCache::get, deprecated in 1.35, has been
|
||
removed.
|
||
* ParserCache::singleton(), deprecated in 1.30, has been removed.
|
||
* DatabaseBlock::deleteIfExpired and ::fromMaster, deprecated in 1.35, have been
|
||
removed.
|
||
* Some deprecated AbstractBlock methods have been removed:
|
||
- ::prevents, deprecated in 1.33
|
||
- ::shouldTrackWithCookie, deprecated in 1.34
|
||
- ::getBlocker, deprecated in 1.35
|
||
- ::setBlocker, deprecated in 1.35
|
||
- ::getBlockErrorParams, deprecated in 1.35
|
||
* Multiple DatabaseBlock methods dealing with cookies, deprecated in 1.34,
|
||
have been removed:
|
||
- ::setCookie
|
||
- ::clearCookie
|
||
- ::getCookieValue
|
||
- ::getIdFromCookieValue
|
||
- ::shouldTrackWithCookie
|
||
* The public static callback function SpecialUnblock::processUIUnblock has been
|
||
removed. This method was for internal use only, and appears unused outside of
|
||
MediaWiki core.
|
||
* ChangeTags::truncateTagDescription, deprecated in 1.35, has been removed.
|
||
* Deprecated null fallbacks in PasswordReset constructor have been removed.
|
||
* User::isEveryoneAllowed and User::getAllRights, deprecated in 1.34, has been
|
||
removed.
|
||
* The following methods of the UserGroupMembership class, deprecated in 1.35,
|
||
has been removed:
|
||
- ::initFromRow
|
||
- ::newFromRow - use UserGroupManager::newGroupMembershipFromRow
|
||
- ::selectFields - use UserGroupManager::getQueryInfo
|
||
- ::delete - use UserGroupManager::removeUserFromGroup
|
||
- ::insert - use UserGroupManager::addUserToGroup
|
||
- ::purgeExpired - use UserGroupManager::purgeExpired
|
||
- ::getMembershipsForUser - use UserGroupManager::getUserGroupMemberships
|
||
- ::getMembership - use UserGroupManager::getUserGroupMemberships
|
||
* The public static callback function SpecialBlock::validateTargetField has been
|
||
removed. This method was for internal use only, and appears unused outside of
|
||
MediaWiki core.
|
||
* The public static callback function SpecialUploadStash::tryClearStashedUploads
|
||
has been removed. This method was for internal use only, and appears unused
|
||
outside of MediaWiki core.
|
||
* SpecialComparePages::showDiff() ::revOrTitle(), ::checkExistingTitle(), and
|
||
::checkExistingRevision() were marked as @internal to allow for breaking
|
||
changes. They are no longer safe to call. The methods were unused outside of
|
||
MediaWiki core.
|
||
* Each special page within core now uses service injection via it constructor.
|
||
When extending these special pages, a call to the grandparent constructor
|
||
(`SpecialPage::__construct()`) in the sub-class would now break the derived
|
||
special page, as the fallback code in the parent constructor cannot set the
|
||
services as needed. Be sure to call the parent constructor when extending
|
||
core special pages. Extending core's special pages is not part of the stable
|
||
interface, and should generally be avoided.
|
||
* Language::getExtraUserToggles and ::viewPrevNext, deprecated in 1.34, have
|
||
been removed.
|
||
* StreamFile::send404Message and ::parseRange, deprecated in 1.34, have been
|
||
removed.
|
||
* SVGMetadataExtractor class, deprecated in 1.34, has been removed.
|
||
* ProcessCacheLRU class, deprecated in 1.32, has been removed.
|
||
* wfForeignMemcKey(), deprecated in 1.35, has been removed.
|
||
* LoadBalancer::safeWaitForMasterPos(), deprecated in 1.34, has been removed.
|
||
* JobQueue::factory() now requires its `idGenerator` option. The optional
|
||
nature of this option was deprecated in 1.35.
|
||
* ApiFeedRecentChanges::getFeedObject has been changed to private, and appears
|
||
unused outside of MediaWiki core.
|
||
* Skin::subPageSubtitle() has been changed to private method. Callers should
|
||
use Skin::prepareSubtitle().
|
||
* RevisionDeleter::checkRevisionExistence was removed without deprecation.
|
||
It had no known callers.
|
||
* wfForeignMemcKey() and wfMemcKey(), deprecated in 1.35, have been removed.
|
||
* MediaWiki now also requires the php-intl extension.
|
||
* BotPassword::save() now returns a Status object for the result rather than
|
||
a bool.
|
||
* The methods in CoreTagHooks have been marked @internal and type hints have
|
||
been added. The methods appeared to be unused outside of MediaWiki core.
|
||
* SquidPurgeClient and SquidPurgeClientPool, deprecated since 1.35, have been
|
||
removed.
|
||
* Several methods on WikiPage will now throw an exception when called on a
|
||
WikiPage instance that where constructed on a title that does not refer to a
|
||
proper page (but rather a special page or interwiki link). The behavior was
|
||
previously undefined and could in some cases lead to data corruption. Affected
|
||
methods are: getId(), insertOn(), newPageUpdater(), doUpdateRestrictions(),
|
||
doDeleteArticleReal(), doRollback(), and doEditContent().
|
||
* The ParserTestRunner no longer invokes the ParserTestTables hook. Instead, it
|
||
clones all database tables before running tests, like MediaWikiIntegrationTest
|
||
does. If an extension was mis-using the hook to *exclude* tables from the
|
||
clone, that will no longer occur, and tests may fail.
|
||
* The following classes, which were only loaded for tests and had no uses found
|
||
in public MediaWiki-related git, were removed:
|
||
- MockWebRequest
|
||
- UserWrapper
|
||
* Passing Title as a second parameter to RevisionStore::getPreviousRevision and
|
||
getNextRevision, hard deprecated since 1.31, was prohibited.
|
||
* (T275619) Maintenance::hasOption and Maintenance::getOption now behave as
|
||
documented and are not altered by previous calls to these methods.
|
||
* The internal class FirejailCommand was removed.
|
||
* Command::execute() now returns a Shellbox\Command\UnboxedResult instead of a
|
||
MediaWiki\Shell\Result. Any type hints should be updated.
|
||
* WikiPage::$mIsRedirect was removed.
|
||
* ObjectCache::detectLocalServerCache(), deprecated in 1.35, was removed.
|
||
* The following functions from the Title class have been removed:
|
||
- countRevisionsBetween
|
||
- getAuthorsBetween
|
||
* The PageProps class was converted to a service. PageProps::overrideInstance
|
||
was removed, and MediaWikiServices::redefineService should be used
|
||
instead.
|
||
* Support for creating a MediaWikiTitleCodec object without the InterwikiLookup
|
||
and NamespaceInfo services, deprecated in 1.34, was removed. Note that the
|
||
MediaWikiTitleCodec class is not @newable or @stable to create, and should
|
||
be retrieved from MediaWikiServices instead.
|
||
* The $wgContLang variable, deprecated in 1.32, was removed. You can instead use
|
||
MediaWikiServices::getInstance()->getContentLanguage().
|
||
* User::clearAllNotifications(), hard deprecated in 1.35, was removed. Use
|
||
WatchlistManager::clearAllUserNotifications() instead.
|
||
* DatabaseBlock::getBlocker can return any UserIdentity instance, not just User.
|
||
* MediaWiki::triggerJobs(), deprecated in 1.34, was removed.
|
||
* The following Article methods, deprecated in 1.35, were removed:
|
||
- checkFlags
|
||
- checkTouched
|
||
- clearPreparedEdit
|
||
- doDeleteUpdates
|
||
- doEditUpdates
|
||
- doPurge
|
||
- doViewUpdates
|
||
- exists
|
||
- followRedirect
|
||
- getAutoDeleteReason
|
||
- getCategories
|
||
- getContentHandler
|
||
- getContentModel
|
||
- getContributors
|
||
- getDeletionUpdates
|
||
- getHiddenCategories
|
||
- getId
|
||
- getLatest
|
||
- getLinksTimestamp
|
||
- getMinorEdit
|
||
- getOldestRevision
|
||
- getRedirectTarget
|
||
- getRedirectURL
|
||
- getRevision
|
||
- getTouched
|
||
- getUndoContent
|
||
- hasViewableContent
|
||
- insertOn
|
||
- insertRedirect
|
||
- insertRedirectEntry
|
||
- isCountable
|
||
- isRedirect
|
||
- loadFromRow
|
||
- loadPageData
|
||
- lockAndGetLatest
|
||
- makeParserOptions
|
||
- pageDataFromId
|
||
- pageDataFromTitle
|
||
- prepareContentForEdit
|
||
- protectDescription
|
||
- protectDescriptionLog
|
||
- replaceSectionAtRev
|
||
- replaceSectionContent
|
||
- setTimestamp
|
||
- shouldCheckParserCache
|
||
- supportsSections
|
||
- triggerOpportunisticLinksUpdate
|
||
- updateCategoryCounts
|
||
- updateIfNewerOn
|
||
- updateRedirectOn
|
||
- updateRevisionOn
|
||
- doUpdateRestrictions
|
||
- updateRestrictions
|
||
- doRollback
|
||
- commitRollback
|
||
- generateReason
|
||
* The monolog-based logging system has dropped the Avro format. Because of this,
|
||
the AvroFormatter class and the AvroValidator utility class have been removed
|
||
without deprecation.
|
||
* AbstractBlock::$mReason, deprecated in 1.34, was removed.
|
||
Use AbstractBlock::getReasonComment and AbstractBlock::setReason instead.
|
||
* …
|
||
|
||
=== Deprecations in 1.36 ===
|
||
* (T245963) User::getGrantName() is now hard deprecated and will be removed in
|
||
a subsequent release. Use MWGrants::grantName() instead.
|
||
* wfIncrStats() is now deprecated. Use MediaWikiServices::getInstance()
|
||
->getStatsdDataFactory()->updateCount() instead.
|
||
* WikiPage::doEditContent() is now deprecated. Use
|
||
WikiPage::doUserEditContent() instead. Note that doEditContent() was also
|
||
deprecated in 1.32 for unrelated reasons and doUserEditContent() is
|
||
deprecated for other reasons, however, using doUserEditContent() is
|
||
recommended over using doEditContent().
|
||
* WikiPage::doUserEditContent() is now deprecated. Use
|
||
PageUpdater::saveRevision instead. Note that the new method expects callers
|
||
to take care of checking EDIT_MINOR against the minoredit right, and to apply
|
||
the autopatrol right as appropriate.
|
||
* LocalFile::recordUpload2, soft deprecated in 1.35, now emits deprecation
|
||
warnings. Use ::recordUpload3 instead.
|
||
* Constructing a new instance of the ParserOptions class without providing
|
||
a User object, which falls back to the global $wgUser, is now deprecated.
|
||
* The User class, which was marked as @newable in 1.35, is no longer newable,
|
||
meaning that it is no longer safe to manually call the constructor via
|
||
`new User`. Instead, use the UserFactory service. Additionally, the
|
||
following static constructor methods were deprecated in favor of using the
|
||
UserFactory service:
|
||
- User::newFromName
|
||
- User::newFromId
|
||
- User::newFromActorId
|
||
- User::newFromIdentity
|
||
- User::newFromAnyId
|
||
- User::newFromConfirmationCode
|
||
* The following User methods have been hard deprecated in favor of the new
|
||
UserEditTracker service:
|
||
- User::getFirstEditTimestamp
|
||
- User::getLatestEditTimestamp
|
||
* The confusingly-named User->isLoggedIn() method has been deprecated in favour
|
||
of the method it wraps, User->isRegistered().
|
||
* Use of the `preprocessor=Preprocessor_DOM` option in parser test files has
|
||
been deprecated. Preprocessor_DOM was removed in 1.35.
|
||
* ParserOptions::setTidy() has been deprecated. It has had no effect since
|
||
1.35.
|
||
* Sanitizer::escapeIdReferenceList() has been deprecated; it will eventually
|
||
be made private to the class, as it appears to have no uses outside the
|
||
Sanitizer class.
|
||
* Sanitizer::hackDocType() is deprecated; it will eventually be made private.
|
||
* Skin::getIndicatorsHTML() is deprecated. The functionality can be retained
|
||
by reimplementing the method using the raw indicators data from
|
||
OutputPage::getIndicators.
|
||
* Skin::makeVariablesScript() has been deprecated. Use
|
||
ResourceLoader::makeInlineScript() instead.
|
||
* Title::nameOf() is deprecated; use Title::newFromID()->getPrefixedDBkey()
|
||
instead.
|
||
* DatabaseBlock::insert, DatabaseBlock::update, DatabaseBlock::purgeExpired and
|
||
DatabaseBlock::delete are deprecated. Use DatabaseBlockStore::insertBlock,
|
||
DatabaseBlockStore::updateBlock, DatabaseBlockStore::purgeExpiredBlocks and
|
||
DatabaseBlockStore::deleteBlock instead.
|
||
* SpecialBlock::getTargetAndType and AbstractBlock::parseTarget are deprecated.
|
||
Call BlockUtils::parseBlockTarget instead.
|
||
* SpecialUnblock::processUnblock was deprecated - use UnblockUserFactory
|
||
service instead.
|
||
* Deprecated MediaWikiIntegrationtestCase::removeTemporaryHook() in favor of
|
||
MediaWikiIntegrationtestCase::clearHook().
|
||
* Skin::getSearchLink(), also exposed as 'searchaction' option in SkinTemplate,
|
||
has been deprecated. Use Title or SpecialPage methods directly.
|
||
* Skin::getAllowedSkins and ::getSkinNames have been deprecated. Use their
|
||
respective equivalents in SkinFactory instead.
|
||
* The RollbackComplete hook has been deprecated, use the PageSaveComplete hook
|
||
instead.
|
||
* Skin::makeUrl() has been deprecated. Title methods should be used instead.
|
||
* Skin::privacyLink(), Skin::disclaimerLink() and Skin::aboutLink() have been
|
||
deprecated. Please use Skin::footerLink() instead.
|
||
* Skin::getLogo() has been deprecated. Use ResourceLoaderSkinModule instead.
|
||
* The module `mediawiki.toc.styles` has been replaced by
|
||
ResourceLoaderSkinModule. If you are having problems styling table of contents
|
||
ensure you have an updated skin.
|
||
* Skin::mainPageLink() has been deprecated. Use LinkRenderer service instead.
|
||
* BaseTemplate::getToolbox() method has been hard deprecated. The toolbox data
|
||
is now available in a sidebar data array which you can get from any class
|
||
that's extending QuickTemplate class.
|
||
* Constructing a DefaultPreferencesFactory, LinkHolderArray or PasswordReset
|
||
without a $hookContainer parameter is deprecated.
|
||
* Autopromote class, soft deprecated since 1.35, now emits deprecation warnings.
|
||
Use UserGroupManager instead.
|
||
* SpecialBlock::canBlockEmail has been deprecated. Please use
|
||
BlockPermissionChecker::checkEmailPermissions instead.
|
||
* SpecialBlock::checkUnblockSelf has been deprecated. Please use
|
||
BlockPermissionChecker::checkBlockPermissions instead.
|
||
* SpecialBlock::parseExpiryInput was deprecated - use
|
||
BlockUser::parseExpiryInput instead.
|
||
* SpecialBlock::validateTarget has been deprecated, use BlockUtils instead.
|
||
* SpecialBlock::validateTargetField has been deprecated for external use,
|
||
use BlockUtils instead.
|
||
* SpecialPage::getLanguageConverter has been deprecated, use
|
||
LanguageConverterFactory::getLanguageConverter() directly.
|
||
* ParserCache::getKey has been deprecated. Use ParserCache::getMetadata and
|
||
ParserCache::makeParserOutputKey instead.
|
||
* The PHPUnit4And6Compat class, used to provide compatibility with PHPUnit 4,
|
||
was removed. MediaWiki support for PHPUnit 4 ended with the removal of HHVM
|
||
support.
|
||
* The PHPUnit6And8Compat class, used to provide compatibility with PHPUnit 6,
|
||
was removed without deprecation. This class was introduced during the
|
||
upgrade to PHPUnit 8, but never used.
|
||
* MediaWikiIntegrationTestCase::assertType, hard-deprecated in 1.35 due to
|
||
incompatibility with PHPUnit 8, was removed.
|
||
* ParserCache::getETag has been deprecated, instead build suitable etag
|
||
explicitly.
|
||
* The following functions from the Language class have been hard deprecated
|
||
and will be removed in a subsequent release:
|
||
- findVariantLink
|
||
- convertTitle
|
||
- updateConversionTable
|
||
- commafy
|
||
* The following functions from the Title class have been hard deprecated:
|
||
- getPreviousRevisionID
|
||
- getNextRevisionID
|
||
- getEarliestRevTime
|
||
* The following functions from the User class have been hard deprecated:
|
||
- getDefaultOptions
|
||
- getDefaultOption
|
||
* The mw.language.commafy client-side method has been deprecated, to match
|
||
the deprecation of Language::commafy. Use mw.language.convertNumber
|
||
instead.
|
||
* Title::isDeleted() and Title::isDeletedQuick() have been deprecated. Please
|
||
use Title::getDeletedEditsCount() and Title::hasDeletedEdits() instead.
|
||
* Article::getContentObject, soft-deprecated since 1.32, was hard-deprecated.
|
||
* WikiRevision::importUpload, soft-deprecated since 1.31, was hard-deprecated.
|
||
* Html::infoBox() has been deprecated. There's no replacement.
|
||
* BagOStuff::makeKeyInternal() usage outside of BagOStuff has been deprecated.
|
||
* BagOStuff::setDebug() is deprecated and calls to it are ignored. Debug logs
|
||
are now unconditionally enabled.
|
||
* The following global functions have been hard deprecated:
|
||
- wfAppendToArrayIfNotDefault
|
||
- wfAcceptToPrefs
|
||
- wfClearOutputBuffers
|
||
- wfConfiguredReadOnlyReason
|
||
- wfDebugMem
|
||
- wfGetPrecompiledData
|
||
- wfNegotiateType
|
||
* BeforeParserFetchTemplateAndtitleHook has been deprecated; replace
|
||
with the new BeforeParserFetchTemplateRevisionRecord hook. (The
|
||
similar ParserFetchTemplateHook was deprecated in 1.35; the new hook
|
||
replaces both.)
|
||
* The InterwikiLoadPrefix hook has been deprecated; it is not compatible
|
||
with future wikitext parsers (which need to enumerate all interwiki
|
||
prefixes). In test cases please use $wgInterwikiCache instead.
|
||
* WikiPage instances should no longer be constructed for titles that do not
|
||
represent editable pages (e.g. special pages). WikiPages were always
|
||
documented to represent "MediaWiki article and history".
|
||
* Skin::getSkinStylePath() has been deprecated. Please replace usages with
|
||
the direct path to the resources.
|
||
* The second argument of EnhancedChangesList::getDiffHistLinks, $query, has
|
||
been deprecated.
|
||
* The ParserTestTables hook has been deprecated; it is no longer necessary
|
||
after a ParserTestRunner refactoring.
|
||
* The following classes have been hard deprecated: CachedAction,
|
||
SpecialCachedPage, CacheHelper, ICacheHelper. They were unused in MediaWiki
|
||
ecosystem, so no replacement was provided.
|
||
* The ProtectionForm::buildForm hook has been deprecated. Please use the
|
||
ProtectionFormAddFormFields hook instead.
|
||
* RevisionStore::newMutableRevisionFromArray has beed hard deprecated. Instead,
|
||
MutableRevisionRecord should be constructed directly via constructor.
|
||
* UserIdentity::getActorId() is deprecated. The actor ID should not be exposed
|
||
to application logic. Storage layer code should use the ActorNormalization
|
||
service for normalizing and denormalizing user names.
|
||
* Constructing a UserIdentityValue with an actor ID as the third parameter is
|
||
deprecated. The parameter should be omitted. Storage layer code should use
|
||
the ActorNormalization service for normalizing and denormalizing user names.
|
||
* Command::cgroup() is deprecated and no longer functional. $wgShellCgroup is
|
||
now implemented as an Executor option.
|
||
* Command::restrict() is deprecated. Instead use the new separate accessors.
|
||
* MWTidy::tidy() is deprecated. Use MediaWikiServices::getTidy()-tidy() instead.
|
||
* TidyDriverBase::supportsValidate() is deprecated; it has always returned
|
||
false since 1.33.
|
||
* WatchedItem::getUser hard-deprecated in favor of ::getUserIdentity.
|
||
* WatchedItemStoreInterface::enqueueWatchlistExpiryJob was hard deprecated in
|
||
favor of the new method maybeEnqueueWatchlistExpiryJob that takes care of
|
||
relevant configuration checks.
|
||
* LogEntry::getPerformer() and its implementations have been hard-deprecated, in
|
||
favor of ::getPerformerIdentity().
|
||
* AuthManager::singleton(), deprecated in 1.35, is hard deprecated. Use
|
||
MediaWikiServices::getAuthManager() instead.
|
||
* User::clearNotification(), deprecated in 1.35, is hard deprecated. Use
|
||
WatchlistManager::clearTitleUserNotification() instead.
|
||
* Passing string to DatabaseBlock::setBlocker was deprecated. Only UserIdentity
|
||
is now allowed.
|
||
* DatabaseBlock constructor 'byText' option was deprecated in favour of 'by'
|
||
option, which now accepts UserIdentity. Passing user ID is deprecated.
|
||
* Parser::getUser was deprecated. Use Parser::getUserIdentity instead.
|
||
* DatabaseBlock::isWhitelistedFromAutoblocks was deprecated. Use
|
||
DatabaseBlock::isExemptedFromAutoblocks instead.
|
||
* User::isIPRange(), deprecated in 1.35, is hard deprecated.
|
||
Use the UserNameUtils service or IPUtils directly.
|
||
* BaseTemplate::getFooterIcons(), deprecated in 1.35, is hard deprecated. Read
|
||
footer icons from template data requested via $this->get('footericons').
|
||
* `box-shadow()` LESS mixin from mediawiki.mixins is deprecated due to updated
|
||
basic browser support. Use unprefixed property `box-shadow:` instead.
|
||
* MergeHistory::checkPermissions was deprecated. Use ::probablyCanMerge or
|
||
::authorizeMerge instead.
|
||
* User::isValidUserName(), deprecated in 1.35, is hard deprecated.
|
||
Use the UserNameUtils service instead.
|
||
* The TitleArrayFromResult hook has been deprecated.
|
||
* The EditPageBeforeEditToolbar hook has been deprecated; it has become
|
||
defunct after the classic edit toolbar was removed. Use one of the many
|
||
other EditPage hooks instead.
|
||
* Deprecated the class name MediaWiki\User\WatchlistNotificationManager; use
|
||
MediaWiki\Watchlist\WatchlistManager instead. Deprecated the method
|
||
MediaWikiServices->getWatchlistNotificationManager(); use
|
||
MediaWikiServices->getWatchlistManager() instead.
|
||
* …
|
||
|
||
=== Other changes in 1.36 ===
|
||
* The 'tidy' key in ParserOptions (used in the parser cache) has been removed.
|
||
It has had no effect since 1.35.
|
||
* A future release of MediaWiki will make `{{=}}` a built-in parser function,
|
||
for use when automatically escaping the `=` character in template arguments.
|
||
A tracking category and parser warning have been added to this release when
|
||
`{{=}}` is used and it expands to something other than `=`.
|
||
* The implementation of TestFileReader::read has been changed to use Parsoid's
|
||
parser test file parser. This should be compatible with existing code, but it
|
||
only supports version 2 of the test file specification and may be more strict
|
||
when parsing invalid input, including duplicate tests.
|
||
* BeforeParserFetchTemplateRevisionRecord, a new hook, unifies and replaces the
|
||
old BeforeParserFetchTemplateAndtitleHook and ParserFetchTemplateHook.
|
||
* The SkinLessImportPaths attribute was added, allowing skins to add a directory
|
||
to the import path for LESS stylesheets. Skins can use this to provide a
|
||
custom version of mediawiki.skin.variables.less, setting skin-specific values
|
||
for certain LESS variables.
|
||
* The interaction between ContentHandler::getParserOutputForIndexing() and
|
||
ContentHandler::getDataForSearchIndex() has been clarified (the latter should
|
||
only be called with the result of the former). Extensions may override
|
||
getParserOutputForIndexing() to skip generating HTML, which may improve
|
||
indexing performance. (The default implementation still generates HTML, and
|
||
getDataForSearchIndex() implementations can still rely on it if they do not
|
||
over-ride getParserOutputForIndexing().)
|
||
* Article::fetchContentObject, ::mContentObject, ::mContentLoaded,
|
||
::mRevIdFetched, all deprecated since 1.32, were removed.
|
||
* Article::mParserOptions and ::setParserOptions were removed.
|
||
* Article and ImagePage::getEmptyPageParserOutput, unused, were removed.
|
||
* ParserCache's default serialization format was changed from PHP serialization
|
||
to JSON serialization. In case some installed extension do not support JSON
|
||
yet, $wgParserCacheUseJson can be used to revert back to PHP serialization.
|
||
* PermissionManager::groupHasPermission, ::getGroupPermissions and
|
||
::getGroupsWithPermission were deprecated, use GroupPermissionsLookup
|
||
service instead.
|
||
* WatchedItemStoreInterface now accepts PageIdentity where it accepted
|
||
LinkTarget, calling with LinkTarget was deprecated.
|
||
* 'movable' attribute has been added to the 'namespaces' property of
|
||
extension.json schema. Extensions that define namespaces can set it to
|
||
`false` to disallow moving pages in the specified namespace. Extensions
|
||
should either use this or NamespaceIsMovableHook, but not both. The hook
|
||
overides the attribute.
|
||
|
||
== Compatibility ==
|
||
|
||
MediaWiki 1.36 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 ==
|
||
There's usually someone online in #mediawiki on irc.freenode.net.
|