wiki.techinc.nl/RELEASE-NOTES-1.35
C. Scott Ananian a3c9621ad0 Deprecate unusual uses of the ParserGetVariableValueSwitch hook
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
2020-03-27 08:59:21 -04:00

764 lines
39 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

= 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.