* Add HttpRequestFactory::createMultiClient(), which returns a MultiHttpClient with configured defaults applied. This is similar to the recently-deprecated Http::createMultiClient(). * Introduce $wgHTTPMaxTimeout and $wgHTTPMaxConnectTimeout which, if set to a lower value than their defaults of infinity, will limit the applied HTTP timeouts, whether configured or passed on a per-request basis. This is based on the frequently correct assumption that ops know more about timeouts than developers. * In case developers believe, after becoming aware of this new situation, that they actually do know more about timeouts than ops, it is possible to override the configured maximum by passing similarly named options to HttpRequestFactory::createMultiClient() and HttpRequestFactory::create(). * Apply modern standards to HttpRequestFactory by injecting a logger and all configuration parameters used by its backends. * As in Http, the new createMultiClient() will use a MediaWiki/1.35 User-Agent and the 'http' channel for logging. * Document that no proxy will be used for createMultiClient(). Proxy config is weird and was previously a good reason to use MultiHttpClient over HttpRequestFactory. * Deprecate direct construction of MWHttpRequest without a timeout parameter Bug: T245170 Change-Id: I8252f6c854b98059f4916d5460ea71cf4b580149
1127 lines
59 KiB
Text
1127 lines
59 KiB
Text
= MediaWiki 1.35 =
|
||
|
||
== MediaWiki 1.35.0-PRERELEASE ==
|
||
|
||
THIS IS NOT A RELEASE YET
|
||
|
||
MediaWiki 1.35 is an alpha-quality development branch, and is not recommended
|
||
for use in production.
|
||
|
||
== Upgrading notes for 1.35 ==
|
||
1.35 requires PHP 7.2.22 or above (up from 7.2.9), to avoid segfaults (T228346).
|
||
|
||
1.35 has several database changes since 1.34, and will not work without schema
|
||
updates. Note that due to changes to some very large tables like the revision
|
||
table, the schema update may take quite long (minutes on a medium sized site,
|
||
many hours on a large site).
|
||
|
||
Don't forget to always back up your database before upgrading!
|
||
|
||
See the file UPGRADE for more detailed upgrade instructions, including
|
||
important information when upgrading from versions prior to 1.11.
|
||
|
||
Some specific notes for MediaWiki 1.35 upgrades are below:
|
||
|
||
* …
|
||
|
||
For notes on 1.34.x and older releases, see HISTORY.
|
||
|
||
=== Configuration changes for system administrators in 1.35 ===
|
||
|
||
…
|
||
|
||
==== New configuration ====
|
||
* $wgDiffEngine can be used to specify the difference engine to use, rather
|
||
than choosing the first of $wgExternalDiffEngine, wikidiff2, or php that
|
||
is usable.
|
||
* $wgSearchMatchRedirectPreference – This configuration setting controls whether
|
||
users can set a new preference, search-match-redirect, which decides if search
|
||
should redirect them to exact matches is available. By default, this is set to
|
||
false, which maintains the previous behaviour without preference bloat. Change
|
||
your site's default by setting $wgDefaultUserOptions['search-match-redirect'].
|
||
* Per-user concurrency in SpecialContributions can now be limited by setting
|
||
$wgPoolCounterConf['SpecialContributions'] appropriately.
|
||
* Added new PasswordPolicyCheck: PasswordCannotBeSubstringInUsername. Similar
|
||
to the existing PasswordCannotMatchUsername check, this check ensures that
|
||
a user's (case-insensitive) password cannot be a part of their username.
|
||
e.g. password = MyPassword, username = ThisUsersPasswordIsMyPassword.
|
||
* $wgLogos – This new configuration setting combines the now-deprecated $wgLogo
|
||
and $wgLogoHD settings into a single, associative array. It provides support
|
||
for a new key, 'wordmark', for setting a horizontal wordmark to show next to
|
||
the graphical logo. To do this, set 'wordmark' to an array with 'src' set to
|
||
the path of the wordmark image, and 'width' and 'height' for its dimensions
|
||
in pixels. $wgLogos inherits the existing support provided by its predecessor
|
||
settings: '1x' mapping to the path of the logo as a 135x135px raster image
|
||
(equivalent to $wgLogo), and '1.5x', '2x', and 'svg' operating as before for
|
||
$wgLogoHD. If $wgLogos is unset, $wgLogo and $wgLogoHD values are read for
|
||
temporary backwards compatibility. (T232140)
|
||
* $wgWatchlistExpiry — Whether to enable the watchlist expiry feature. The
|
||
database table (watchlist_expiry) for this is created regardless of this
|
||
setting, but all other aspects of the expiry feature are controlled by it.
|
||
* $wgWatchlistPurgeRate — Chance of expired watchlist items being purged on any
|
||
page edit. Only has effect if $wgWatchlistExpiry is true.
|
||
* $wgImgAuthPath can be used to override the path prefix used when handling
|
||
img_auth.php requests. (T235357)
|
||
* $wgAllowedCorsHeaders — list of headers which can be used in a cross-site API
|
||
request.
|
||
* Added $wgHTTPMaxTimeout and $wgHTTPMaxConnectTimeout, which allow site
|
||
administrators to limit the timeouts used by the HTTP client libraries.
|
||
This only affects callers using HttpRequestFactory and the deprecated
|
||
wrappers in the Http class.
|
||
* …
|
||
|
||
==== Changed configuration ====
|
||
* $wgResourceLoaderMaxage (T235314) - This configuration array controls the
|
||
max-age for HTTP caching through the Cache-Control header. It has uses the
|
||
"versioned" key for urls that do have a version parameter, and the
|
||
"unversioned" key for urls without a version parameter. The sub keys for
|
||
"client" and "server" are no longer supported in MediaWiki 1.35.
|
||
* $wgEnableOpenSearchSuggest - This boolean variable is deprecated and no longer
|
||
used. The OpenSearch API is now always enabled.
|
||
* $wgAuthManagerConfig and $wgAuthManagerAutoConfig can now use the 'services'
|
||
option in provider specifications.
|
||
* The 'URL' parameter to $wgVirtualRestConfig['modules']['parsoid'], previously
|
||
allowed for backwards-compatibility, has been deprecated. Use 'url' instead.
|
||
* Article::$mContext, use getContext()/setContext()
|
||
* Article::__get(), ::__set() hard deprecated, use WikiPage property instead
|
||
* Article::checkFlags(), ::checkTouched(), ::clearPreparedEdit(), ::exists(),
|
||
::doDeleteArticleReal(), ::doEditContent(), ::doPurge(), ::doViewUpdates(),
|
||
::followRedirect(), ::getContentHandler(), ::getId(), ::hasViewableContent()
|
||
::getContentModel(), ::getContributors(), ::getLatest(),::getMinorEdit(),
|
||
::getHiddenCategories(), ::getLinksTimestamp(), ::getDeletionUpdates(),
|
||
::getRedirectTarget(), ::getRedirectURL(), ::getTimestamp(), ::getTouched(),
|
||
::insertRedirect(), ::insertRedirectEntry(), ::isCountable(), ::isRedirect(),
|
||
::loadFromRow(), ::loadPageData(), ::lockAndGetLatest(), ::setTimestamp(),
|
||
::makeParserOptions(), ::updateCategoryCounts(), ::protectDescriptionLog(),
|
||
::protectDescription(), ::replaceSectionAtRev(), ::pageDataFromTitle(),
|
||
::shouldCheckParserCache(), ::supportsSections(), ::prepareContentForEdit(),
|
||
::triggerOpportunisticLinksUpdate(), ::pageDataFromId(), ::commitRollback(),
|
||
::updateRedirectOn(), ::doUpdateRestrictions(), ::insertOn(), ::doRollback()
|
||
hard deprecated, use corresponding methods of the WikiPage class instead
|
||
* Article::generateReason() hard deprecated,
|
||
use \Article::getPage()->getAutoDeleteReason() instead
|
||
* Article::replaceSectionContent() hard deprecated,
|
||
use ::replaceSectionAtRev instead
|
||
* The defaults for $wgVirtualRestConfig['modules']['parsoid'] have been
|
||
updated. If you were relying on the default values, you may need to update
|
||
your configuration.
|
||
* Set $wgXmlDumpSchemaVersion to XML_DUMP_SCHEMA_VERSION_11, so dumps use the
|
||
new dump format per default. Consumers of XML dumps should not be affected if
|
||
they ignore any unknown tags they encounter. Also, the format is effectively
|
||
unchanged for revisions that only contain the main slot. The --schema-version
|
||
option can be used with the dumpBackup.php script to set the dump format.
|
||
(T238921)
|
||
* $wgParserConf - This configuration is now deprecated. It has been
|
||
effectively constant since 2008, and is ignored by core code.
|
||
Configure the ParserFactory service in order to customize the Parser used.
|
||
* …
|
||
|
||
==== Removed configuration ====
|
||
* $wgSysopEmailBans — This setting, deprecated in 1.34, was removed. To let
|
||
sysops block email access, use $wgGroupPermissions['sysop']['blockemail'].
|
||
* $wgDBWindowsAuthentication — This setting had no effect anymore after support
|
||
for SQL Server was removed in 1.34. (T230418)
|
||
* $wgProfileOnly — This setting, deprecated in 1.23, was removed. The profiler
|
||
output should instead be configured via $wgProfiler['output'].
|
||
* $wgProfileLimit - This setting, deprecated in 1.25, was removed.
|
||
Set $wgProfiler['threshold'] instead.
|
||
* $wgDebugTimestamps - This setting was removed. It affected the text output
|
||
produced via $wgDebugComments, if enabled.
|
||
* $wgSkipSkin - This setting, deprecated in 1.23, was removed. To disable a
|
||
skin from being shown, use $wgSkipSkins.
|
||
* $wgUseSquid, $wgSquidServers, $wgSquidServersNoPurge, and $wgSquidMaxage,
|
||
deprecated in 1.34, have been removed. Use $wgUseCdn, $wgCdnServers,
|
||
$wgCdnServersNoPurge, or $wgCdnMaxAge instead.
|
||
* $wgDisableCounters, deprecated in 1.25, was removed. The feature that it
|
||
controlled was already removed in 1.26, but the variable remained existent
|
||
with a value of `false` for backward-compatibility.
|
||
* $wgMaxGeneratedPPNodeCount - This setting was removed. It only affected
|
||
Preprocessor_DOM, which was deprecated in 1.34 and removed in this release.
|
||
* $wgFixArabicUnicode and $wgFixMalayalamUnicode, deprecated in 1.33, were
|
||
removed. The fixes are now always enabled for their respective languages.
|
||
* $wgAllowTitlesInSVG, unused and deprecated since 1.34, was removed.
|
||
* $wgEnablePartialBlocks - This setting, deprecated when it was added in 1.33,
|
||
was removed. Partial blocks are now always enabled.
|
||
* $wgLocalInterwiki, deprecated in 1.23 has been removed.
|
||
* $wgContentHandlerUseDB — This setting, deprecated in 1.34, has been removed.
|
||
* $wgMultiContentRevisionSchemaMigrationStage — This setting must no longer
|
||
be set locally. If the migration stage was set to anything other than
|
||
SCHEMA_COMPAT_NEW locally, update.php must be run after removing the setting.
|
||
Usage of the setting in code is deprecated. The setting will be removed
|
||
completely in 1.36.
|
||
* …
|
||
|
||
=== New user-facing features in 1.35 ===
|
||
* (T204618) Whitelisted the aria-hidden HTML attribute for all elements in
|
||
wikitext.
|
||
* (T13456) Special:EditPage, Special:PageHistory, Special:PageInfo, and
|
||
Special:Purge have been created as shortcuts for each action.
|
||
Special:EditPage/Foo redirects to title=foo&action=edit, with PageHistory,
|
||
PageInfo, and Purge corresponding to action= history, info, and purge
|
||
respectively. When linked to, its subpage is used as the target. Otherwise,
|
||
it displays a basic interface to allow the end user to specify the target
|
||
manually.
|
||
* (T139221) The generated table of contents is now a navigation landmark role
|
||
for assistive technologies.
|
||
* (T245931) interwiki map API doesn't report foreign language if
|
||
$wgInterwikiMagic=false
|
||
* The form at ?action=watch has a new dropdown list to support expiry dates for
|
||
watchlist items (if $wgWatchlistExpiry is true).
|
||
* …
|
||
|
||
=== New developer features in 1.35 ===
|
||
* A Docker based local development develpoment environment configuration is
|
||
included (T238224) and DEVELOPERS.md has been added with usage documentation
|
||
and links to further help.
|
||
* If CSP is enabled, extensions can now add additional sources using the
|
||
ContentSecurityPolicy::addDefaultSource, ::addStyleSrc and ::addScriptSrc
|
||
methods (e.g. $context->getOutput()->getCSP()->addDefaultSrc( 'example.com' ))
|
||
* Extensions can now specify classes and namespaces to be autoloaded by the
|
||
test autoloader, by setting the "TestAutoloadNamespaces" and
|
||
"TestAutoloadClasses" properties in extension.json. (T196090)
|
||
* (T250977) extension.json now allows "SearchMappings" which maps the canonical
|
||
name of the search engine (used in wgSearchType and wgSearchTypeAlternatives)
|
||
to a specification using the ObjectFactory specification. This allows
|
||
extensions to register Search Engines using namespaced classes.
|
||
* Added getters for OutputPage's robot, index and follow policies;
|
||
getRobotPolicy() returns the entire policy as a string in the form
|
||
<index policy>,<follow policy> while getIndexPolicy() and getFollowPolicy()
|
||
return their respective policies as a string.
|
||
* The ResourceLoaderSiteModulePages and ResourceLoaderSiteStylesModulePages
|
||
hooks were added to allow changing which wiki pages these modules contain.
|
||
* The SkinFactory now allows skins to be specified as an ObjectFactory spec,
|
||
allowing the construction of skins with services injected.
|
||
* ContentHandlerFactory for most ContentHandler static methods. It has been
|
||
added to the constructors for many classes to improve SOLID / GRASP.
|
||
* FileDeleteForm's constructor now accepts a user as the second parameter.
|
||
Support for not passing a user has also been hard-deprecated and will be
|
||
removed in 1.36.
|
||
* The ParserPreSaveTransformComplete hook was added.
|
||
* The ParserBeforePreprocess hook was added.
|
||
* The ResourceLoaderSkinModule class now has a "legacy" feature that loads
|
||
the stylesheets previously part of the "mediawiki.legacy.shared" and
|
||
"mediawiki.legacy.commonPrint" module.
|
||
Those modules are now deprecated and no longer loaded by skins.
|
||
For skins needing to retain these styles, you will need to load these
|
||
styles via a module using the ResourceLoaderSkinModule class.
|
||
See Vector and Monobook for examples.
|
||
* ParserOutput now has methods addExtraCSPStyleSrc, addExtraCSPDefaultSrc
|
||
addExtraCSPScriptSrc for parser tags/functions to be able to add sources
|
||
to the Content Security Policy.
|
||
* The HtmlCacheUpdater service was added to unify the logic of purging CDN cache
|
||
and HTML file cache to simplify callers and make them more consistent.
|
||
* The MultiHttpClient code will fallover to non-curl if curl_multi* is blocked.
|
||
* Preferences which use HTMLTitlesMultiselectField can make use of
|
||
MultiTitleFilter class for saving title text to/from article IDs in user
|
||
preferences.
|
||
* OutputPage::addHtmlClasses() was added to allow injecting CSS classes on
|
||
to the <html> element on page load.
|
||
* The SkinAddFooterLinks hook is added to allow extensions to add items to skin
|
||
footers. Previously this had to be done via SkinTemplateOutputPageBeforeExec.
|
||
Doing so using that hook is now soft deprecated.
|
||
* …
|
||
|
||
=== External library changes in 1.35 ===
|
||
* …
|
||
|
||
==== New external libraries ====
|
||
* Added doctrine/dbal 2.10.2 (dev-only).
|
||
* Added wikimedia/ip-utils 1.0.0.
|
||
* Added vuejs v2.6.11.
|
||
* Added wikimedia/parsoid 0.12.0.
|
||
* Added taylorhakes/promise-polyfill v8.1.3.
|
||
* Added vuex v3.1.3.
|
||
* Added doctrine/sql-formatter 1.0.0 (dev-only).
|
||
* …
|
||
|
||
==== Changed external libraries ====
|
||
* symfony/yaml was upgraded from 3.4.28 to 5.0.5 (dev-only).
|
||
* pear/mail_mime was upgraded from 1.10.2 to 1.10.7.
|
||
* wikimedia/less.php was upgraded from 1.8.0 to 3.0.0.
|
||
* Updated oojs from 3.0.0 to 5.0.0.
|
||
* Updated OOUI from 0.35.1 to 0.39.0.
|
||
* zordius/lightncandy was upgraded from 0.23.0 to 1.2.5.
|
||
* Updated nikic/php-parser from 3.1.5 to 4.4.0 (dev-only).
|
||
* Updated jQuery from v3.3.1 to v3.4.1.
|
||
* Updated jQuery Migrate from v3.0.1 to v3.1.0.
|
||
* Updated jakub-onderka/php-console-highlighter from v0.3.2 to v0.4 (dev-only).
|
||
* Updated wikimedia/assert from 0.2.2 to 0.5.0.
|
||
* Updated psy/psysh from 0.9.9 to 0.10.3 (dev-only).
|
||
* Updated pear/net_smtp from 1.8.1 from to 1.9.0.
|
||
* Updated psr/log from 1.0.2 to 1.1.3.
|
||
* Updated monolog/monolog from 1.24.0 to 1.25.2 (dev-only).
|
||
* Updated jquery.i18n from 1.0.5 to 1.0.7.
|
||
* Upgrade mediawiki-codesniffer from 28.0.0 to 30.0.0 (dev-only).
|
||
* Updated composer/spdx-licenses from 1.5.1 to 1.5.2 (dev-only).
|
||
* Updated guzzlehttp/guzzle from 6.3.3 to 6.5.3.
|
||
* Updated monolog/monolog from 1.25.2 to 1.25.3 (dev-only).
|
||
* Updated wikimedia/xmp-reader from 0.6.3 to 0.7.0.
|
||
Fixes error log spam with too-large XMP data, and adds support for GPano tags.
|
||
* Updated qunit from 2.9.1 to 2.10.0 (dev-only).
|
||
* Updated wikimedia/base-convert from v2.0.0 to v2.0.1.
|
||
* Updated composer/semver from 1.5.0 to 1.5.1.
|
||
* Updated wikimedia/remex-html from 2.1.0 to 2.2.0.
|
||
* …
|
||
|
||
==== Removed external libraries ====
|
||
* phpunit/php-invoker (dev-only).
|
||
Removing this unbreaks development on Windows systems, in exchange for losing
|
||
time limits in running unit tests.
|
||
* The jquery.getAttrs module was removed.
|
||
* …
|
||
|
||
=== Bug fixes in 1.35 ===
|
||
* …
|
||
|
||
=== Action API changes in 1.35 ===
|
||
* The 'suggest' parameter of action=opensearch has been deprecated.
|
||
The API behaves the same with and without this parameter.
|
||
It was previously used by $wgEnableOpenSearchSuggest to partially
|
||
disable the API if set to false. Specifically, it would deny internal
|
||
frontend requests carrying this parameter, whilst accepting other requests.
|
||
* Integer-type parameters are now validated for syntax rather than being
|
||
interpreted in surprising ways. For example, the following will now return a
|
||
badinteger error:
|
||
- "1.9" (formerly interpreted as "1")
|
||
- " 1" (formerly interpreted as "1")
|
||
- "1e1" (formerly interpreted as "1" or "10", depending on the PHP version)
|
||
- "1foobar" (formerly interpreted as "1")
|
||
- "foobar" (formerly intepreted as "0")
|
||
parameters. Ranges should be assumed to be enforced.
|
||
* Many user-type parameters now accept a user ID, formatted like "#12345".
|
||
* The 'assert' parameter used by all API modules now supports the value 'anon'.
|
||
When specified, the API will return the 'assertanonfailed' error if the user
|
||
is logged in.
|
||
* action=edit now supports the 'baserevid' parameter for edit conflict
|
||
detection, as an alternative to 'basetimestamp'. Note that self-conflicts
|
||
will continue to be ignored if 'basetimestamp' is set, but not if only
|
||
'baserevid' is set.
|
||
* A new module was added to change the content model of existing pages.
|
||
Use action=changecontentmodel. Unlike Special:ChangeContentModel, the api
|
||
module does not work for pages that do not already exist.
|
||
* If $wgWatchlistExpiry is true, the following API changes are made:
|
||
- action=watch accepts a new 'expiry' parameter analagous to the expiry
|
||
accepted by action=userrights, action=block, etc.
|
||
- action=query&list=watchlistraw returns pages' watchlist expiry dates.
|
||
* (T249526) action=login will now return Failed rather than NeedToken on
|
||
session loss.
|
||
* …
|
||
|
||
=== Action API internal changes in 1.35 ===
|
||
* The Action API now uses the Wikimedia\ParamValidator library for parameter
|
||
validation, which brings some new features and changes. For the most part
|
||
existing module code should work as it did before, but see subsequent notes
|
||
for changes.
|
||
- The values for all ApiBase PARAM_* constants have changed. Code should have
|
||
been using the constants rather than hard-coding the values.
|
||
- Several ApiBase PARAM_* constants have been deprecated, see the in-class
|
||
documentation for details. Use the equivalent ParamValidator constants
|
||
instead.
|
||
- The value returned for 'upload'-type parameters has changed from
|
||
WebRequestUpload to Psr\Http\Message\UploadedFileInterface.
|
||
* Validation of 'user'-type parameters is more flexible. PARAM constants exist
|
||
to specify the type of "user" allowed and to request UserIdentity objects
|
||
rather than name strings. The default is to accept all types (name, IP,
|
||
range, and interwiki) that were formerly accepted.
|
||
* Maximum limits are no longer ignored in "internal mode".
|
||
* The $paramName to ApiBase::handleParamNormalization() should now include the
|
||
prefix.
|
||
* (T245931) meta=siteinfo&siprop=interwikimap no longer reports language or
|
||
extralanglink when $wgInterwikiMagic is false.
|
||
* …
|
||
|
||
=== Languages updated in 1.35 ===
|
||
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.
|
||
|
||
* The default targets for the ISBN search from Special:BookSources in English
|
||
have been updated for better international suppport. They will now be
|
||
BetterWorldBooks.com, OpenLibrary.org and Worldcat.org.
|
||
* (T237672) Changed the Moroccan Arabic language (ary) to the Arabic script.
|
||
* (T201269) Added language support for Amis (ami).
|
||
* (T248299) Added language support for Inari Sami (smn).
|
||
* (T251369) Added language support for Ladin (lld).
|
||
* (T251369) Added language support for Seediq (trv), also known as Taroko.
|
||
* …
|
||
|
||
=== Breaking changes in 1.35 ===
|
||
* MediaWiki now requires PHP 7.2.22 or above, to avoid segfaults (T228346).
|
||
* ResourceLoader::getLessVars(), deprecated in 1.32, was removed.
|
||
Use ResourceLoaderModule::getLessVars() instead.
|
||
* The jquery.tabIndex module, deprecated in 1.34, has been removed.
|
||
* The mediawiki.RegExp module alias, deprecated in 1.34, was removed.
|
||
Use the mediawiki.util module instead.
|
||
* The easy-deflate.inflate module, unused since 1.32, was removed.
|
||
* The easy-deflate.deflate module was removed. Use the mediawiki.deflate
|
||
module instead.
|
||
* (T219604) The "jquery.ui.*" and "jquery.effects.*" module aliases,
|
||
deprecated in 1.34, have been removed. Use "jquery.ui" instead.
|
||
* (T235457) The "user.tokens" module has been removed.
|
||
Use "user.options" instead.
|
||
* The internal variable $constructorOptions for the Parser & SpecialPageFactory,
|
||
exposed only for integration purposes, are now each replaced by a const called
|
||
CONSTRUCTOR_OPTIONS. This was a breaking change made without deprecation.
|
||
* ObjectCache::getWANInstance, deprecated in 1.34, was removed.
|
||
Use MediaWikiServices::getMainWANObjectCache instead.
|
||
* ObjectCache::newWANCacheFromParams, deprecated in 1.34, was removed.
|
||
Construct WANObjectCache directly instead, or use MediaWikiServices.
|
||
* (T231366) The ProfilerOutputDb class and profileinfo.php entry point,
|
||
deprecated in 1.34, was removed.
|
||
* SiteConfiguration->localVHosts, deprecated in 1.25, was removed.
|
||
Use $wgLocalVirtualHosts instead.
|
||
* The $wgContLanguageCode read-only variable was removed.
|
||
It has been a non-configurable copy of $wgLanguageCode since MW 1.8 (2006).
|
||
Use $wgLanguageCode directly instead.
|
||
* ApiQueryUserInfo::getBlockInfo, deprecated in 1.34, was removed. Use
|
||
ApiBlockInfoTrait::getBlockDetails instead.
|
||
* Password::equals(), deprecated in 1.33, was removed. Use Password::verify().
|
||
* QuickTemplate::setRef(), deprecated in 1.31, was removed. Use set().
|
||
* The mediawiki.ui.text module, deprecated in 1.28 and unused, was removed.
|
||
* AbstractBlock::mReason, deprecated in 1.34, is no longer public.
|
||
* The GetBlockedStatus and UserIsHidden, deprecated in 1.34, has been removed.
|
||
Instead, use the GetUserBlock hook.
|
||
* As part of work to replace the Parser, a large number of breaking changes have
|
||
been made, principally in related methods and properties being removed or made
|
||
private:
|
||
- disableCache(), deprecated in 1.28.
|
||
- serializeHalfParsedText() and the helpers unserializeHalfParsedText(),
|
||
isValidHalfParsedText(), and StripState::getSubState() and
|
||
StripState::merge(), all deprecated in 1.31. The helper functions
|
||
LinkHolderArray::mergeForeign() and LinkHolderArray::getSubArray()
|
||
were also removed.
|
||
- getConverterLanguage(), deprecated in 1.32. Use getTargetLanguage() instead.
|
||
- A large set of methods exposed only for historical reasons, deprecated in
|
||
1.34, have now been removed or made private:
|
||
- areSubpagesAllowed()
|
||
- armorLinks()
|
||
- createAssocArgs()
|
||
- doAllQuotes()
|
||
- doDoubleUnderscore()
|
||
- doHeadings()
|
||
- doMagicLinks()
|
||
- formatHeadings()
|
||
- getImageParams()
|
||
- getVariableValue()
|
||
- initialiseVariables()
|
||
- makeKnownLinkHolder()
|
||
- maybeDoSubpageLink()
|
||
- parseLinkParameter()
|
||
- replaceExternalLinks()
|
||
- replaceInternalLinks()
|
||
- replaceInternalLinks2()
|
||
- replaceLinkHoldersText().
|
||
- splitWhitespace()
|
||
- stripAltText()
|
||
- testPreprocess()
|
||
- testPst()
|
||
- testSrvus()
|
||
- incrementIncludeSize(), setTransparentTagHook(), replaceTransparentTags(),
|
||
and $mTransparentTagHooks have been removed without deprecation.
|
||
- The following constants have been made private without deprecation:
|
||
- ::EXT_LINK_ADDR
|
||
- ::EXT_IMAGE_REGEX
|
||
- ::SPACE_NOT_NL
|
||
- The following properties have been removed without deprecation:
|
||
- ::$mDefaultStripList
|
||
- ::$mIncludeCount
|
||
- ::$mRevIdForTs
|
||
- The following properties have been made private without deprecation:
|
||
- ::$mFunctionSynonyms
|
||
- ::$mFunctionTagHooks
|
||
- ::$mStripList
|
||
- ::$mVarCache
|
||
- ::$mImageParams
|
||
- ::$mImageParamsMagicArray
|
||
- ::$mSubstWords
|
||
- ::$mVariables
|
||
- ::$mConf (deprecated in 1.34)
|
||
- ::$mExtLinkBracketedRegex
|
||
- ::$mUrlProtocols
|
||
- ::$mAutonumber
|
||
- ::$mLinkHolders
|
||
- ::$mDefaultSort
|
||
- ::$mTplRedirCache
|
||
- ::$mForceTocPosition
|
||
- ::$mTplDomCache
|
||
- ::$mOutputType
|
||
- ::$mLangLinkLanguages
|
||
- ::$currentRevisionCache
|
||
- ::$mProfiler
|
||
- ::$mLinkRenderer
|
||
- Parser::getTitle() will now throw a TypeError if $mTitle is uninitialized.
|
||
This use pattern was deprecated in 1.34.
|
||
- ContentHandler::makeParserOptions(), deprecated in 1.32, was removed. Use
|
||
WikiPage::makeParserOptions() or ParserOptions::newCanonical() instead.
|
||
- The ParserAfterUnstrip hook, believed to be unused, was removed without
|
||
deprecation.
|
||
- Preprocessor_DOM and related classes, deprecated in 1.34, have been removed.
|
||
Consequently, the related ParserOptions::getMaxGeneratedPPNodeCount() and
|
||
::setMaxGeneratedPPNodeCount() have been removed without deprecation.
|
||
- The support for the old signature for ParserFactory::__construct, which was
|
||
deprecated in 1.34, has been removed.
|
||
- Parser::getDefaultPreprocessorClass(), deprecated in 1.34, has been removed.
|
||
* MediaWikiTestCase::prepareServices(), deprecated in 1.32, has been removed
|
||
* The method ContentHandler::getSlotDiffRendererInternal is replaced with
|
||
ContentHandler::getSlotDiffRendererWithOptions. This breaks consumers which
|
||
call parent::getSlotDiffRendererInternal (no instances of which are known).
|
||
* TextContent::getHighlightHtml, deprecated since 1.24, has been removed. Use
|
||
TextContent::getHtml instead.
|
||
* ExtensionRegistry::load(), deprecated in 1.34, was removed. Instead, use
|
||
ExtensionRegistry::queue().
|
||
* MWMessagePack class, deprecated in 1.34, was removed.
|
||
* The cdb.php maintenance script was removed. Use the 'cdb' command from the
|
||
wikimedia/cdb library instead.
|
||
* User::addNewUserLogEntryAutoCreate, deprecated in 1.27, was removed.
|
||
* FileBasedSiteLookup class, deprecated in 1.33, was removed.
|
||
* The wfGlobalCacheKey global function, deprecated in 1.30, was removed.
|
||
* The APCBagOStuff class was removed. MediaWiki requires PHP 7.2+ (support
|
||
for HHVM was dropped) and these versions of PHP only support apcu. The default
|
||
"apc" entry in $wgObjectCaches now refers to APCUBagOStuff.
|
||
* Database::bufferResults(), deprecated in 1.34, has been removed.
|
||
* CannotReplaceActiveServiceException, ContainerDisabledException,
|
||
DestructibleService, NoSuchServiceException, SalvageableService,
|
||
ServiceAlreadyDefinedException, ServiceContainer and ServiceDisabledException
|
||
in the global namespace, deprecated in 1.33, were removed. Use the classes in
|
||
the MediaWiki\\Services namespace instead.
|
||
* The following methods in the Interwiki class were removed: ::fetch(),
|
||
::isValidInterwiki(), ::invalidateCache(), and ::getAllPrefixes().
|
||
* The UsersMultiselectWidget config 'allowArbitrary' is now false by default. To
|
||
accept arbitrary entries, pass in true for this config.
|
||
* OutputPage::parse() and OutputPage::parseInline(), deprecated in 1.32, have
|
||
been removed. Use ::parseAsContent() or ::parseAsInterface(), as
|
||
appropriate.
|
||
* WikiPage::selectFields, deprecated in 1.31, was removed. Use ::getQueryInfo.
|
||
* The remaining static methods for MagicWord, deprecated in 1.32, were removed.
|
||
These were MagicWord::get(), ::getSubstIDs(), ::getDoubleUnderscoreArray(),
|
||
::getVariableIDs(), and ::getCacheTTL(). Instead, use MagicWordFactory (via
|
||
MediaWikiServices).
|
||
* ApiBase::checkTitleUserPermissions no longer accepts a User as the third
|
||
parameter. Passing a user was deprecated in 1.33.
|
||
* Sanitizer::setupAttributeWhitelist() and Sanitizer::attributeWhitelist(),
|
||
deprecated in 1.34, have been removed. They should not have been public.
|
||
* SpecialRecentChanges::filterByCategories(), deprecated in 1.31, was removed.
|
||
* The `ArticleContentViewCustom` hook, deprecated in 1.32, was removed.
|
||
* AuthManager::callLegacyAuthPlugin, deprecated in 1.33, was removed.
|
||
* wfGetMessageCacheStorage was removed without deprecation.
|
||
* Title::moveSubpages, deprecated in 1.34, was removed. Use the MovePage class
|
||
and MovePage::moveSubpages instead.
|
||
* Article::doEditContent, deprecated in 1.29, was removed. Instead, use
|
||
WikiPage::doEditContent.
|
||
* CommentStore::newKey, deprecated in 1.31, was removed.
|
||
* Title::isValidMoveOperation, ::moveTo, and ::isValidMoveTarget, deprecated
|
||
in 1.25, were removed. Use the MovePage class and its methods instead.
|
||
* Title::getUserCaseDBKey(), deprecated in 1.33, was removed. Use ::getDBkey().
|
||
* StringUtils::explodeMarkup() was removed without deprecation.
|
||
* AjaxResponse methods that were unused have been removed without deprecation:
|
||
- checkLastModified
|
||
- loadFromMemcached
|
||
- storeInMemcached
|
||
- setCacheDuration
|
||
- setVary
|
||
* ApiDelete::delete and ::deleteFile, both of which were protected methods,
|
||
have been made private to allow a signature change.
|
||
* HistoryPager::revLink, ::curLink, ::lastLink, and ::diffButtons, which had
|
||
no visibilities defined, have been made private to allow signature changes.
|
||
* SpecialNewpages::revisionFromRcResult, which previously was protected, has
|
||
been made private to allow a signature change.
|
||
* WikiPage::setLastEdit, which was previously protected, has been made
|
||
private to allow a signature change.
|
||
* Skin::getSkinNameMessages() deprecated in 1.34, has been removed.
|
||
* Skin::escapeSearchLink() deprecated in 1.34, has been removed, use
|
||
Skin::getSearchLink() instead.
|
||
* Revision::loadFromId and RevisionStore::loadRevisionFromId have been
|
||
removed.
|
||
* OutputPage::parserOptions doesn't accept an $options parameter anymore.
|
||
* MessageCache::getParserOptions previously did not have a visibility set.
|
||
It has been made private.
|
||
* SpecialUndelete::showDiff previously did not have a visibilty set. It
|
||
hav been made private to allow a signature change.
|
||
* The Skin no longer loads the "mediawiki.legacy.shared" or
|
||
"mediawiki.legacy.commonPrint" modules. The legacy shared styles must now
|
||
be loaded by the skin explicitly, either inherited via the
|
||
"mediawiki.skinning.*" modules, or by making your skin's main styles
|
||
module use the ResourceLoaderSkinModule class with the "legacy" attribute.
|
||
See Vector and Monobook for examples.
|
||
* Passing an ApiMain to the constructor of ApiResult is no longer supported.
|
||
This was deprecated in 1.25.
|
||
* The ArticleAfterFetchContentObject hook, deprecated in 1.32, was removed.
|
||
Use ArticleRevisionViewCustom to control output.
|
||
* DatabaseBlock::isValid, deprecated in 1.33, was removed.
|
||
* HTMLUserTextField and HTMLUsersMultiselectField previously implied
|
||
required=true when exists=true. Form fields that use exists=true should also
|
||
set required=true if they are required.
|
||
* In DatabaseUpdater, the following methods are no longer public: dropTable(),
|
||
modifyTable(), modifyField(), runMaintenance(), copyFile(), appendLine().
|
||
In PostgresUpdater, the following methods are no longer public:
|
||
addPgEnumValue(), addPgIndex(), addPgExtIndex(). This change was made without
|
||
deprecation due to immediate danger of data corruption and loss, see T157651.
|
||
Extensions should instead use dropExtensionTable(),
|
||
modifyExtensionExtensionTable(), modifyExtensionField(), addExtensionUpdate().
|
||
The addExtensionUpdate() method can still be used to access any of the
|
||
protected methods on DatabaseUpdater.
|
||
* ResourceLoader no longer provides the (always-true) variables for wgEnableAPI
|
||
and wgEnableWriteAPI; they were deprecated in MediaWiki 1.31 and removed from
|
||
the PHP environment in MediaWiki 1.32.
|
||
* The wfSetupSession global function, deprecated in 1.27, was removed. Use the
|
||
persist() method of the right MediaWiki\Session\SessionManager object instead.
|
||
* The wfIsHHVM global function, deprecated in 1.34, was removed.
|
||
* GenderCache::doTitlesArray no longer accepts string values in its $titles
|
||
array parameter. Use Title objects (or other LinkTarget) instead.
|
||
* Unused CommentStore::MAX_COMMENT_LENGTH has been removed.
|
||
* User::checkTemporaryPassword(), deprecated in 1.27, was removed. Use
|
||
AuthManager instead.
|
||
* …
|
||
|
||
=== Deprecations in 1.35 ===
|
||
* The PHPUnit4And6Compat class, used to provide compatibility with PHPUnit 4, is
|
||
now deprecated. MediaWiki support for PHPUnit 4 ended with the removal of HHVM
|
||
support.
|
||
* Revision::getRevisionText(), deprecated in 1.32, now emits deprecation alerts.
|
||
* LockManagerGroup::getDefault() and LockManagerGroup::getAny() are deprecated.
|
||
They seem to be unused. Just use get() directly, and catch any exception.
|
||
* AbstractBlock::getPermissionsError and AbstractBlock::getBlockErrorParams are
|
||
deprecated. Use BlockErrorFormatter::getMessage instead.
|
||
* The IP class is deprecated. Please instead use the Wikimedia\IPUtils class
|
||
from the new wikimedia/ip-utils library instead. Additionally, the RE_IP_*
|
||
constants are also deprecated. RE_IP_BYTE can be replaced with a class
|
||
constant on the IPUtils class, while the others will eventually be made
|
||
private.
|
||
* The following Language methods are deprecated: getFallbackFor,
|
||
getFallbacksFor, getFallbacksIncludingSiteLanguage. Use the corresponding new
|
||
methods on the LanguageFallback class: getFirst, getAll, and
|
||
getAllIncludingSiteLanguage.
|
||
* FileJournal::factory is deprecated. Use the constructor directly instead.
|
||
* AbstractBlock methods setBlocker(), getBlocker() are deprecated and will
|
||
become internal implementation of DatabaseBlock.
|
||
* Title::countRevisionsBetween has been deprecated and moved into RevisionStore.
|
||
* FileBackendGroup::singleton() is deprecated. Use MediaWikiServices instead.
|
||
* FileBackendGroup::destroySingleton() is deprecated. Test frameworks should
|
||
instead reset MediaWikiServices between test runs.
|
||
(MediaWikiIntegrationTestCase does this automatically.)
|
||
* GenderCache::singleton(), deprecated in 1.28, is hard deprecated. Use
|
||
MediaWikiServices::getGenderCache() instead.
|
||
* MediaWikiIntegrationTest::setContentLang() has been deprecated. Use
|
||
setMwGlobals( 'wgLanguageCode', 'xxx' ) to set a different site language
|
||
code, or setService( 'ContentLanguage', $myObj ) to set a specific Language
|
||
object. Service resets and $wgContLang will be handled automatically.
|
||
* MediaWikiIntegrationTest::assertType() has been deprecated, as part of the
|
||
work to move to PHPUnit 8; PHPUnit's assertInternalType() was deprecated, and
|
||
will be removed in PHPUnit 9. MediaWikiIntegrationTest::assertTypeOrValue(),
|
||
a wrapper for assertType(), has been removed immediately, without deprecation.
|
||
* AbstractBlock::getReason is deprecated, since reasons are actually stored as
|
||
CommentStoreComments, and getReason returns a string with no caller control
|
||
over language or formatting. Instead use AbstractBlock::getReasonComment,
|
||
which returns the CommentStoreComment.
|
||
* The global function wfGetRusage() is deprecated and will now always call the
|
||
getrusage() function without checking for its existence.
|
||
* The properties User::mBlock, User::mBlockedby and User::mHideName are
|
||
deprecated. Instead, use User::getBlock to get the block, then use
|
||
AbstractBlock::getByName or AbstractBlock::getHideName.Use the GetUserBlock
|
||
hook to set, unset or modify a block, including hiding or unhiding a user.
|
||
* Directly calling the MergeHistory constructor is deprecated. Instead, use the
|
||
new MergeHistoryFactory class.
|
||
* Language::factory() and Language::getParentLanguage() are deprecated, and so
|
||
is directly calling the Language constructor. Use the new LanguageFactory
|
||
class instead.
|
||
* Language::classFromCode() is deprecated. There is no reason it should be used
|
||
outside the Language class itself.
|
||
* Language::clearCaches() is deprecated. Instead, reset all services and set
|
||
Language::$mLangObjCache = [].
|
||
* The following functions from Language class are deprecated in favour of
|
||
respective functions in LanguageConverter:
|
||
- autoConvert
|
||
- autoConvertToAllVariants
|
||
- convert
|
||
- convertTitle
|
||
- convertNamespace
|
||
- hasVariants
|
||
- hasVariant
|
||
- convertHtml
|
||
- convertCategoryKey
|
||
- getVariants
|
||
- getPreferredVariant
|
||
- getURLVariant
|
||
- findVariantLink
|
||
- getExtraHashOptions
|
||
- updateConversionTable
|
||
* Language::classFromCode() is hard deprecated and should be removed in 1.36
|
||
* Language::getConverter() is deprecated and should be removed in 1.36
|
||
* Language::MESSAGES_FALLBACKS, Language::STRICT_FALLBACKS were deprecated.
|
||
Use LanguageFallback::MESSAGES and LanguageFallback::STRICT respectively
|
||
* Language::$mLangObjCache is deprecated and should be removed in 1.36. Use
|
||
MediaWikiServices instead to get a LanguageFactory.
|
||
* Language::getMessagesFor(), getMessageFor(), and getMessageKeysFor() are
|
||
deprecated. Use LocalisationCache's getItem(), getSubitem(), and
|
||
getSubitemList() methods directly.
|
||
* OutputPage::getCSPNonce() is deprecated, use OutputPage::getCSP()->getNonce()
|
||
instead.
|
||
* Skin::makeI18nUrl() and makeNSUrl() have been deprecated, no longer used.
|
||
* Title::countAuthorsBetween and Title::getAuthorsBetween were hard deprecated.
|
||
Use respective methods in RevisionStore instead.
|
||
* Remove deprecated SkinCopyrightFooter &$forContent parameter
|
||
* The following Language class static variables have been replaced with
|
||
constants and deprecated: $mWeekdayMsgs, $mWeekdayAbbrevMsgs, $mMonthMsgs,
|
||
$mMonthGenMsgs, $mMonthAbbrevMsgs, $mIranianCalendarMonthMsgs,
|
||
$mHebrewCalendarMonthMsgs, $mHebrewCalendarMonthGenMsgs,
|
||
$mHijriCalendarMonthMsgs and $durationIntervals.
|
||
* As part of dropping security support for IE 6 and IE 7,
|
||
WebRequest::checkUrlExtension() has been deprecated, and now always returns
|
||
true.
|
||
* The following ApiBase::PARAM_* constants have been deprecated in favor of
|
||
equivalent ParamValidator constants: PARAM_DFLT, PARAM_ISMULTI, PARAM_TYPE,
|
||
PARAM_MAX, PARAM_MAX2, PARAM_MIN, PARAM_ALLOW_DUPLICATES, PARAM_DEPRECATED,
|
||
PARAM_REQUIRED, PARAM_SUBMODULE_MAP, PARAM_SUBMODULE_PARAM_PREFIX, PARAM_ALL,
|
||
PARAM_EXTRA_NAMESPACES, PARAM_SENSITIVE, PARAM_DEPRECATED_VALUES,
|
||
PARAM_ISMULTI_LIMIT1, PARAM_ISMULTI_LIMIT2, PARAM_MAX_BYTES, PARAM_MAX_CHARS.
|
||
* ApiBase::explodeMultiValue() is deprecated. Use
|
||
ParamValidator::explodeMultiValue() instead.
|
||
* ApiBase::parseMultiValue() is deprecated. No replacement is provided;
|
||
generally this sort of thing should be handled by fully validating the
|
||
parameter.
|
||
* ApiBase::validateLimit() and ApiBase::validateTimestamp() are deprecated.
|
||
Use ApiParamValidator::validateValue() with an appropriate settings array
|
||
instead.
|
||
* ContentHandler (use ContentHandlerFactory):
|
||
- getForTitle
|
||
- getForContent
|
||
- getForModelID
|
||
- getContentModels
|
||
- getAllContentFormats
|
||
- protected $handler (not need anymore)
|
||
- cleanupHandlersCache (not need anymore)
|
||
* (T212738) The $wgVersion global is deprecated; instead, use MW_VERSION.
|
||
* $wgMemc is deprecated, use MediaWikiServices::getLocalServerObjectCache()
|
||
instead.
|
||
* ObjectCache::detectLocalServerCache() is deprecated, instead use
|
||
MediaWikiServices::getLocalServerObjectCache() or
|
||
ObjectCache::makeLocalServerCache().
|
||
* ImagePage::getImageLimitsFromOptions() is deprecated. Use static function
|
||
MediaFileTrait::getImageLimitsFromOptions() instead.
|
||
* As part of work to replace the Parser, alongside the breaking changes listed
|
||
above, a large number of deprecations changes been made, to simplify the API
|
||
or because they will not be supported in replacement:
|
||
- Parser::doBlockLevels() (and BlockLevelPass class has been marked @internal)
|
||
- Parser::setFunctionTagHook()
|
||
- Parser::attributeStripCallback()
|
||
- Parser::fetchTemplate() - use Parser::fetchTemplateAndTitle() instead.
|
||
- Parser::enableOOUI() - use $parser->getOutput()->enableOOUI() instead.
|
||
- LinkHolderArray has been deprecated for public usage and will be
|
||
internal part of parser.
|
||
- The following parser-related hooks have been deprecated:
|
||
- InternalParseBeforeSanitize
|
||
Use an alternative hook which doesn't expose internal half-parsed state,
|
||
like ParserBeforeInternalParse or ParserAfterTidy
|
||
- ParserFetchTemplate
|
||
Use BeforeParserFetchTemplateAndTitle
|
||
- ParserSectionCreate
|
||
No replacement; <section> tag wrapping will be done by core in future.
|
||
- ParserPreSaveTransformComplete
|
||
No replacement; Content::preSaveTransform() provides for customizable
|
||
PreSaveTransforms
|
||
- BeforeParserrenderImageGallery
|
||
No replacement; MediaHandler provides for customizable media rendering
|
||
- ParserBeforeTidy
|
||
Use ParserAfterTidy instead to avoid exposing internal half-parsed state
|
||
- The accessor/mutator methods Parser::Options(), Parser::OutputType(), and
|
||
Parser::Title() have been deprecated; use the appropriate Parser::get* or
|
||
Parser::set* methods instead.
|
||
- Parser::firstCallInit() has been deprecated. The parser is initialized
|
||
fully on construction and so ::firstCallInit() no longer has any effect
|
||
when manually invoked.
|
||
- ParserOptions::getTidy() and ParserOptions::setTidy() have been deprecated.
|
||
These options no longer have any effect.
|
||
- Most methods of MWTidy, except for MWTidy::tidy(), have been deprecated;
|
||
tidiness is always enabled and not configurable.
|
||
- Version 1 of the parserTests file format has been deprecated. You'll need to
|
||
update your parser tests to version 2, which uses Remex tidy on all test
|
||
output by default. Support for parser tests with Remex tidy off will later
|
||
be removed entirely.
|
||
- $wgParser — This global variable, soft deprecated in 1.32, has now been hard
|
||
deprecated. Use MediaWikiServices::getInstance()->getParser() instead.
|
||
(T160811)
|
||
* The signature of DefaultPreferencesFactory::__construct has been changed:
|
||
- LanguageConverter $languageConverter has been added.
|
||
and its usage with old arguments is hard deprecated.
|
||
* The public usage of the following properties of LanguageConverter have been
|
||
deprecated as there is no reason they should be used outside the
|
||
LanguageConverter class and will be changed from public to private:
|
||
- mLangObj
|
||
- mUcfirst
|
||
- mConvRuleTitle
|
||
- mURLVariant
|
||
- mUserVariant
|
||
- mHeaderVariant
|
||
- mMaxDepth
|
||
- mVarSeparatorPattern
|
||
changed from public to protected:
|
||
- mTables
|
||
* The UndeleteShowRevision hook has been deprecated.
|
||
* The ArticleRollbackComplete hook has been deprecated. Please use the new
|
||
RollbackComplete hook instead.
|
||
* The ArticleEditUpdatesDeleteFromRecentchanges hook has been deprecated. Please
|
||
use the RecentChange_save hook or similar instead.
|
||
* The ArticleEditUpdates hook has been deprecated. Please
|
||
use the RevisionDataUpdates hook or similar instead.
|
||
* The ArticleRevisionUndeleted hook has been hard deprecated. Please use the
|
||
new RevisionUndeleted hook instead.
|
||
* The NewRevisionFromEditComplete hook has been soft deprecated. Please use
|
||
the new RevisionFromEditComplete hook instead.
|
||
* ResourceLoaderFileModule::compileLessFile() has been deprecated, use
|
||
ResourceLoaderFileModule::compileLessString() instead
|
||
* The SquidPurgeClient and SquidPurgeClientPool classes have been deprecated.
|
||
Use MultiHttpClient or HtmlCacheUpdater instead.
|
||
* Calling Action::factory and Action constructor with WikiPage has been
|
||
hard deprecated. Caller must provide an Article instance.
|
||
* ApiTestCase::doLogin, soft deprecated in 1.31, was hard deprecated.
|
||
* WebRequest::getLimitOffset is hard deprecated. Instead, use
|
||
::getLimitOffsetForUser and pass a User object.
|
||
* PageArchive::getPreviousRevision is hard deprecated. Instead, use the new
|
||
::getPreviousRevisionRecord method.
|
||
* PageArchive::getArchivedRevision is hard deprecated. Instead, use the new
|
||
::getArchivedRevisionRecord method.
|
||
* PageArchive::undelete is hard deprecated. Instead, use ::undeleteAsUser
|
||
and pass a User object.
|
||
* EditPage::getBaseRevision was hard deprecated. Instead, use the new
|
||
::getExpectedParentRevision method.
|
||
* The public variable EditPage::$mBaseRevision was hard deprecated.
|
||
* FileDeleteForm previously did not accept a user parameter in its constructor,
|
||
instead relying on the global $wgUser. A user parameter has been added,
|
||
and //not// providing a user is deprecated. There are no known callers
|
||
outside of mediawiki core.
|
||
* AuthManager::singleton() has been deprecated. Use
|
||
MediaWikiServices::getInstance()->getAuthManager() instead.
|
||
* ContribsPager::tryToCreateValidRevision is hard deprecated. Instead, use
|
||
ContribsPager::tryCreatingRevisionRecord.
|
||
* The following functions all accept an optional user parameter. Not passing a
|
||
user is hard deprecated, and support for calling them without passing a user
|
||
will be removed in 1.36:
|
||
- Title::getNotificationTimestamp
|
||
- PatrolLog::record
|
||
- LogEventsList::userCan
|
||
- LogEventsList::userCanBitfield
|
||
- LogEventsList::userCanViewLogType
|
||
- LogPage::addEntry
|
||
- FileDeleteForm::doDelete
|
||
- OldLocalFile::userCan
|
||
- ArchivedFile::userCan
|
||
* The following functions all accept an optional audience parameter and
|
||
an optional user parameter. If the audience is FOR_THIS_USER and no
|
||
user is passed, they fallback to $wgUser. Not passing a user when
|
||
one is needed is deprecated
|
||
- LogEventsList::getExcludeClause
|
||
- Revision::getComment
|
||
- Revision::getUser
|
||
- Revision::getUserText
|
||
- WikiPage::getComment
|
||
- WikiPage::getCreator
|
||
- WikiPage::getUser
|
||
- WikiPage::getUserText
|
||
* UploadBase::checkWarnings now accepts a User parameter; not providing a
|
||
user is soft deprecated.
|
||
* Article::insertProtectNullRevision and WikiPage::insertProtectNullRevision
|
||
were hard deprecated. Instead, use WikiPage::insertNullProtectionRevision.
|
||
* Article::doDeleteArticle, Article::doDeleteArticleReal, and
|
||
WikiPage::doDeleteArticle are all deprecated. Instead, use
|
||
WikiPage::doDeleteArticleReal.
|
||
* Article::getComment is deprecated. Instead, use WikiPage::getComment.
|
||
* Article::getCreator is deprecated. Instead, use WikiPage::getCreator.
|
||
* Article::updateRevisionOn and Article::updateIfNewerOn are deprecated.
|
||
Instead, use WikiPage::updateRevisionOn.
|
||
* Article::getUser is deprecated. Instead, use WikiPage::getUser.
|
||
* Article::getUserText is deprecated. Instead, use WikiPage::getUserText.
|
||
* Article::prepareContentForEdit is hard deprecated. Instead, use
|
||
WikiPage::prepareContentForEdit.
|
||
* Article::getUndoContent and WikiPage::getUndoContent are hard deprecated.
|
||
Instead, use ContentHandler::getUndoContent.
|
||
* Passing Revision objects to ContentHandler::getUndoContent is hard deprecated.
|
||
Instead, pass the associated Content objects, as well as whether the undo is
|
||
from the current revision.
|
||
* Article::doDeleteUpdates and ::doEditUpdates are deprecated. Instead,
|
||
use WikiPage::doDeleteUpdates and ::doEditUpdates.
|
||
* Article::getRevisionFetched is deprecated. Instead, use the
|
||
fetchRevisionRecord method, which has been converted from protected to
|
||
public.
|
||
* LocalFileDeleteBatch was migrated to a new constructor signature with the
|
||
user as the second parameter. Support for the old signature is hard
|
||
deprecated, and once removed the user parameter will be required. At the
|
||
same time, a number of file-deletion related methods were updated
|
||
- File::delete is hard deprecated in favor of the new ::deleteFile
|
||
- LocalFile::delete is hard deprecated in favor of the new ::deleteFile
|
||
- LocalFile::deleteOld is hard deprecated in favor of the new ::deleteOldFile
|
||
- ForeignDBFile::delete is hard deprecated in favor of the new ::deleteFile
|
||
* The SpecialPageFactory class was moved from the MediaWiki\Special namespace
|
||
to the MediaWiki\SpecialPage namespace. The old location remains as a
|
||
deprecated alias.
|
||
* Title::userCan, ::quickUserCan, and ::getUserPermissionsErrors, which
|
||
were deprecated in 1.33, were hard deprecated. Instead, use
|
||
PermissionManager::userCan, ::quickUserCan, and ::getPermissionErrors.
|
||
* All methods of the old SpecialPageFactory, deprecated in 1.32, were hard
|
||
deprecated. Instead, get a SpecialPageFactory from MediaWikiServices and
|
||
use its methods.
|
||
* User::setNewtalk now accepts as its optional second parameter a
|
||
RevisionRecord object; passing a Revision is hard deprecated.
|
||
* User::updateNewtalk now accepts as its optional third parameter a
|
||
RevisionRecord object; passing a Revision is hard deprecated.
|
||
* DifferenceEngine::getRevisionHeader now accepts a RevisionRecord as its
|
||
first parameter; passing a Revision is hard deprecated.
|
||
* WikiPage::doDeleteUpdates now accepts as its optional third parameter
|
||
a RevisionRecord object; passing a Revision is hard deprecated.
|
||
* WikiPage::onArticleEdit now accepts as its optional second parameter
|
||
a RevisionRecord object; passing a Revision is hard deprecated.
|
||
* Global $wgUser variable was soft deprecated.
|
||
* The Revision class was soft deprecated entirely in 1.31. Specific methods
|
||
have now been individually hard deprecated:
|
||
- ::getSerializedData - use SlotRecord::getContent for retrieving a
|
||
content object, and Content::serialize for the serialized form
|
||
- ::getSha1 - use RevisionRecord::getSha1 instead
|
||
- ::base36Sha1 - use SlotRecord::base36Sha1 instead
|
||
- ::userWasLastToEdit - use RevisionStore::userWasLastToEdit instead
|
||
- ::userCan and userCanBitfield - use RevisionRecord::userCanBitfield instead
|
||
- ::newFromTitle - use RevisionLookup::getRevisionByTitle instead
|
||
- ::newFromPageId - use RevisionStore::getRevisionByPageId instead
|
||
- ::newFromArchiveRow - use RevisionFactory::newRevisionFromArchiveRow
|
||
- ::newNullRevision - use RevisionStore::newNullRevision
|
||
- ::loadFromTitle - use RevisionStore::getRevisionByTitle instead
|
||
- ::loadFromPageId - use RevisionStore::getRevisionByPageId instead
|
||
- ::getTimestampFromId - use RevisionStore::getTimestampFromId instead
|
||
- ::loadFromTimestamp - use RevisionStore::getRevisionByTimestamp instead
|
||
- ::countByPageId - use RevisionStore::countRevisionsByPageId instead
|
||
- ::countByTitle - use RevisionStore::countRevisionsByTitle instead
|
||
- ::newFromRow - use RevisionStore::newRevisionFromRow instead
|
||
- ::newKnownCurrent - use RevisionStore::getKnownCurrentRevision instead
|
||
- ::getParentLengths - use RevisionStore::getRevisionSizes instead
|
||
- ::setTitle - the method was previously a no-op
|
||
- ::getQueryInfo - use RevisionStore::getQueryInfo instead
|
||
- ::getArchiveQueryInfo - use RevisionStore::getArchiveQueryInfo instead
|
||
- ::isUnpatrolled - use RevisionStore::getRcIdIfUnpatrolled instead
|
||
- ::setUserIdAndName - use MutableRevisionRecord::setUser instead
|
||
- ::setId - use MutableRevisionRecord::setId instead
|
||
- ::getRecentChange - use RevisionStore::getRecentChange instead
|
||
- ::getTextId - use SlotRecord::getContentAddress for retrieving an actual
|
||
content address, or RevisionRecord::hasSameContent to compare content
|
||
- ::getNext - use RevisionLookup::getNextRevision instead
|
||
* The Revision method had a few methods that were previously protected and
|
||
have been made private. They were:
|
||
- ::getRevisionStore
|
||
- ::getRevisionLookup
|
||
- ::getRevisionFactory
|
||
- ::getBlobStore
|
||
The $mRecord variable was also changed from protected to private.
|
||
* WikiPage::$mLastRevision was changed from protected to private.
|
||
* The RevisionInsertComplete hook, soft deprecated in 1.31, now emits
|
||
deprecation warnings.
|
||
* RecentChange::markPatrolled was deprecated. Use ::doMarkPatrolled instead.
|
||
* The JobRunner class has been converted to a service class.
|
||
Direct construction is deprecated, use MediaWikiServices::getJobRunner.
|
||
* JobRunner::setLogger has been deprecated, thus using JobRunner as a
|
||
LoggerAwareInterface is deprecated as well. Rely on the logger passed in the
|
||
constructor instead.
|
||
* LogEventsList::typeAction accepts an optional right to check against as
|
||
the fourth parameter. Specifying such a right is deprecated.
|
||
* RevisionStore::loadRevisionFromTitle, ::loadRevisionFromTimestamp,
|
||
::loadRevisionFromPageId, and ::listRevisionSizes were deprecated.
|
||
* SkinTemplate::makeArticleUrlDetails has been deprecated, no longer used.
|
||
* Passing a Revision object into CategoryMembershipChange constructor is
|
||
deprecated. Pass a RevisionRecord instead.
|
||
* The "mediawiki.legacy.oldshared" module has been deprecated.
|
||
Skins and extensions that are using this should copy its necessary CSS rules
|
||
to their own styles module. CologneBlue and Nostalgia skins serve as examples.
|
||
* The "mediawiki.legacy.shared" module has been deprecated.
|
||
Use the "mediawiki.skinning.*" modules, or ResourceLoaderSkinModule instead.
|
||
* The following hooks, soft deprecated in 1.24, have been hard deprecated:
|
||
- APIQueryInfoTokens
|
||
- APIQueryRecentChangesTokens
|
||
- APIQueryRevisionsTokens
|
||
- APIQueryUsersTokens
|
||
- ApiTokensGetTokenTypes
|
||
* Calling Action::factory and Action constructor with any Page implementations
|
||
other than Article is deprecated.
|
||
* Action::page property is deprecated for direct access.
|
||
Use Action::getArticle or Action::getWikiPage instead.
|
||
* LESS `.background-image-svg-quick()` mixin from 'mediawiki.mixins.less' is
|
||
deprecated and should be removed in 1.36.
|
||
* The following methods were deprecated:
|
||
- Title::getFirstRevision
|
||
- Title::getEarliestRevTime
|
||
- WikiPage::getOldestRevision (hard deprecated)
|
||
- Article::getOldestRevision (hard deprecated)
|
||
Use RevisionStore::getFirstRevision instead.
|
||
* The following Linker methods previously accepted Revision objects as
|
||
parameters. They now accept either Revision or RevisionRecord objects.
|
||
Passing a Revision object is hard deprecated.
|
||
- ::revUserLink
|
||
- ::revUserTools
|
||
- ::revComment
|
||
- ::generateRollback
|
||
- ::getRollbackEditCount
|
||
- ::buildRollbackLink
|
||
- ::getRevDeleteLink
|
||
* WikiPage::hasDifferencesOutsideMainSlot previously accepted Revision
|
||
objects for its two parameters. It now accepts RevisionRecord objects,
|
||
and passing Revision objects is hard deprecated.
|
||
* WikiPage::updateRevisionOn previously accepted Revision objects for its
|
||
second parameter. It now accepts RevisionRecord objects, and passing
|
||
Revision objects is hard deprecated.
|
||
* The ParserGetVariableValueVarCache hook has been deprecated.
|
||
* When using the ParserGetVariableValueSwitch hook, the following unusual
|
||
uses have been deprecated: modifying the passed $magicWordId or failing to
|
||
cache the returned value in $variableCache.
|
||
* The following Parser properties have been deprecated:
|
||
- ::$mTagHooks
|
||
- ::$mFunctionHooks
|
||
- ::$mMarkerIndex
|
||
- ::$mFirstCall
|
||
- ::$mPreprocessor
|
||
- ::$mOutput
|
||
- ::$mStripState
|
||
- ::$mLinkID
|
||
- ::$mIncludeSizes
|
||
- ::$mPPNodeCount
|
||
- ::$mGeneratedPPNodeCount
|
||
- ::$mHighestExpansionDepth
|
||
- ::$mDoubleUnderscores
|
||
- ::$mExpensiveFunctionCount
|
||
- ::$mShowToc
|
||
- ::$mUser
|
||
- ::$mOptions
|
||
- ::$mTitle
|
||
- ::$ot
|
||
- ::$mRevisionObject
|
||
- ::$mRevisionId
|
||
- ::$mRevisionTimestamp
|
||
- ::$mRevisionUser
|
||
- ::$mRevisionSize
|
||
- ::$mInputSize
|
||
- ::$mInParse
|
||
* LinksUpdate::getRevision and ::setRevision are hard deprecated in favor
|
||
of the new ::getRevisionRecord and ::setRevisionRecord methods.
|
||
* Article::getRevision and WikiPage::getRevision were hard deprecated
|
||
in favor of the new WikiPage::getRevisionRecord method.
|
||
* A new UserNameUtils service was introduced. The following User methods
|
||
were deprecated in favor of using the new service:
|
||
- isIP
|
||
- isIPRange
|
||
- isValidUserName
|
||
- isUsableName
|
||
- isCreatableName
|
||
- getCanonicalName
|
||
* The signature of WikiPage::doDeleteArticleReal was changed to make the user
|
||
the second parameter, and the suppression option the third parameter.
|
||
Previously, the third parameter was unused. Using the old signature is
|
||
hard deprecated.
|
||
* Passing Article to ParserCache::get() was deprecated
|
||
* Parser::fetchCurrentRevisionOfTitle and ::statelessFetchRevision were soft
|
||
deprecated in favor of the new ::fetchCurrentRevisionRecordOfTitle and
|
||
::statelessFetchRevisionRecord methods respectively.
|
||
* Parser::getRevisionObject was hard deprecated in favor of the new
|
||
::getRevisionRecordObject method.
|
||
* ParserOptions::getCurrentRevisionCallback and ::setCurrentRevisionCallback
|
||
were soft deprecated in favor of the new ::getCurrentRevisionRecordCallback
|
||
and ::setCurrentRevisionRecordCallback methods respectively.
|
||
* Page interface was deprecated. Use Article or WikiPage instead.
|
||
* The following DatabaseBlock methods are deprecated because they are no longer
|
||
needed in core: chooseBlock, fromMaster, deleteIfExpired.
|
||
* wfGetScriptUrl() was deprecated. The script URL should be configured rather
|
||
than detected. wfScript() can be used to get a configured script URL.
|
||
* Action::factory() with null $action argument is hard deprecated
|
||
* The following methods of the User class were deprecated: getDefaultOptions,
|
||
getDefaultOption, getOptions, getOption, getBoolOption, getIntOption,
|
||
setOption, listOptionKinds, getOptionKinds, resetOptions. Use corresponding
|
||
methods in UserOptionsLookup or UserOptionsManager service classes instead.
|
||
* The $user parameter for both the getForm() and getFormDescriptor() methods of
|
||
PreferencesFactory has been deprecated in favour of a new
|
||
PreferencesFactory::setUser( User $user ) method.
|
||
* UserRetrieveNewTalks hook was deprecated without replacement.
|
||
* User::getNewtalk and ::setNewtalk were deprecated. Use service
|
||
TalkPageNotificationManager instead.
|
||
* SpecialPage::setListed() and SpecialPage::listed() were deprecated. Subclass
|
||
UnlistedSpecialPage to set listed as false, and use SpecialPage::isListed()
|
||
to get the value.
|
||
* CategoryPage::getCategoryViewerClass() and ::setCategoryViewerClass() were
|
||
deprecated.
|
||
* MWHttpRequest and its subclasses PhpHttpRequest, CurlHttpRequest and
|
||
GuzzleHttpRequest now require the timeout and connectTimeout options to
|
||
always be specified, otherwise a deprecation warning will be raised. Most
|
||
callers should use HttpRequestFactory which always sets these options.
|
||
* …
|
||
|
||
=== Other changes in 1.35 ===
|
||
* A new maintenance script is added (purgeExpiredWatchlistItems.php) with which
|
||
to delete expired watchlist items. These items will also be deleted during
|
||
wiki editing if $wgWatchlistPurgeRate is > 0. This maintenance script only
|
||
has effect if $wgWatchlistExpiry is true. It is recommended that a cronjob or
|
||
similar be set up to run it at least daily.
|
||
* Title::purgeSquid is deprecated. Use MediaWikiServices::getHtmlCacheUpdater.
|
||
* SpecialVersion::getExtLicenseFileName() has been deprecated, use
|
||
MediaWiki\ExtensionInfo::getLicenseFileNames() instead.
|
||
* SpecialVersion::getExtAuthorsFileName() has been deprecated, use
|
||
MediaWiki\ExtensionInfo::getAuthorsFileName() instead.
|
||
* Migration to the new content storage schema is complete, all backwards
|
||
compatibility code and duplication in the database have been removed.
|
||
The old schema was a 1:1 relationship modeled by
|
||
revision.text_id -> text.old_id. The new schema is a n:m relationship,
|
||
revision.rev_id <- slots.slot_revision_id|slots.slot_content_id ->
|
||
content.content_id|content.content_address -> text.old_id. The same applies
|
||
to the archive table.
|
||
The following fields were removed:
|
||
- revision.rev_text_id, replaced by content.content_address
|
||
- revision.rev_content_model, replaced by content.content_model,
|
||
referencing content_models.model_id
|
||
- revision.rev_content_format, replaced by automatic detecting in
|
||
ContentHandler
|
||
- archive.ar_text_id, replaced by content.content_address
|
||
- archive.ar_content_model, replaced by content.content_model,
|
||
referencing content_models.model_id
|
||
- archive.ar_content_format, replaced by automatic detecting in
|
||
ContentHandler
|
||
* Migration to normalized storage of edit comments and user names is
|
||
progressing. The following fields were unused and have been removed:
|
||
- revision.rev_comment,
|
||
replaced by rev_comment_id referencing comment.comment_id.
|
||
- revision.rev_user and rev_user_text,
|
||
replaced by rev_actor referencing actor.actor_id.
|
||
Note that archive.ar_user, archive.ar_user_text, and archive.ar_comment
|
||
had already been removed in previous releases.
|
||
|
||
== Compatibility ==
|
||
MediaWiki 1.35 requires PHP 7.2.22 or later, and the following PHP extensions:
|
||
|
||
* ctype
|
||
* dom
|
||
* fileinfo
|
||
* iconv
|
||
* 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.2 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.
|