Ensure that the value returned is always also added to the cache, since we (eventually) want to remove the hook's access to $parser->mVarCache. Also don't allow monkeying with the value passed as $magicWordId, even though it's a reference. Code search: https://codesearch.wmflabs.org/deployed/?q=ParserGetVariableValueSwitch&i=nope&files=&repos= Bug: T236813 Depends-On: Ia12faefada7e4cf04f1a6b12b3ed1703bf28e437 Depends-On: Ia9e2e00c6b7d0e62cbe80c3b124165b691b1ff3d Depends-On: I1e48fa47b8723958d543a69aaf9b62b872200dc5 Depends-On: If9a0885a8664c22473ade712364c2dd0a5c04e0b Change-Id: I3d6b281f8e4e0bf68eefbf9767047527b4573b79
764 lines
39 KiB
Text
764 lines
39 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 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)
|
||
* …
|
||
|
||
==== 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.
|
||
* …
|
||
|
||
==== 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, is now entirely
|
||
ignored and should no longer be used by extensions. It will be removed as
|
||
soon as no extension relies on it any more.
|
||
* $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
|
||
* …
|
||
|
||
=== 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)
|
||
* 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 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.
|
||
* …
|
||
|
||
=== External library changes in 1.35 ===
|
||
* …
|
||
|
||
==== New external libraries ====
|
||
* Added doctrine/dbal 2.9.3 (dev-only).
|
||
* Added wikimedia/ip-utils 1.0.0.
|
||
* Added vuejs v2.6.11.
|
||
* Added wikimedia/parsoid 0.12.0.
|
||
* …
|
||
|
||
==== 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 3.0.1.
|
||
* Updated OOUI from 0.35.1 to 0.37.0.
|
||
* zordius/lightncandy was upgraded from 0.23.0 to 1.2.5.
|
||
* Updated nikic/php-parser from 3.1.5 to 4.3.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.2 (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.2.
|
||
* 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.9.3 (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.
|
||
* …
|
||
|
||
==== 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.
|
||
* …
|
||
|
||
=== 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.
|
||
* (T248299) Added language support for Inari Sami (smn).
|
||
* …
|
||
|
||
=== 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.
|
||
* 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.
|
||
* A large number of Parser-related methods were 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.
|
||
* Parser::getTitle() will now throw a TypeError if $mTitle is uninitialized.
|
||
This use pattern was deprecated in 1.34.
|
||
* 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.
|
||
Use ::queue() instead.
|
||
* MWMessagePack class, deprecated in 1.34, was removed.
|
||
* 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.
|
||
* ContentHandler::makeParserOptions(), deprecated in 1.32, was removed. Use
|
||
WikiPage::makeParserOptions() or ParserOptions::newCanonical() instead.
|
||
* 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.
|
||
* The ParserAfterUnstrip hook was removed without deprecation.
|
||
* Preprocessor_DOM and related classes, deprecated in 1.34, have been removed.
|
||
* ParserOptions::getMaxGeneratedPPNodeCount() and ::setMaxGeneratedPPNodeCount()
|
||
have been removed without deprecation.
|
||
* The support for old signature for ParserFactory::__construct was deprecated in
|
||
1.34 and now has been removed.
|
||
* 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.
|
||
* 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.
|
||
* 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.
|
||
* 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.
|
||
* Parser::getDefaultPreprocessorClass(), deprecated in 1.34, has been removed.
|
||
* …
|
||
|
||
=== 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.)
|
||
* 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.
|
||
* 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 have been 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.
|
||
* A number of Parser-related methods were deprecated to simplify the API or
|
||
because they will not be supported in the upcoming parser replacement:
|
||
- doBlockLevels() (and BlockLevelPass class has been marked @internal)
|
||
- setFunctionTagHook()
|
||
- attributeStripCallback()
|
||
- fetchTemplate() - use Parser::fetchTemplateAndTitle() instead.
|
||
* 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 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.
|
||
* LinkHolderArray has been deprecated for public usage and will be
|
||
internal part of parser.
|
||
* ResourceLoaderFileModule::compileLessFile() has been deprecated, use
|
||
ResourceLoaderFileModule::compileLessString() instead
|
||
* ApiTestCase::doLogin, soft deprecated in 1.31, was hard deprecated.
|
||
* WebRequest::getLimitOffset is hard deprecated. Instead, use
|
||
::getLimitOffsetForUser and pass a User object.
|
||
* PageArchive::undelete is hard deprecated. Instead, use ::undeleteAsUser
|
||
and pass a User object.
|
||
* 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.
|
||
* 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
|
||
- Revision::newNullRevision
|
||
- WikiPage::insertProtectNullRevision
|
||
- 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
|
||
* Article::insertProtectNullRevision is deprecated. Instead, use
|
||
WikiPage::insertProtectNullRevision.
|
||
* 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::getUser is deprecated. Instead, use WikiPage::getUser.
|
||
* Article::getUserText is deprecated. Instead, use WikiPage::getUserText.
|
||
* 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.
|
||
* Global $wgUser variable was soft deprecated.
|
||
* The Revision class was soft deprecated entirely in 1.31. Specific methods
|
||
have now been individually hard deprecated:
|
||
- ::base36Sha1 - use SlotRecord::base36Sha1 instead
|
||
- ::userWasLastToEdit - use RevisionStore::userWasLastToEdit instead
|
||
- ::userCan and userCanBitfield - use RevisionRecord::userCanBitfield instead
|
||
- ::newFromPageId - use RevisionStore::getRevisionByPageId instead
|
||
- ::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
|
||
* 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
|
||
Use RevisionStore::getFirstRevision instead.
|
||
* The Parser::enableOOUI() method has been deprecated. Use
|
||
$parser->getOutput()->enableOOUI() instead.
|
||
* 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.
|
||
* Parser::$mVarCache has been deprecated for direct access.
|
||
* 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
|
||
* …
|
||
|
||
=== Other changes in 1.35 ===
|
||
* 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. The old signature is still
|
||
supported, and is not (yet) deprecated.
|
||
* …
|
||
|
||
== 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.
|