forked from Cyber/archwiki
1585 lines
83 KiB
Plaintext
1585 lines
83 KiB
Plaintext
= MediaWiki 1.35 =
|
||
|
||
== MediaWiki 1.35.1 ==
|
||
|
||
THIS IS NOT A RELEASE YET
|
||
|
||
=== Changes since MediaWiki 1.35.0 ===
|
||
* Parser: Adjust typehint to show that getTitle can return null.
|
||
|
||
== MediaWiki 1.35.0 ==
|
||
|
||
=== Changes since MediaWiki 1.35.0-rc.3 ===
|
||
* (T261258) Remove checks for ancient ImageMagick versions in BitmapHandler.
|
||
* (T260232) Don't include null page ids in query list for category dumps.
|
||
* (T260009) Check existing watchitem when saving action=watch.
|
||
* (T259055) Correct success messages for action=watch.
|
||
* mediawiki.page.ready: Simpler tablesorter/makeCollapsible call.
|
||
* mediawiki.page.ready: Fix skin override config flags, wrong way round.
|
||
* (T262175, T248512) Remove requirement for ApiWatchlistTrait to be in ApiBase.
|
||
* (T259053, T260434) Watchlist: Fix updateWatchLink removing css class when
|
||
action=watch.
|
||
* (T261901, T261476) mediawiki.notification: Don't close notif when clicking
|
||
<select> element.
|
||
* (T251506) Sanitizer: Truncate IDs to a reasonable length.
|
||
* (T259452) Parsoid updated to v0.12.0.
|
||
* (T261970) watch.ajax: Add expiry support to watchpage.mw event.
|
||
* (T262900) Fix failure of rebuildLocalisationCache.php due to ResourceLoader
|
||
hook.
|
||
* (T263014) Hard deprecate File::userCan() with $user=null.
|
||
* (T262547) Use localized success message after watching via action=watch.
|
||
* (T201491) Fix typo 'Watchlst' in `apihelp-edit-param-watchlistexpiry`.
|
||
* (T261081) Installer: consistently reset Language objects.
|
||
* (T250449, T250450) Installer: consistently reset Language objects.
|
||
* Explicitly wrap some XML calls in libxml_disable_entity_loader().
|
||
* (T262934) Ensure dropdown label is always on its own line.
|
||
* (T246855) resourceloader: Use a local HookRunner.
|
||
* (T263604) Have findBadBlobs.php require Maintenance.php rather than
|
||
cleanupTable.inc.
|
||
* (T263606) Set fake time, to avoid flaky tests.
|
||
* (T261325) Add FindMissingActors script.
|
||
* (T262364) shell: Don't blacklist /run/firejail.
|
||
* (T263655) NewPagesPager: Ignore nonexistent namespaces.
|
||
* Update specialPageAliases and magicWords for Egyptian Arabic (arz).
|
||
* (T261347) ParserOutput: don't throw on bad editsection.
|
||
* (T232568, CVE-2020-25813) SpecialUserrights: If a viewer lacks `hideuser`,
|
||
ignore hidden users.
|
||
* (T255918, CVE-2020-25812) SECURITY: Unescaped message used in HTML on
|
||
Special:Contributions.
|
||
* (T256171, CVE-2020-25815) SECURITY: Unescaped message used in HTML within
|
||
LogEventsList.
|
||
* (T258763, CVE-2020-17367, CVE-2020-17368) SECURITY: Prevent invoking
|
||
firejail's --output functionality.
|
||
* (T86738, CVE-2020-25814) SECURITY: mediawiki.jqueryMsg: Sanitize URLs and
|
||
'style' attribute.
|
||
* (T115888, CVE-2020-25828) SECURITY: mediawiki.js: Escape HTML in
|
||
mw.message( ... ).parse().
|
||
* (T260485, CVE-2020-25869) SECURITY: ActorMigration: Load user from the correct
|
||
database.
|
||
* (T260485, CVE-2020-25869) SECURITY: ensure actor ID from correct wiki is used.
|
||
* Add Finnish special page aliases.
|
||
* Fix GuzzleHttpRequest request headers.
|
||
* Fix description for pruneFileCache.php.
|
||
* emptyUserGroup.php: handle more than 5000 users.
|
||
* Make ApiSandbox copyable URL absolute.
|
||
* (T261087) Add a link from a deleted page to that page's logs.
|
||
|
||
== MediaWiki 1.35.0-rc.3 ==
|
||
|
||
=== Changes since MediaWiki 1.35.0-rc.2 ===
|
||
* (T258662) mediawiki.visibleTimeout: Update the nextVisibleTimeoutId value.
|
||
* Ensure Parsoid doesn't throw when <ref> is used w/o Cite installed.
|
||
* Remove maintenance/createCommonPasswordCdb.php.
|
||
* (T260468) Increase "sites.site_global_key" to varbinary(64).
|
||
* (T183759) Fix shell edge-cases in Windows.
|
||
* (T257879) Drop PHP 7.2 support; require 7.3.19.
|
||
* (T251661, CVE-2020-25827) SECURITY: User::pingLimiter: add user-global
|
||
rate limit type.
|
||
* (T246991) User: enforce pingLimiter() expiry time.
|
||
* (T256831) Rest: Handle Uri constructor exception.
|
||
* (T259094) Fix RequestFromGlobalsTest failing in Travis CI.
|
||
* (T256831, T261344) Rest: Use try/catch to handle URIs with embedded colon.
|
||
|
||
== MediaWiki 1.35.0-rc.2 ==
|
||
|
||
=== Changes since MediaWiki 1.35.0-rc.1 ===
|
||
* (T259693) uuid: Fix filenames on Windows.
|
||
* Remove Gruntfile.js and package-lock.json from the tarball.
|
||
* firejail: Strengthen by copying from Wikimedia's profile.
|
||
* (T260059) ResourceLoaderOOUIImageModule: loadOOUIDefinition() may return
|
||
false.
|
||
* (T30162, T245387) The installer supports using a Postgres server running
|
||
on a custom port other than 5432.
|
||
* (T260201) Support private wikis in Parsoid zero configuration mode.
|
||
* Fix bad use of `|=` PHP bit operation where `= … ||` bool is intended.
|
||
* (T259212) SpecialBlock: Show error if a block could not be inserted or found.
|
||
* (T255842) UserOptionsManager: fix options reset.
|
||
* (T258649) WatchAction: avoid unnecessary UPDATEs when expiry is unchanged.
|
||
* (T250851) Allow skins to override mediawiki.page.ready initialisation.
|
||
* (T250851) mediawiki.page.ready: Allow skins to disable search lazy load.
|
||
* (T253135, T255632) Update language in watchlist expiry.
|
||
* Use IPset in MWRestrictions::checkIP.
|
||
* (T259564) Fix race condition on edit page.
|
||
* (T260759) Hide watchlist expiry label in edit form.
|
||
* mime: Fix docs of MIME_EXTENSIONS, they're arrays, not space-seperated.
|
||
* (T260031) Add application/font-sfnt to MimeMap for ttf files.
|
||
* (T259379) WatchedItemStore: Cache single WatchedItems with preexisting expiry.
|
||
* Add a maintenance script to create bot passwords.
|
||
* (T201269) Add Traditional Chinese zh-hant as fallback for Amis (ami).
|
||
* Improve wfParseUrl docs.
|
||
* (T251038) Add multi index fields in ImageListPager for unique paginate.
|
||
* (T259916) Guard against 'Widget not found' error.
|
||
|
||
== MediaWiki 1.35.0-rc.1 ==
|
||
|
||
=== Changes since MediaWiki 1.35.0-rc.0 ===
|
||
* (T252136) Fix RecentChanges watchlist filters when WatchlistExpiry is off.
|
||
* (T258662) Update time period for watchlist expiry pop-up.
|
||
* (T258443) Fix expiry dropdown not getting disabled on edit page.
|
||
* (T259398) Add license information for promise-polyfill.
|
||
* Remove executable bit from scripts without shebang.
|
||
* (T256526) Fix bold of watched items on Special:RecentChangesLinked.
|
||
* (T259060) Edit page expiry dropdown should keep state after
|
||
disabling/enabling.
|
||
* (T259009) Translate expiry period in pop-up message for watchlist expiry.
|
||
* (T258310) Add watchlist clock icon to RecentChanges.
|
||
* (T259362) Permit temporary table writes on replica DB connections.
|
||
* (T250214) Add UI support in Special:EditWatchlist for watchlist expiry.
|
||
* (T72470) Disable wgLegacyJavaScriptGlobals by default.
|
||
* (T130906) Add Edge to MediaWiki:Clearyourcache.
|
||
* (T257279) Add mediawiki.ui Less variable deprecation note.
|
||
* (T249521) Fixed reassignEdits.php to work with anonymous users.
|
||
* (T259448) Fix Circular dependency when creating service in
|
||
DBLoadBalancerFactory.
|
||
* (T257259) Default to using watchlist expiry of old page when moving pages.
|
||
|
||
== MediaWiki 1.35.0-rc.0 ==
|
||
|
||
== Upgrading notes for 1.35 ==
|
||
1.35 requires PHP 7.3.19 or above (up from 7.2.9). (T257879)
|
||
|
||
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!
|
||
|
||
MediaWiki 1.35 is the next LTS after 1.31, and will be supported for around 3
|
||
years.
|
||
|
||
MediaWiki has a lot of both soft and hard deprecations, and code removed. As
|
||
always, make sure your versions of extensions match the MediaWiki version,
|
||
and updates may be required to any custom extensions.
|
||
|
||
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:
|
||
* (T259685) Zeroconf (zero-configuration) VisualEditor/Parsoid doesn't work
|
||
using SQLite as the database backend for MediaWiki. This is due to the lack
|
||
of write concurrency in SQLite. If you wish to use this feature, it is
|
||
recommended to use MySQL/MariaDB rather than SQLite.
|
||
|
||
For notes on 1.34.x and older releases, see HISTORY.
|
||
|
||
=== Configuration changes for system administrators in 1.35 ===
|
||
|
||
* (T72470) $wgLegacyJavaScriptGlobals is now false by default. This feature
|
||
will be completely removed in a later MediaWiki release.
|
||
|
||
==== New configuration ====
|
||
* $wgDiffEngine — This can be used to specify the difference engine to use,
|
||
rather than MediaWiki 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'].
|
||
* $wgPoolCounterConf['SpecialContributions'] — Per-user concurrency in the use
|
||
of SpecialContributions can now be limited by setting this appropriately.
|
||
* $wgPasswordPolicy — PasswordCannotBeSubstringInUsername is a new password
|
||
policy check. 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 = MyPass, username = ThisUsersPasswordIsMyPass.
|
||
* $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 — (EXPERIMENTAL) This enables the new 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. Enabling in production is discouraged for the time being. A future
|
||
MediaWiki 1.35 release will advertise this feature once it is stable.
|
||
* $wgWatchlistPurgeRate — This sets the chance of expired watchlist items being
|
||
purged on each page edit. Only has effect if $wgWatchlistExpiry is true.
|
||
* $wgWatchlistExpiryMaxDuration — This is the maximum definite relative duration
|
||
for watchlist expiries. Only has effect if $wgWatchlistExpiry is true.
|
||
* $wgImgAuthPath – This can be used to override the path prefix used when
|
||
handling img_auth.php requests. (T235357)
|
||
* $wgAllowedCorsHeaders — This is a list of headers which can be used in a
|
||
cross-site API request.
|
||
* $wgHTTPMaxTimeout and $wgHTTPMaxConnectTimeout — These 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.
|
||
* $wgCdnMaxageStale — This controls the Cache-Control s-maxage header for page
|
||
views when PoolCounter lock contention indicates that a stale cache entry
|
||
should be sent.
|
||
* $wgForceHTTPS — This makes the HTTP to HTTPS redirect be unconditional and
|
||
suppresses various hacks needed to support mixed HTTP/HTTPS wikis. We
|
||
recommend this be set to true on pure HTTPS wikis.
|
||
* $wgCookieSameSite — This setting allows login cookies to be sent with
|
||
SameSite=None. This is required for cross-site CentralAuth auto-login after
|
||
Chrome 84.
|
||
* $wgUseSameSiteLegacyCookies — This adds a compatibility hack to
|
||
SameSite=None cookies for browsers which implemented an incompatible draft
|
||
version of the specification.
|
||
|
||
==== 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 — These can now use the
|
||
'services' option in provider specifications.
|
||
* $wgVirtualRestConfig['modules']['parsoid'] —
|
||
- The defaults have been updated. If you were relying on the default values,
|
||
you may need to update your configuration.
|
||
- The 'URL' parameter, previously allowed for backwards-compatibility, has
|
||
been deprecated. Use 'url' instead.
|
||
* $wgXmlDumpSchemaVersion — Default is now set 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.
|
||
* $wgAutoloadAttemptLowercase — This has been deprecated, and the default value
|
||
changed to false.
|
||
* $wgAllowImageMoving — This configuration setting is now deprecated. Instead,
|
||
use $wgGroupPermissions; e.g., to revoke sysops' ability to move images use
|
||
$wgGroupPermissions['sysop']['movefile'] = false.
|
||
* $wgAllowImageTag — This configuration is now deprecated; future parsers will
|
||
not support direct use of the HTML <img> tag in wikitext.
|
||
* $wgUseTwoButtonsSearchForm — This has been deprecated. If you maintain a skin
|
||
that relies on this and wishes to let system administrators change it, you
|
||
should convert it to a config variable specific to your skin. If you're using
|
||
it to configure your wiki, you should check individual skins to see whether
|
||
they have local skin config for the feature and use that.
|
||
* $wgPasswordPolicy — The deprecated policy 'PasswordCannotBePopular' has been
|
||
removed. Use PasswordNotInCommonList instead which covers many more passwords.
|
||
* Backwards compatibility for using an associative array
|
||
(e.g. [ '127.0.0.1' => 'bad-ip' ]) for $wgProxyList has been removed. This
|
||
was deprecated since 1.30. Please convert these arrays to indexed/sequential
|
||
ones (e.g. [ '127.0.0.1' ]).
|
||
* $wgShellRestrictionMethod — This now defaults to 'autodetect', which will
|
||
enable sandboxing for shell commands using firejail, if it's installed. To
|
||
disable restrictions, set it to false.
|
||
* $wgLegacyJavaScriptGlobals – This deprecated setting now default to false,
|
||
instead of true, ahead of its planned removal.
|
||
|
||
==== 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 —
|
||
These, deprecated in 1.34, have been removed. Use $wgUseCdn, $wgCdnServers,
|
||
$wgCdnServersNoPurge, or $wgCdnMaxAge instead.
|
||
* $wgDisableCounters — This, 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 — These, deprecated in 1.33,
|
||
were removed. The fixes are now always enabled for their respective languages.
|
||
* $wgAllowTitlesInSVG — This, 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 — This setting, 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.
|
||
* $wgEnableRestAPI — This setting is no longer obeyed by MediaWiki core, and
|
||
should not be set set locally. Usage of the setting in code is deprecated; it
|
||
is now set true by default. The setting will be removed completely in 1.36.
|
||
* $wgObjectCaches — The 'slaveOnly' option for SqlBagOStuff, deprecated in 1.34,
|
||
was removed. Use 'replicaOnly' instead.
|
||
|
||
=== 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 hard deprecated.
|
||
* A new BlockPermissionChecker service was introduced for checking
|
||
block-related permissions.
|
||
* The support of 'database' type of extensions has been added to allow 3d party
|
||
databases like Percona be used as storage. See T226857, T253248.
|
||
* Three new return parameters have been added to the
|
||
EditPageGetCheckboxesDefinition hook. Handlers of this hook are no longer
|
||
restricted to defining checkboxes. See the documentation of
|
||
EditPage::getCheckboxesDefinition() for more details.
|
||
* New flag File::RENDER_TMP was added in order to allow
|
||
File::generateAndSaveThumb and File::trasform to render a thumbnail without
|
||
saving it to the storage.
|
||
|
||
=== External library changes in 1.35 ===
|
||
|
||
==== New external libraries ====
|
||
* Added wikimedia/ip-utils 1.0.0.
|
||
* Added wikimedia/parsoid 0.12.0.
|
||
* Added wikimedia/services 2.0.1.
|
||
* Added taylorhakes/promise-polyfill v8.1.3.
|
||
* Added vuejs v2.6.11.
|
||
* Added vuex v3.1.3.
|
||
|
||
===== New development-only external libraries =====
|
||
* Added doctrine/dbal 2.10.2.
|
||
* Added doctrine/sql-formatter 1.1.0.
|
||
* Added pimple/pimple 3.3.0.
|
||
|
||
==== Changed external libraries ====
|
||
* pear/mail_mime was upgraded from 1.10.2 to 1.10.8.
|
||
* 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.3.
|
||
* zordius/lightncandy was upgraded from 0.23.0 to 1.2.5.
|
||
* Updated jQuery from v3.3.1 to v3.4.1.
|
||
* Updated jQuery Migrate from v3.0.1 to v3.1.0.
|
||
* Updated wikimedia/assert from 0.2.2 to 0.5.0.
|
||
* Updated pear/net_smtp from 1.8.1 from to 1.9.1.
|
||
* Updated psr/log from 1.0.2 to 1.1.3.
|
||
* Updated jquery.i18n from 1.0.5 to 1.0.7.
|
||
* Updated guzzlehttp/guzzle from 6.3.3 to 6.5.4.
|
||
* 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 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.
|
||
* Replaced wikimedia/password-blacklist 0.1.4 with wikimedia/common-passwords
|
||
0.2.0.
|
||
|
||
===== Changed development-only external libraries =====
|
||
* Updated symfony/yaml from 3.4.28 to 5.0.5.
|
||
* Updated nikic/php-parser from 3.1.5 to 4.4.0.
|
||
* Updated php-parallel-lint/php-console-highlighter from v0.3.2 to v0.5.
|
||
* Updated php-parallel-lint/php-parallel-lint from v0.9.2 to v1.2.0.
|
||
* Updated psy/psysh from 0.9.9 to 0.10.4.
|
||
* Updated monolog/monolog from 1.24.0 to 1.25.2.
|
||
* Upgrade mediawiki-codesniffer from 28.0.0 to 30.0.0.
|
||
* Updated composer/spdx-licenses from 1.5.1 to 1.5.3.
|
||
* Updated monolog/monolog from 1.25.2 to 1.25.3.
|
||
* Updated qunit from 2.9.1 to 2.10.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.
|
||
|
||
=== 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., except it must be no
|
||
greater than $wgWatchlistExpiryMaxDuration, or an infinity value.
|
||
- 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.
|
||
* (T254854) Added language support for Southern Altay (alt).
|
||
|
||
=== Breaking changes in 1.35 ===
|
||
* MediaWiki no longer supports PHP 7.2; use PHP 7.3.19+ (T228346, T257879).
|
||
* 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.
|
||
* The mediawiki.notify module was removed. The mw.notify() shortcut is now
|
||
available by default, without any dependency.
|
||
* (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.
|
||
* (T251855) The mw.Map#exists method in JavaScript no longer supports checking
|
||
multiple keys. This affects mw.config.exists() and mw.user.tokens.exists().
|
||
* 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.
|
||
* Passing a sequential array as the second parameter to
|
||
Sanitizer::validateAttributes() has been deprecated; use an associative
|
||
array where keys are the allowed attributes.
|
||
* The $warnCallback parameter to Sanitizer::removeHTMLtags, deprecated since
|
||
its introduction in 1.28, 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.
|
||
* EditPage::$hookError was changed from public to private.
|
||
* 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.
|
||
* DifferenceEngine::$mOldRev and $mNewRev, deprecated for public access in
|
||
1.32, have been removed.
|
||
* DifferenceEngine::revisionDeleteLink, which was previosuly protected, has
|
||
been made private to allow a signature change.
|
||
* DifferenceEngine::getParserOutput, which is protected, has had a breaking
|
||
signature change: the second parameter must be a RevisionRecord object,
|
||
rather than a Revision object.
|
||
* 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.
|
||
* Skin::shouldPreloadLogo() deprecated in 1.32, has been removed.
|
||
* 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.
|
||
* ResourceLoaderWikiModule::invalidateModuleCache has been declared to
|
||
be @internal as part of a signature change. No known uses exist outside
|
||
of MediaWiki core.
|
||
* 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() and User::checkPassword(), deprecated in 1.27,
|
||
were removed. Use AuthManager instead.
|
||
* All constants and class functions now have explicit visibility modifiers. This
|
||
means, per [[mw:Stable interface policy]], that these should now be considered
|
||
stable. This also helps MW align with PSR 2 and PSR 12. This was done based on
|
||
audits of the corpus of skins and extensions hosted in Gerrit. If you find any
|
||
that you need to be less restrictive (i.e. public or protected), please report
|
||
these so that we can re-evaluate or suggest workarounds.
|
||
* BaseTemplate::msgWiki(), deprecated in 1.33, was removed. Use ->msg() or
|
||
->getMsg() instead.
|
||
* QuickTemplate::msgWiki(), deprecated in 1.33, was removed. Use ->msg()
|
||
instead.
|
||
* WebInstaller::getErrorBox() and ::getWarningBox(), deprecated in 1.34,
|
||
were removed. Use Html::errorBox() or ::warningBox() instead.
|
||
* SpecialVersion::getExtensionCredits() and SpecialVersion::getSkinCredits()
|
||
have become private without deprecation.
|
||
* As part of the migration to a new hook system (T240307), the following classes
|
||
now require an additional HookContainer constructor parameter:
|
||
- AuthManager
|
||
- BadFileLookup
|
||
- BlockManager
|
||
- ClassicInterwikiLookup
|
||
- ContentHandlerFactory
|
||
- ContentSecurityPolicy
|
||
- DefaultOptionsManager
|
||
- DerivedPageDataUpdater
|
||
- FullSearchResultWidget
|
||
- HtmlCacheUpdater
|
||
- LanguageFactory
|
||
- LanguageNameUtils
|
||
- LinkRenderer
|
||
- LinkRendererFactory
|
||
- LocalisationCache
|
||
- MagicWordFactory
|
||
- MessageCache
|
||
- NamespaceInfo
|
||
- PageEditStash
|
||
- PageHandlerFactory
|
||
- PageUpdater
|
||
- ParserFactory
|
||
- PermissionManager
|
||
- RevisionStore
|
||
- RevisionStoreFactory
|
||
- Router
|
||
- SearchEngineConfig
|
||
- SearchEngineFactory
|
||
- SearchFormWidget
|
||
- SearchNearMatcher
|
||
- SessionBackend
|
||
- SpecialPageFactory
|
||
- UserNameUtils
|
||
- UserOptionsManager
|
||
- WatchedItemQueryService
|
||
- WatchedItemStore
|
||
* The following classes now require setHookContainer() to be called after
|
||
construction:
|
||
- AuthenticationProvider
|
||
- ResourceLoaderModule
|
||
- SearchEngine
|
||
* The parameters to ChronologyProtector::getTouched() and
|
||
ILBFactory::getChronologyProtectorTouched() were changed without backwards
|
||
compatibility.
|
||
* The deprecated $blacklist parameter to wfIsBadImage() has been removed.
|
||
* SpecialBlock::checkUnblockSelf no longer accepts an integer representing
|
||
an user ID as part of ongoing refactoring of SpecialBlock class.
|
||
* User::setInternalPassword() and User::setPassword(), deprecated in 1.27, have
|
||
been removed. Use User::changeAuthenticationData() instead.
|
||
* User::selectFields(), deprecated in 1.31, has been removed. Use
|
||
User::getQueryInfo() instead.
|
||
* The "legacy" serialization type in RESTBagOStuff, deprecated in 1.34,
|
||
has been removed.
|
||
* The populateContentModel.php maintenance script was removed. It has
|
||
been replaced by the populateContentTables.php script.
|
||
* The findHooks.php maintenance script, for the old hooks system, was removed.
|
||
* (T257278) Calling MediaWiki\Shell\Command::restrict() will now overwrite
|
||
any previous restrictions rather than adding to them, making it possible to
|
||
disable the default restrictions.
|
||
|
||
=== 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.
|
||
* 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.
|
||
* DerivedPageDataUpdater::prepareUpdate accepted as its second parameter an
|
||
optional array of options. Specifying the value of the `oldrevision` key of
|
||
the array to be a Revision object, rather than a RevisionRecord object, is
|
||
hard deprecated. The same applies to the options parameter in
|
||
WikiPage::doEditUpdates.
|
||
* 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.
|
||
- BeforeParserrenderImageGallery
|
||
No replacement; MediaHandler provides for customizable media rendering
|
||
- ParserBeforeTidy
|
||
Use ParserAfterTidy instead to avoid exposing internal half-parsed state
|
||
- ParserBeforeStrip
|
||
No replacement; stripping is no longer supported.
|
||
- ParserAfterStrip
|
||
No replacement; stripping is no longer supported.
|
||
- 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::setAllowExternalImages(), ::setAllowExternalImagesFrom(),
|
||
and ::setEnableImageWhitelist() have been deprecated. Future parsers
|
||
will not allow per-parser configuration of image filtering; use
|
||
site configuration instead.
|
||
- 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 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 SkinTemplatePreventOtherActiveTabs and SkinTemplateTabAction hooks have
|
||
been hard deprecated. Please use the SkinTemplateNavigation__Universal hook
|
||
instead.
|
||
* ResourceLoaderFileModule::compileLessFile() has been deprecated, use
|
||
ResourceLoaderFileModule::compileLessString() instead
|
||
* The SquidPurgeClient and SquidPurgeClientPool classes have been deprecated.
|
||
Use MultiHttpClient or HtmlCacheUpdater instead.
|
||
* MimeAnalyzer::getExtensionsForType() and ::getTypesForExtensions() were
|
||
deprecated in favor of MimeAnalyzer::getExtensionsFromMimeType() and
|
||
::getMimeTypesFromExtension(), respectively. The new methods return arrays
|
||
rather than strings.
|
||
* 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.
|
||
* PageArchive::getRevision is hard deprecated.
|
||
* 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 (note however that the method is deprecated
|
||
in its entirely in favor of the new WatchlistNotificationManager service)
|
||
- PatrolLog::record
|
||
- LogEventsList::userCan
|
||
- LogEventsList::userCanBitfield
|
||
- LogEventsList::userCanViewLogType
|
||
- LogPage::addEntry
|
||
- FileDeleteForm::doDelete
|
||
- OldLocalFile::userCan
|
||
- ArchivedFile::userCan
|
||
- File::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
|
||
- 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 ::updateIfNewerOn(), and
|
||
WikiPage::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.
|
||
* WikiPage::prepareContentForEdit previously accepted either a Revision or a
|
||
RevisionRecord object as its optional second parameter. Passing a Revision
|
||
is now hard deprecated.
|
||
* 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.
|
||
* WikiPage::doEditUpdates previously accepted a Revision object as its first
|
||
parameter. It now accepts RevisionRecord objects, and passing Revision
|
||
objects is deprecated.
|
||
* 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
|
||
* File::recordUpload (along with the respective methods in the LocalFile and
|
||
ForeignDBFile classes) is hard deprecated, and LocalFile::recordUpload2 is
|
||
soft deprecated. Use the new LocalFile::recordUpload3, which has a different
|
||
signature and requires that a User parameter is passed.
|
||
* 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::updateNewtalk now accepts as its optional third parameter a
|
||
RevisionRecord object; passing a Revision is hard deprecated.
|
||
* User::getNewMessageRevisionId and ::getNewMessageLinks were 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. All methods
|
||
have now been individually hard deprecated:
|
||
- ::__construct - create MutableRevisionRecord objects instead
|
||
- ::newFromId - use RevisionLookup::getRevisionById instead
|
||
- ::newFromTitle - use RevisionLookup::getRevisionByTitle instead
|
||
- ::newFromPageId - use RevisionStore::getRevisionByPageId instead
|
||
- ::newFromArchiveRow - use RevisionFactory::newRevisionFromArchiveRow
|
||
- ::newFromRow - use RevisionStore::newRevisionFromRow instead
|
||
- ::loadFromPageId - use RevisionStore::getRevisionByPageId instead
|
||
- ::loadFromTitle - use RevisionStore::getRevisionByTitle instead
|
||
- ::loadFromTimestamp - use RevisionStore::getRevisionByTimestamp instead
|
||
- ::getQueryInfo - use RevisionStore::getQueryInfo instead
|
||
- ::getArchiveQueryInfo - use RevisionStore::getArchiveQueryInfo instead
|
||
- ::getParentLengths - use RevisionStore::getRevisionSizes instead
|
||
- ::getRevisionRecord - no replacement
|
||
- ::getId - use RevisionRecord::getId instead
|
||
- ::setId - use MutableRevisionRecord::setId instead
|
||
- ::setUserIdAndName - use MutableRevisionRecord::setUser instead
|
||
- ::getTextId - use SlotRecord::getContentAddress for retrieving an actual
|
||
content address, or RevisionRecord::hasSameContent to compare content
|
||
- ::getParentId - use RevisionRecord::getParentId instead
|
||
- ::getSize - use RevisionRecord::getSize instead
|
||
- ::getSha1 - use RevisionRecord::getSha1 instead
|
||
- ::getTitle - use RevisionRecord::getPageAsLinkTarget instead
|
||
- ::setTitle - the method was previously a no-op
|
||
- ::getPage - use RevisionRecord::getPageId instead
|
||
- ::getUser - use RevisionRecord::getUser and then User::getId instead
|
||
- ::getUserText - use RevisionRecord::getUser and then User::getName instead
|
||
- ::getComment - use RevisionRecord::getComment instead
|
||
- ::isMinor - use RevisionRecord::isMinor instead
|
||
- ::isUnpatrolled - use RevisionStore::getRcIdIfUnpatrolled instead
|
||
- ::getRecentChange - use RevisionStore::getRecentChange instead
|
||
- ::isDeleted - use RevisionRecord::isDeleted instead
|
||
- ::getVisibility - use RevisionRecord::getVisibility instead
|
||
- ::getContent - use RevisionRecord::getContent instead
|
||
- ::getSerializedData - use SlotRecord::getContent for retrieving a
|
||
content object, and Content::serialize for the serialized form
|
||
- ::getContentModel - use SlotRecord::getModel instead
|
||
- ::getContentFormat - use SlotRecord::getFormat instead, with a fallback
|
||
to ContentHandler::getDefaultFormat
|
||
- ::getContentHandler - use ContentHandlerFactory::getContentHandler instead
|
||
- ::getTimestamp - use RevisionRecord::getTimestamp instead
|
||
- ::isCurrent - use RevisionRecord::isCurrent instead
|
||
- ::getPrevious - use RevisionLookup::getPreviousRevision instead
|
||
- ::getNext - use RevisionLookup::getNextRevision instead
|
||
- ::getRevisionText - use RevisionRecord::getContent instead
|
||
- ::compressRevisionText - use SqlBlobStore::compressData instead
|
||
- ::decompressRevisionText - use SqlBlobStore::decompressData instead
|
||
- ::insertOn - use RevisionStore::insertRevisionOn instead
|
||
- ::base36Sha1 - use SlotRecord::base36Sha1 instead
|
||
- ::newNullRevision - use RevisionStore::newNullRevision
|
||
- ::userCan - use RevisionRecord::userCanBitfield instead
|
||
- ::userCanBitfield - use RevisionRecord::userCanBitfield instead
|
||
- ::getTimestampFromId - use RevisionStore::getTimestampFromId instead
|
||
- ::countByPageId - use RevisionStore::countRevisionsByPageId instead
|
||
- ::countByTitle - use RevisionStore::countRevisionsByTitle instead
|
||
- ::userWasLastToEdit - use RevisionStore::userWasLastToEdit instead
|
||
- ::newKnownCurrent - use RevisionStore::getKnownCurrentRevision 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.
|
||
* Multiple hooks that include Revision objects were deprecated. The hooks, as
|
||
well as suitable replacements, are noted below:
|
||
- ArticleRevisionUndeleted (hard deprecated, use the RevisionUndeleted hook)
|
||
- ArticleRollbackComplete (hard deprecated, use the RollbackComplete hook)
|
||
- DiffRevisionTools (hard deprecated, use the DiffTools hook)
|
||
- DiffViewHeader (hard deprecated, use the DifferenceEngineViewHeader hook)
|
||
- HistoryRevisionTools (hard deprecated, use the HistoryTools hook)
|
||
- NewRevisionFromEditComplete (hard deprecated, use the
|
||
RevisionFromEditComplete hook).
|
||
- PageContentInsertComplete (hard deprecated, use the PageSaveComplete hook)
|
||
- PageContentSaveComplete (hard deprecated, use the PageSaveComplete hook)
|
||
- RevisionInsertComplete (soft deprecated in 1.31, now hard deprecated)
|
||
- TitleMoveCompleting (hard deprecated, use the PageMoveCompleting hook)
|
||
- TitleMoveComplete (hard deprecated, use the PageMoveComplete hook)
|
||
- UndeleteShowRevision (hard deprecated)
|
||
* The following RevisionStore methods were deprecated:
|
||
- ::loadRevisionFromTitle
|
||
- ::loadRevisionFromTimestamp
|
||
- ::loadRevisionFromPageId
|
||
- ::listRevisionSizes
|
||
* WikiPage::$mLastRevision was changed from protected to private.
|
||
* 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.
|
||
* 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()` mixin from 'mediawiki.mixins.less' is
|
||
deprecated and should be removed in 1.36.
|
||
* 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 (hard deprecated)
|
||
- Title::getEarliestRevTime
|
||
- WikiPage::getOldestRevision (hard deprecated)
|
||
- Article::getOldestRevision (hard deprecated)
|
||
Use RevisionStore::getFirstRevision instead.
|
||
* WikiPage::commitRollback and ::doRollback are declared to be internal
|
||
in preparation for breaking changes. Neither method has any known
|
||
callers outside of MediaWiki core. Both methods modify an array passed
|
||
by reference ($resultDetails) - accessing the Revision objects added to
|
||
that array (using the keys `current` and `target`) is also deprecated.
|
||
* 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 related
|
||
MagicWordwgVariableIDs hook has been deprecated and renamed; use
|
||
the GetMagicVariableIDs hook instead.
|
||
* 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.
|
||
* A large number of exposed variables and methods of Article were deprecated as
|
||
part of its planned removal:
|
||
- Article::$mContext is deprecated; use getContext()/setContext() instead.
|
||
- Article::__get(), ::__set() are hard deprecated, use the WikiPage properties
|
||
instead.
|
||
- These Article methods were hard deprecated; use their WikiPage equivalents:
|
||
- ::checkFlags,
|
||
- ::checkTouched,
|
||
- ::clearPreparedEdit,
|
||
- ::commitRollback,
|
||
- ::doDeleteArticleReal,
|
||
- ::doEditContent,
|
||
- ::doPurge,
|
||
- ::doRollback,
|
||
- ::doUpdateRestrictions,
|
||
- ::doViewUpdates,
|
||
- ::exists,
|
||
- ::followRedirect,
|
||
- ::getContentHandler,
|
||
- ::getContentModel,
|
||
- ::getContributors,
|
||
- ::getDeletionUpdates,
|
||
- ::getHiddenCategories,
|
||
- ::getId,
|
||
- ::getLatest,
|
||
- ::getLinksTimestamp,
|
||
- ::getMinorEdit,
|
||
- ::getRedirectTarget,
|
||
- ::getRedirectURL,
|
||
- ::getTimestamp,
|
||
- ::getTouched,
|
||
- ::hasViewableContent,
|
||
- ::insertOn,
|
||
- ::insertRedirect,
|
||
- ::insertRedirectEntry,
|
||
- ::isCountable,
|
||
- ::isRedirect,
|
||
- ::loadFromRow,
|
||
- ::loadPageData,
|
||
- ::lockAndGetLatest,
|
||
- ::makeParserOptions,
|
||
- ::pageDataFromId,
|
||
- ::pageDataFromTitle,
|
||
- ::prepareContentForEdit,
|
||
- ::protectDescription,
|
||
- ::protectDescriptionLog,
|
||
- ::replaceSectionAtRev,
|
||
- ::setTimestamp,
|
||
- ::shouldCheckParserCache,
|
||
- ::supportsSections,
|
||
- ::triggerOpportunisticLinksUpdate,
|
||
- ::updateCategoryCounts, and
|
||
- ::updateRedirectOn.
|
||
- Article::generateReason() was hard deprecated; instead, please use
|
||
WikiPage::getAutoDeleteReason().
|
||
- Article::replaceSectionContent() was hard deprecated, use
|
||
Article::replaceSectionAtRev() instead.
|
||
- 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.
|
||
* ApiQueryRevisions::getRollbackToken, which has been soft deprecated since
|
||
1.24, accepted as its third parameter a Revision object. It now accepts
|
||
a RevisionRecord, and passing a Revision is hard deprecated.
|
||
* Passing Article to ParserCache::get() was deprecated
|
||
* ParserOptions::newCanonical() with no first parameter, or null as the first
|
||
parameter, which falls back to using global $wgUser, is hard deprecated.
|
||
* Parser::fetchCurrentRevisionOfTitle, ::statelessFetchRevision, and
|
||
::getRevisionObject were hard deprecated in favor of the new
|
||
::fetchCurrentRevisionRecordOfTitle, ::statelessFetchRevisionRecord,
|
||
and ::getRevisionRecordObject methods respectively.
|
||
* ParserOptions::getCurrentRevisionCallback and ::setCurrentRevisionCallback
|
||
were hard deprecated in favor of the new ::getCurrentRevisionRecordCallback
|
||
and ::setCurrentRevisionRecordCallback methods respectively.
|
||
* Parser::statelessFetchTemplate returns an array; accessing the Revision
|
||
object returned (via the `revision` key to the array) is deprecated. Instead,
|
||
use `revision-record` to retrieve the equivalent RevisionRecord.
|
||
* WikiPage::doEditContent returns an array, and PageUpdater::getStatus returns
|
||
a Status object with an array value. For both of those arrays, accessing the
|
||
Revision object returned (via the `revision` key to the array) is deprecated.
|
||
Instead, use `revision-record` to retrieve the equivalent RevisionRecord.
|
||
* 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.
|
||
* UserRetrieveNewTalks hook was deprecated without replacement.
|
||
* User::getNewtalk and ::setNewtalk were hard deprecated. Use service
|
||
TalkPageNotificationManager instead.
|
||
* EditPage::matchSpamRegex and ::matchSummarySpamRegex were hard deprecated in
|
||
favor of the new SpamChecker service.
|
||
* Title::getNotificationTimestamp, User::clearNotification, and
|
||
User::clearAllNotifications were deprecated in favor of the new
|
||
WatchlistNotificationManager service.
|
||
* 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.
|
||
* Linker::normaliseSpecialPage() has been deprecated, instead make use of
|
||
LinkRenderer::normalizeTarget().
|
||
* SkinTemplate::getPersonalToolsList() was soft deprecated.
|
||
* ChangeTags::truncateTagDescription() has been deprecated.
|
||
* The following methods of the User class are deprecated: getGroups,
|
||
getGroupMemberships, getEffectiveGroups, getAutomaticGroups,
|
||
addGroup, removeGroup, getFormerGroups, getAllGroups, getImplicitGroups,
|
||
addAutopromoteOnceGroups. Use the new UserGroupManager service instead.
|
||
* The following methods of the UserGroupMembership class were deprecated:
|
||
selectFields, getMembershipsForUser, getMembership, insert, delete,
|
||
newFromRow, initFromRow, purgeExpired.
|
||
Use the new UserGroupManager service instead.
|
||
* wfWaitForSlaves() has been hard deprecated. Use LBFactory::waitForReplication
|
||
instead. It was soft deprecated in 1.27.
|
||
* BaseTemplate::getAfterPortlet and ::renderAfterPortlet have been deprecated in
|
||
favor of the Skin::getAfterPortlet method. Skin::getAfterPortlet does not wrap
|
||
the result in a div, callers are responsible for that.
|
||
The hook BaseTemplateAfterPortlet, called by both methods has been deprecated
|
||
as well and is replaced by SkinAfterPortlet.
|
||
* Autopromote class has been soft deprecated and it's methods moved into
|
||
UserGroupManager.
|
||
* SkinTemplateBuildNavUrlsNav_urlsAfterPermalink hook has been deprecated.
|
||
Use SidebarBeforeOutput hook and get the revision id from the OutputPage
|
||
object.
|
||
* BaseTemplate::getToolbox() method has been soft deprecated. The toolbox data
|
||
is now available in a sidebar data array which you can get from any class
|
||
that's extending QuickTemplate class. The hook associated with this method,
|
||
BaseTemplateToolbox, has been hard deprecated. To add items to the toolbox,
|
||
use SidebarBeforeOutput hook instead.
|
||
* The SkinTemplateOutputPageBeforeExec hook is deprecated.
|
||
The page [[mw:Manual:Hooks/SkinTemplateOutputPageBeforeExec]] and T60137
|
||
for recommendations for alternative approaches based on how developers
|
||
previously used this hook.
|
||
* SkinTemplateToolboxEnd hook has been deprecated. Use SidebarBeforeOutput hook
|
||
instead.
|
||
* Using Skin::addToBodyAttributes() method to add body attributes has been
|
||
deprecated. Use OutputPageBodyAttributes hook instead.
|
||
* Installer::getDBTypes has been hard deprecated in favor of
|
||
InstallerDBSupport::getDatabases
|
||
* The hooks BeforeHttpsRedirect, CanIPUseHTTPS and UserRequiresHTTPS were
|
||
deprecated, as part of a long-term plan to remove support for mixed
|
||
HTTP/HTTPS wikis.
|
||
* Skin::generateDebugHTML() has been hard deprecated. Call
|
||
MWDebug::getHTMLDebugLog() directly.
|
||
* ExternalStoreDB::getSlave(), soft deprecated in 1.34, was hard deprecated.
|
||
Use ExternalStoreDB::getReplica() instead.
|
||
* Less variables in mediawiki.ui/variables.less file that don't follow the
|
||
standard variable naming scheme (compare WikimediaUI Base) including
|
||
`@colorGray* variables have been deprecated. New variables are in place and
|
||
aliases have been set. Replace occurrences and use the new variables instead.
|
||
|
||
=== 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.
|
||
* The printableversion has been marked as deprecated per T167956.
|
||
* (T30162, T245387) The installer supports using a Postgres server running
|
||
on a custom port other than 5432.
|
||
|
||
== Compatibility ==
|
||
MediaWiki 1.35 requires PHP 7.3.19 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.
|