Update to MediaWiki 1.32.0

This commit is contained in:
Pierre Schmitz 2019-02-10 10:16:47 +01:00 committed by Pierre Schmitz
parent 4fdfca233a
commit 5c06e6145e
6475 changed files with 243151 additions and 149734 deletions

12
.gitmodules vendored
View File

@ -1,20 +1,16 @@
[submodule "extensions/CheckUser"]
path = extensions/CheckUser
url = https://github.com/wikimedia/mediawiki-extensions-CheckUser.git
branch = REL1_31
branch = REL1_32
[submodule "extensions/AbuseFilter"]
path = extensions/AbuseFilter
url = https://github.com/wikimedia/mediawiki-extensions-AbuseFilter.git
branch = REL1_31
branch = REL1_32
[submodule "extensions/TitleKey"]
path = extensions/TitleKey
url = https://github.com/wikimedia/mediawiki-extensions-TitleKey.git
branch = REL1_31
branch = REL1_32
[submodule "extensions/BounceHandler"]
path = extensions/BounceHandler
url = https://github.com/wikimedia/mediawiki-extensions-BounceHandler.git
branch = REL1_31
[submodule "extensions/Nuke"]
path = extensions/Nuke
url = https://github.com/wikimedia/mediawiki-extensions-Nuke.git
branch = REL1_31
branch = REL1_32

View File

@ -1 +1 @@
The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).

27
CREDITS
View File

@ -1,5 +1,5 @@
{{int:version-credits-summary}} <!--
MediaWiki 1.31 is a collaborative project released under the
MediaWiki 1.32 is a collaborative project released under the
GNU General Public License v2. We would like to recognize the
following names for their contribution to the product.
@ -26,6 +26,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Adrian Lang
* Ævar Arnfjörð Bjarmason
* Aftab
* Agabi10
* Agbad
* Ahmad Sherif
* Ajayrahul P
@ -34,6 +35,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Alejandro Mery
* Aleksey Bekh-Ivanov
* AlephNull
* Alex Ezell
* Alex Ivanov
* Alex Shih-Han Lin
* Alex Z.
@ -85,6 +87,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Bagariavivek
* Bahodir Mansurov
* balloonguy
* Bartek Łukawski
* Bartosz Dziewoński
* Base
* Beau
@ -94,6 +97,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Benny Situ
* Bergi
* Bertrand Grondin
* Bill Pirkle
* Bill Traynor
* Billinghurst
* billm
@ -140,6 +144,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Conrad Irwin
* Cormac Parle
* cryptocoryne
* Daimona Eaytoy
* Dan Barrett
* Dan Collins
* Dan Duvall
@ -173,6 +178,7 @@ The following list can be found parsed under Special:Version/Credits -->
* David Sn
* Dayllan Maza
* dcausse
* dcot
* dennisroczek
* Denny Vrandecic
* Dereckson
@ -191,6 +197,7 @@ The following list can be found parsed under Special:Version/Credits -->
* dr0ptp4kt
* Ebrahim Byagowi
* Ed Sanders
* Ed Schouten
* Eddie Greiner-Petter
* Edward Chernenko
* Edward Z. Yang
@ -250,6 +257,7 @@ The following list can be found parsed under Special:Version/Credits -->
* glaisher
* golopot
* gopavasanth
* Greg Grossmeier
* Greg Maxwell
* Greg Sabino Mullane
* Gregory Szorc
@ -257,6 +265,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Guillaume Blanchard
* Guy Van den Broeck
* Guycn2
* Hagar Shilo
* Haikal Izzuddin
* HakanIST
* Happy-melon
@ -285,9 +294,11 @@ The following list can be found parsed under Special:Version/Credits -->
* Jacob Clark
* jagori
* Jaime Crespo
* Jakob Warkotsch
* Jakub Vrana
* James D. Forrester
* James Earl Douglas
* James Montalvo
* Jan Berkel
* Jan Drewniak
* Jan Gerber
@ -356,6 +367,7 @@ The following list can be found parsed under Special:Version/Credits -->
* kipod
* kishanio
* konarak
* Kosta Harlan
* krishna keshav
* Krzysztof Krzyzaniak
* Krzysztof Zbudniewek
@ -469,6 +481,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Moritz Oberhauser
* Mormegil
* Mr. E23
* MR70
* MrBlueSky
* MrPete
* Mukunda Modell
@ -519,7 +532,9 @@ The following list can be found parsed under Special:Version/Credits -->
* OverlordQ
* Owen Davis
* Paa Kwesi Imbeah
* Pablo Grass
* paladox
* Pankajeshkr
* Patricio Molina
* Patrick Reilly
* Patrick Westerhoff
@ -530,7 +545,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Pavel Selitskas
* Pcoombe
* Perside Rosalie
* petarpetkovic
* Petar Petković
* Peter Coombe
* Peter Gehres
* Peter Hedenskog
@ -559,6 +574,7 @@ The following list can be found parsed under Special:Version/Credits -->
* ptarjan
* pubudu538
* Purodha Blissenbach
* Pwirth
* quiddity
* quietust
* Quim Gil
@ -592,6 +608,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Roman Tsukanov
* Rotem Liss
* Rowan Collins
* runntb
* Russ Nelson
* Russell Blau
* Rusty Burchfield
@ -648,17 +665,22 @@ The following list can be found parsed under Special:Version/Credits -->
* Stephan Muggli
* Stephane Bisson
* Stephen Liang
* Stephen Niedzielski
* Steve Sanbeg
* Steven Roddis
* Steven Walling
* Str4nd
* Strainu
* Subin Siby
* Subramanya Sastry
* Sumit Asthana
* superyetkin
* Suriyaa Kudo
* svip
* Szymon Świerkosz
* T. Bayer
* T.D. Corell
* tacsipacsi
* Tarquin
* TerraCodes
* Thalia Chan
@ -673,6 +695,7 @@ The following list can be found parsed under Special:Version/Credits -->
* Thomas Dalton
* Thomas Gries
* ThomasV
* Tim Eulitz
* Tim Hollmann
* Tim Landscheidt
* Tim Laqua

View File

@ -13,7 +13,6 @@ module.exports = function ( grunt ) {
grunt.loadNpmTasks( 'grunt-jsonlint' );
grunt.loadNpmTasks( 'grunt-karma' );
grunt.loadNpmTasks( 'grunt-stylelint' );
grunt.loadNpmTasks( 'grunt-webdriver' );
karmaProxy[ wgScriptPath ] = {
target: wgServer + wgScriptPath,
@ -28,16 +27,13 @@ module.exports = function ( grunt ) {
'!node_modules/**',
'!resources/lib/**',
'!resources/src/jquery.tipsy/**',
'!resources/src/jquery/jquery.farbtastic.js',
'!resources/src/mediawiki.libs/**',
'!resources/src/mediawiki.libs.jpegmeta/**',
// Third-party code of PHPUnit coverage report
'!tests/coverage/**',
'!vendor/**',
// Explicitly say "**/*.js" here in case of symlinks
'!extensions/**/*.js',
'!skins/**/*.js',
// Skip functions aren't even parseable
'!resources/src/mediawiki.hidpi-skip.js'
'!skins/**/*.js'
]
},
jsonlint: {
@ -104,15 +100,7 @@ module.exports = function ( grunt ) {
return require( 'path' ).join( dest, src.replace( 'resources/', '' ) );
}
}
},
// Configure WebdriverIO task
webdriver: {
test: {
configFile: './tests/selenium/wdio.conf.js'
}
}
} );
grunt.registerTask( 'assert-mw-env', function () {

630
HISTORY
View File

@ -1,7 +1,556 @@
Change notes from older releases. For current info see RELEASE-NOTES-1.31.
Change notes from older releases. For current info see RELEASE-NOTES-1.32.
= MediaWiki 1.31 =
== MediaWiki 1.31.1 ==
This is a security and maintenance release of the MediaWiki 1.31 branch.
=== Changes since MediaWiki 1.31.0 ===
* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
'newbie'.
* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
account lock.
* (T199029, CVE-2018-13258) SECURITY: Tarball was missing .htaccess files.
* (T197229) Bundle Nuke extension, it was accidentally omitted.
* (T193995) Fix undefined patchPath() method call in parser tests.
* (T198687) Fix various selectFields methods to use the string 'NULL', not null.
* Special:BotPasswords now requires reauthentication.
* (T191608, T187638) Add 'logid' parameter to Special:Log.
* (T193829) Indicate when a Bot Password needs reset.
* (T198037) GitInfo: Don't try shelling out if it's disabled.
* (T151415) Log email changes.
* (T197206) Fix performance regression when multiple DB used without caching.
* (T197030) PHPSessionHandler: Suppress headers warnings in initialize().
* (T182377, T196793) Exif: Guard against uncountable tag values.
* (T200861) Fix total breakage of SQLite web upgrade.
* (T200864) Fix pingback over-reporting on non-MySQL databases
* (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader
hooks.
== MediaWiki 1.31.0 ==
=== Changes since MediaWiki 1.31.0-rc.2 ===
* (T195783) Initialize PSR-4 namespaces at same stage as normal autoloader.
* (T196092) Hide MySQL binary/utf-8 charset option in the installer.
* (T196185) Don't allow setting $wgDBmysql5 in the installer.
* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
* (T182366) UploadBase::checkXMLEncodingMissmatch() now works on PHP 7.1+
* (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook.
* (T196672) The mtime of extension.json files is now able to be zero
* (T180403) Validate $length in padleft/padright parser functions.
* (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
=== Changes since MediaWiki 1.31.0-rc.0 ===
* (T33223) Drop archive.ar_text and ar_flags.
* Add default edit rate limit of 90 edits/minute for all users.
* (T187645) Use codepoint as tiebreaker when getting first-letters in
IcuCollation.
* (T191947) Don't shell during the installer if shelling out is disabled.
* (T194319) Improve duplicate config setting exception as part of extension
registration.
* (T195211) Don't require trailing slash in PSR-4 autoloader directory.
* (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`.
* Do not incorrectly hide namespace input field in the installer.
* (T186456) Refactor checks looking for PEAR maik libraries to be clearer.
=== Important pre-upgrade notes for 1.31 ===
* If you're using MySQL, SQLite, or MSSQL, are not using update.php to apply
schema changes, and cannot have downtime to run migrateArchiveText.php and
apply patch-drop-ar_text.sql manually, you'll have to apply a default value
to the ar_text and ar_flags columns of the archive table or make those
columns nullable before upgrading to MediaWiki 1.31.
maintenance/archives/patch-nullable-ar_text.sql shows how to do this for MySQL.
=== Configuration changes in 1.31 ===
* $wgEnableAPI and $wgEnableWriteAPI are now deprecated and will be removed in
a future version. The API is now considered to be stable, secure and
essential.
* $wgUsejQueryThree was removed, as it is now the default. This was documented
as a temporary variable during the migration period, deprecated since 1.29.
* $wgLogoHD has been updated to support svg images and uses $wgLogo where
possible for fallback images such as png.
* (T44246) $wgFilterLogTypes will no longer ignore 'patrol' when user does not
have the right to mark things patrolled.
* Wikis that contain imported revisions or CentralAuth global blocks should run
maintenance/cleanupUsersWithNoId.php.
* The configuration settings $wgResourceLoaderMinifierStatementsOnOwnLine and
$wgResourceLoaderMinifierMaxLineLength, deprecated since 1.27, were removed.
* (T180921) $wgReferrerPolicy now supports having fallbacks for browsers that
are not using the latest version of the Referrer Policy specification.
* $wgFragmentMode is now set to [ 'legacy', 'html5' ] by default. This is a
first step of migration to human-readable section IDs that will later result
in 'html5' being the default mode.
* CACHE_ACCEL now only supports APC(u) or WinCache. XCache support was removed
as upstream is inactive and has no plans to move to PHP 7.
* The old CategorizedRecentChanges feature, including its related configuration
option $wgAllowCategorizedRecentChanges, has been removed.
* (T188472) The 'comma' value for $wgArticleCountMethod is no longer supported
for performance reasons, and installations with this setting will now work as
if it was configured with 'any'.
* (T185753) MediaWiki now defaults to using RemexHtml to tidy up user input,
rather than being off by default. If you wish to disable HTML tidying
entirely, set $wgTidyConfig to null; if you wish to use the old, deprecated
Tidy external binary, both set $wgTidyConfig to null and $wgUseTidy to true.
* $wgLogAutopatrol now defaults to false instead of true.
* $wgValidateAllHtml was removed and will be ignored.
* $wgScriptExtension, deprecated and ignored since 1.25, was removed. See the
1.25 release notes for more information.
* $wgUseAjax is now marked as deprecated, just like the deprecated AJAX
framework that it enables. Some extensions mistakenly used this to check
whether any AJAX functionality at all should be enabled, further making this
problematic to retain.
* $wgDBmysql5 is now deprecated, and will be removed in a future version. It
has been marked as experimental ever since it was introduced.
=== New features in 1.31 ===
* (T76554) User sub-pages named ….json are now protected in the same way that
….js and ….css pages are, so that configuration options can safely be placed
there.
* Wikimedia\Rdbms\IDatabase->select() and similar methods now support joins
with parentheses for grouping.
* As a first pass in standardizing dialog boxes across the MediaWiki product,
Html class now provides helper methods for messageBox, successBox, errorBox
and warningBox generation.
* (T9240) Imports will now record unknown (and, optionally, known) usernames in
a format like "iw>Example".
* (T20209) Linker (used on history pages, log pages, and so on) will display
usernames formed like "iw>Example" as interwiki links, as if by wikitext like
[[iw:User:Example|iw>Example]].
* (T111605) The 'ImportHandleUnknownUser' hook allows extensions to auto-create
users during an import.
* Added a hook, ParserOutputPostCacheTransform, to allow extensions to affect
the ParserOutput::getText() post-cache transformations.
* Added a hook, UploadForm:getInitialPageText, to allow extensions to alter the
initial page text for file uploads.
* (T181651) The info page for File pages now displays the file's base-16 SHA1
hash value in the table of basic information.
* Style tags with a 'data-mw-deduplicate' attribute will be deduplicated as a
ParserOutput::getText() post-cache transformation. This may be disabled by
passing 'deduplicateStyles' => false to that method.
* The identity of the logged-in or IP "actor" for logged actions is being moved
into a new actor table, with the rows in tables such as revision and logging
referring to the actor ID instead of storing the user ID and name/IP in
every row.
* This is currently gated by $wgActorTableSchemaMigrationStage. Most wikis
can set this to MIGRATION_NEW and run maintenance/migrateActors.php as
soon as any necessary extensions are updated.
* Most code accessing rows for logged actions from the database should use
the relevant getQueryInfo() methods to get the information needed to build
the SQL query. The ActorMigration class may also be used to get feature
-flagged information needed to access actor-related fields during the
migration period.
* Added Wikimedia\Rdbms\IDatabase::cancelAtomic(), to roll back an atomic
section without having to roll back the whole transaction.
* Wikimedia\Rdbms\IDatabase::doAtomicSection(), non-native ::insertSelect(),
and non-MySQL ::replace() and ::upsert() no longer roll back the whole
transaction on failure.
* (T189785) Added a monthly heartbeat ping to the pingback feature.
* The CLI installer (maintenance/install.php) learned to detect and include
extensions. Pass --with-extensions to enable that feature.
* (T184791) rc_patrolled now has three states: "0" for unpatrolled,
"1" for manually patrolled and "2" for autopatrolled actions.
* Extensions can now set their type to "editor" if they provide an editor or
enhance the editing experience.
* Extensions can use a PSR-4 autoloader by setting an "AutoloadNamespaces"
property in extension.json. See the documentation at
<https://mediawiki.org/wiki/Manual:Extension.json/Schema#AutoloadNamespaces>
for more details and an example.
* (T19099) Tabs which link to pages that don't exist (like those to uncreated
discussion pages) now have a tooltip to indicate state, not just colour.
=== External library changes in 1.31 ===
* pear/mail, pear/mail_mime and pear/mail_mime-decode have been moved from
suggested to required. These packages now must be installed via composer
and not via PEAR itself.
==== Upgraded external libraries ====
* Updated jquery.chosen from v0.9.14 to v1.8.2.
* Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
* Updated nikic/php-parser from 2.1.0 to 3.1.3 (development dependency).
* Updated wikimedia/ip-set from 1.1.0 to 1.2.0.
* Updated wikimedia/relpath from 2.0.0 to 2.1.1.
* Updated wikimedia/running-stat from 1.1.0 to 1.2.0.
* Updated wikimedia/wrappedstring from 2.2.0 to 2.3.0.
* Updated mediawiki/at-ease from 1.1.0 to 1.2.0.
* Updated wikimedia/php-session-serializer from 1.0.4 to 1.0.6.
* Updated wikimedia/remex-html from 1.0.2 to 1.0.3.
* Updated wikimedia/html-formatter from 1.0.1 to 1.0.2.
==== New external libraries ====
* Added wikimedia/object-factory 1.0.0
==== Removed and replaced external libraries ====
* (T17845) The deprecated 'jquery.badge' module was removed.
* The deprecated 'jquery.autoEllipsis' module was removed. Use the CSS
text-overflow property instead.
* The deprecated 'jquery.placeholder' module was removed.
* The deprecated 'jquery.appear' module was removed. Use the
'mediawiki.viewport' module instead.
* mediawiki/at-ease was replaced with wikimedia/at-ease.
=== Bug fixes in 1.31 ===
* (T90902) Non-breaking space in header ID breaks anchor.
* (T189375) CSSMin now allows quoted urls in `url()` syntax to start with a
space.
* (T2087, T10897, T87753, T174639) Whitespace created by category and language
links is now stripped rather than leaving blank lines in odd places.
* (T3780) Uploads with UTF-8 names now work on PHP7.1+ on Windows servers.
* (T182366) UploadBase::checkXMLEncodingMissmatch() now works on PHP 7.1+
=== Action API changes in 1.31 ===
* (T185058) The 'name' value to tgprop for action=query&list=tags has been
removed. It has never made a difference in the output, the name was always
returned regardless.
* The 'watch' and 'unwatch' parameters for action=move have been removed. They
were deprecated and also accidentally nonfunctional since 1.17 in 2010. Use
'watchlist' instead.
=== Action API internal changes in 1.31 ===
* ApiBase::getProfileDBTime, deprecated since 1.25, was removed.
* ApiBase::getModuleProfileName, deprecated since 1.25, was removed.
* ApiBase::getProfileTime, deprecated since 1.25, was removed.
=== Languages updated in 1.31 ===
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.
* (T180052) Mirandese (mwl) now supports gendered NS_USER/NS_USER_TALK.
* (T182305) New language support: Nyungar (nys).
* (T186359) New language support: Siberian Tatar [cебертатар] (sty).
* (T186635) New language support: Guianan Creole (gcr).
* (T186647) New language support: Kumyk [къумукъ] (kum).
* (T187750) New language support: Spanish formal address (es-formal).
* (T187824) New language support: Hungarian formal address (hu-formal).
* (T189127) New language support: Gorontalo (gor).
=== Breaking changes in 1.31 ===
* MessageBlobStore::insertMessageBlob(), deprecated in 1.27, was removed.
* The OutputPage class constructor now requires a context parameter.
Instantiating without context was deprecated in 1.18.
* The mw.page JavaScript singleton, deprecated in 1.30, was removed.
* Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the
related WikiPage::PURGE_* constants, deprecated in 1.29, were removed.
* The Article::selectFields(), ::onArticleCreate(), ::onArticleDelete(), and
::onArticleEdit() methods, deprecated in 1.24, were removed.
* Installer::locateExecutable() and ::locateExecutableInDefaultPaths() were
removed. Use ExecutableFinder::findInDefaultPaths() instead.
* The deprecated MW_DIFF_VERSION constant was removed.
DifferenceEngine::MW_DIFF_VERSION should be used instead.
* Due to significant refactoring, method ContribsPager::getUserCond() that had
no access restriction has been removed.
* The Block class will no longer accept usable-but-missing usernames for
'byText' or ->setBlocker(). Callers should either ensure the blocker exists
locally or use a new interwiki-format username like "iw>Example".
* The following methods and constants from the WatchedItem class, which were
deprecated in 1.27, have been removed:
* WatchedItem::getTitle()
* WatchedItem::fromUserTitle()
* WatchedItem::addWatch()
* WatchedItem::removeWatch()
* WatchedItem::isWatched()
* WatchedItem::duplicateEntries()
* WatchedItem::IGNORE_USER_RIGHTS
* WatchedItem::CHECK_USER_RIGHTS
* WatchedItem::DEPRECATED_USAGE_TIMESTAMP
* The $statementsOnOwnLine parameter of JavaScriptMinifier::minify was removed.
$wgResourceLoaderMinifierStatementsOnOwnLine, the corresponding configuration
variable, has been deprecated since 1.27 and was removed as well.
* The $maxLineLength parameter of JavaScriptMinifier::minify was removed.
$wgResourceLoaderMinifierMaxLineLength, the corresponding configuration
variable, has been deprecated since 1.27 and was removed as well.
* The HtmlFormatter class, deprecated in 1.27, was removed. The namespaced
HtmlFormatter\HtmlFormatter class should be used instead.
* The driver 'mysql' for MySQL, deprecated in MediaWiki 1.30, has been removed.
The driver has been deprecated since PHP 5.5 and was removed in PHP 7.0. The
default driver for MySQL has been 'mysqli' since MediaWiki 1.22.
* The following properties of PreparedEdit were deprecated in 1.21 and have
been removed:
* PreparedEdit->newText
* PreparedEdit->oldText
* PreparedEdit->pst
* ParserOutput objects which are generated using a non-default value for
ParserOptions::setWrapOutputClass() can no longer be added to the parser
cache.
* The following deprecated methods from the OutputPage class have been removed:
* OutputPage::addExtensionStyle(); deprecated in 1.27
* OutputPage::getExtStyle(); deprecated in 1.27
* OutputPage::setETag(); deprecated in 1.28 (obsolete no-op)
* OutputPage::setSquidMaxage(); deprecated in 1.27
* OutputPage::readOnlyPage(); deprecated in 1.25
* OutputPage::rateLimited(); deprecated in 1.25
* Additionally, the protected OutputPage::$mExtStyles array, only accessed
through the above and with no known uses, was removed.
* The no-op method Skin::showIPinHeader(), deprecated in 1.27, was removed.
* The following variables and methods in EditPage, deprecated in MediaWiki 1.30,
were removed:
* $isCssJsSubpage — use ::isUserConfigPage()
* $isCssSubpage — use ::isUserCssConfigPage()
* $isJsSubpage — use ::isUserJsConfigPage()
* $isWrongCaseCssJsPage use ::isWrongCaseUserConfigPage()
* ::getSummaryInput() use ::getSummaryInputWidget()
* ::getSummaryInputOOUI() use ::getSummaryInputWidget()
* ::getCheckboxes() use ::getCheckboxesWidget() or
::getCheckboxesDefinition()
* ::getCheckboxesOOUI() use ::getCheckboxesWidget() or
::getCheckboxesDefinition()
* ResourceLoaderModule::getPosition(), deprecated in 1.29, has been removed.
* In User, the cookie-related methods which were wrappers for the functions on
the response object, and were deprecated in 1.27, have been removed:
* ::setCookie()
* ::clearCookie()
* ::setExtendedLoginCookie()
Note that User::setCookies() remains, and is not deprecated.
* Also in User, some auth-related methods which were deprecated in 1.27 have
been removed:
* ::getEditTokenTimestamp() use MediaWiki\Session\Token::getTimestamp()
* ::getPasswordFactory() create a PasswordFactory directly
* ::passwordChangeInputAttribs()
* The global functions wfProfileIn and wfProfileOut, deprecated in 1.25, have
been removed.
* SpecialPageFactory::getList(), deprecated in 1.24, has been removed. You can
use ::getNames() instead.
* OpenSearch::getOpenSearchTemplate(), deprecated in 1.25, has been removed. You
can use ApiOpenSearch::getOpenSearchTemplate() instead.
* The global function wfBaseConvert, deprecated in 1.27, has been removed. Use
Wikimedia\base_convert() directly.
* Calling Database::begin() explicitly during an implicit transaction or when
DBO_TRX is set results in an exception. Calling Database::commit() explicitly
for an implicit transaction also results in an exception. Previously these
were logged as errors. The startAtomic() and endAtomic() methods, or
AtomicSectionUpdate should be used instead.
* The global function wfOutputHandler() was removed, use the its replacement
MediaWiki\OutputHandler::handle() instead. The global function was only
sometimes defined. Its replacement is always available via the autoloader.
* ChangeTags::listExtensionActivatedTags and ::listExtensionDefinedTags,
deprecated in 1.28, have been removed. Use ::listSoftwareActivatedTags() and
::listSoftwareDefinedTags() instead.
* Title::getTitleInvalidRegex(), deprecated in 1.25, has been removed. You can
use MediaWikiTitleCodec::getTitleInvalidRegex() instead.
* HTMLForm & VFormHTMLForm::isVForm(), deprecated in 1.25, have been removed.
* The ProfileSection class, deprecated in 1.25 and unused, has been removed.
* The ResourceLoaderGetLessVars hook, deprecated in 1.30, has been removed. Use
ResourceLoaderModule::getLessVars() to expose local variables instead of
global ones.
* As part of work to modernise user-generated content clean-up, a config option
and some methods related to HTML validity were removed without deprecation.
The public methods MWTidy::checkErrors() and the path through which it was
called, TidyDriverBase::validate(), are removed, as are the testing methods
MediaWikiTestCase::assertValidHtmlSnippet() and ::assertValidHtmlDocument().
The $wgValidateAllHtml configuration option is removed and will be ignored.
* Execution of external programs using MediaWiki\Shell\Command now applies
the RESTRICT_DEFAULT Firejail restriction by default.
* The ResourceLoaderModule::getHashMtime() and ::getDefinitionMtime() methods,
deprecated in 1.26, were removed.
* The deprecated 'mediawiki.widgets.CategorySelector' module alias was removed.
Use the 'mediawiki.widgets.CategoryMultiselectWidget' module directly.
=== Deprecations in 1.31 ===
* The Revision class was deprecated in favor of RevisionStore, BlobStore, and
RevisionRecord and its subclasses.
* The global function wfBCP47 is deprecated in favour of LanguageCode::bcp47.
* The global function wfCountDown is now deprecated in favor of
Maintenance::countDown.
* Several methods for returning lists of fields to select from the database
have been deprecated in favor of similar methods that also return the tables
to select from and the join conditions for those tables.
* Block::selectFields() → Block::getQueryInfo()
* RecentChange::selectFields() → RecentChange::getQueryInfo()
* ArchivedFile::selectFields() → ArchivedFile::getQueryInfo()
* LocalFile::selectFields() → LocalFile::getQueryInfo()
* LocalFile::getCacheFields() with a prefix no longer works
* LocalFile::getLazyCacheFields() with a prefix no longer works
* OldLocalFile::selectFields() → OldLocalFile::getQueryInfo()
* RecentChange::selectFields() → RecentChange::getQueryInfo()
* Revision::userJoinCond() → Revision::getQueryInfo( [ 'user' ] )
* Revision::selectUserFields() → Revision::getQueryInfo( [ 'user' ] )
* Revision::pageJoinCond() → Revision::getQueryInfo( [ 'page' ] )
* Revision::selectPageFields() → Revision::getQueryInfo( [ 'page' ] )
* Revision::selectTextFields() → Revision::getQueryInfo( [ 'text' ] )
* Revision::selectFields() → Revision::getQueryInfo()
* Revision::selectArchiveFields() → Revision::getArchiveQueryInfo()
* User::selectFields() → User::getQueryInfo()
* WikiPage::selectFields() → WikiPage::getQueryInfo()
* Revision::setUserIdAndName() was deprecated.
* Access to TitleValue class properties was deprecated, the relevant getters
should be used instead.
* DifferenceEngine::getDiffBodyCacheKey() is deprecated. Subclasses should
override DifferenceEngine::getDiffBodyCacheKeyParams() instead.
* Use of Maintenance::error( $err, $die ) to exit script was deprecated. Use
Maintenance::fatalError() instead.
* Passing a ParserOptions object to OutputPage::parserOptions() is deprecated.
* The RevisionInsertComplete hook is now deprecated; use instead the hook
RevisionRecordInserted. RevisionInsertComplete is still called, but the second
and third parameter will always be null. Hard deprecation is scheduled for 1.32.
* The following methods that get and set ParserOutput state are deprecated.
Callers should use the new stateless $options parameter to
ParserOutput::getText() instead.
* ParserOptions::getEditSection()
* ParserOptions::setEditSection()
* ParserOutput::getEditSectionTokens()
* ParserOutput::setEditSectionTokens()
* ParserOutput::getTOCEnabled()
* ParserOutput::setTOCEnabled()
* OutputPage::enableSectionEditLinks()
* OutputPage::sectionEditLinksEnabled()
* The public ParserOutput state fields $mTOCEnabled and $mEditSectionTokens
are also deprecated.
* License::getLicenses has been deprecated; use License::getLines instead.
* QuickTemplate::setRef() was deprecated in favour of QuickTemplate::set().
Setting template variables by reference allowed violating the principle of
data being immutable once added to the skin template. In practice, this method
was not being used for that. Rather, setRef() existed as memory optimisation
for PHP 4.
* QuickTemplate::setTranslator() and MediaWikiI18N::set() were deprecated in
favour of Skin::msg() parameters.
* MediaWikiI18N::translate() was deprecated in favour of Skin::msg() or
wfMessage().
* Passing false to ParserOptions::setWrapOutputClass() is deprecated. Use the
'unwrap' transform to ParserOutput::getText() instead.
* \ObjectFactory (no namespace) is deprecated, the namespaced class
\Wikimedia\ObjectFactory from the wikimedia/object-factory library should be
used instead.
* CommentStore::newKey is deprecated. Instead, get an instance from
MediaWikiServices.
* The following CommentStore methods have had their signatures changed to
introduce a $key parameter, usage of the methods on instances retrieved from
CommentStore::newKey will remain unchanged but deprecated:
* CommentStore::getFields
* CommentStore::getJoin
* CommentStore::getComment
* CommentStore::getCommentLegacy
* CommentStore::insert
* CommentStore::insertWithTemplate
* The following methods in Title have been renamed, and the old ones are
deprecated:
* Title::getSkinFromCssJsSubpage use ::getSkinFromConfigSubpage
* Title::isCssOrJsPage use ::isSiteConfigPage
* Title::isCssJsSubpage use ::isUserConfigPage
* Title::isCssSubpage use ::isUserCssConfigPage
* Title::isJsSubpage use ::isUserJsConfigPage
* The following methods related to caching of half-parsed HTML were deprecated:
* Parser::serializeHalfParsedText()
* Parser::unserializeHalfParsedText()
* Parser::isValidHalfParsedText()
* StripState::getSubState()
* StripState::merge()
* The DeferredStringifier class is deprecated, use Message::listParam() instead.
* The type string for the parameter $lang of DateFormatter::getInstance is
deprecated.
* Wikimedia\Rdbms\SavepointPostgres is deprecated.
* The DO_MAINTENANCE constant is deprecated. RUN_MAINTENANCE_IF_MAIN should be
used instead.
* The function wfShellWikiCmd() has been deprecated, use
MediaWiki\Shell::makeScriptCommand().
* In the future, the hooks 'PreferencesFormPreSave' and 'PreferencesGetLegend'
will be allowed to provide any HTMLForm object rather than PreferencesForm.
=== Other changes in 1.31 ===
* Browser support for Internet Explorer 10 was lowered from Grade A to Grade C.
* Browser support for Opera 12 and older was dropped entirely. Opera 15+
continues at Grade A.
* Multi-content-revision capability was introduced into the storage layer. See
<https://mediawiki.org/wiki/Requests_for_comment/Multi-Content_Revisions>.
* The "free" CSS class is now only applied to unbracketed URLs in wikitext.
Links written using square brackets will get the class "text" not "free".
* RFC 157418: Whitespace is trimmed from wikitext headings, wikitext list items,
wikitext table captions, wikitext table headings, wikitext table cells. HTML
headings, HTML list items, HTML table captions, HTML table headings, HTML
table cells will not have this trimming behavior.
== Compatibility ==
MediaWiki 1.31 requires PHP 7.0.0 or later. Although HHVM 3.18.5 or later is
supported, it is generally advised to use PHP 7.0.0 or later for long term
support.
MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
but support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.5.8 or later
* PostgreSQL 9.2 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.31 has several database changes since 1.30, 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.
For notes on 1.30.x and older releases, see HISTORY.
== 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.
= MediaWiki 1.30 =
== MediaWiki 1.30.1 ==
This is a security and maintenance release of the MediaWiki 1.30 branch.
=== Changes since MediaWiki 1.30.0 ===
* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
'newbie'.
* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
account lock.
* (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array.
* Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
* (T189567) the CLI installer (maintenance/install.php) learned to detect and
include extensions. Pass --with-extensions to enable that feature.
* (T190503) Let built-in web server (maintenance/dev) handle .php requests.
* (T167507) selenium: Run Chrome headlessly.
* selenium: Pass -no-sandbox to Chrome under Docker.
* (T179190) selenium: Move logic for running tests from package.json to selenium.sh
* (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
* Add default edit rate limit of 90 edits/minute for all users.
* (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`.
* oojs/oojs-ui updated to remove an unnecessary dependancy.
* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
* (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook.
* (T196672) The mtime of extension.json files is now able to be zero
* (T180403) Validate $length in padleft/padright parser functions.
* (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
* (T193995) Fix undefined patchPath() method call in parser tests.
* Special:BotPasswords now requires reauthentication.
* (T191608, T187638) Add 'logid' parameter to Special:Log.
* (T193829) Indicate when a Bot Password needs reset.
* (T151415) Log email changes.
* (T200861) Fix total breakage of SQLite web upgrade.
* (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader
hooks.
* (T190539) Explicitly require Postgres 9.1.
* (T118420) Unbreak Oracle installer.
== MediaWiki 1.30.0 ==
=== Changes since MediaWiki 1.30.0-rc.0 ===
@ -265,6 +814,49 @@ changes to languages because of Phabricator reports.
= MediaWiki 1.29 =
== MediaWiki 1.29.3 ==
This is a security and maintenance release of the MediaWiki 1.29 branch.
=== Changes since 1.29.2 ===
* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
'newbie'.
* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
account lock.
* (T180551) Fix LanguageSrTest for language converter
* (T180552) Fix langauge converter parser test with self-close tags
* (T180537) Remove $wgAuth usage from wrapOldPasswords.php
* (T180485) InputBox: Have inputbox langconvert certain attributes
* (T161732, T181547) Upgraded Moment.js from v2.15.0 to v2.19.3.
* (T172927) Drop vendor from MW release branch
* (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array
* Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
* (T189567) the CLI installer (maintenance/install.php) learned to detect and
include extensions. Pass --with-extensions to enable that feature.
* (T182381) Mask deprecated call in WatchedItemUnitTest
* (T190503) Let built-in web server (maintenance/dev) handle .php requests.
* The karma qunit tests would fail on some configuration due to headers already
sent. Check headers_sent() before sending cpPosTime headers
* (T167507) selenium: Run Chrome headlessly.
* selenium: Pass -no-sandbox to Chrome under Docker
* (T191247) Use MediaWiki\SuppressWarnings around trigger_error('') instead @
* (T75174, T161041) Unit test ChangesListSpecialPageTest::testFilterUserExpLevel
fails under SQLite.
* (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
* (T179190) selenium: Move test running logic from package.json to selenium.sh.
* (T117839, T193200) PDFHandler: Fix for pdfinfo changes in poppler-utils 0.48.
* Add default edit rate limit of 90 edits/minute for all users.
* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
* (T196672) The mtime of extension.json files is now able to be zero
* (T180403) Validate $length in padleft/padright parser functions.
* (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
* (T194237) Special:BotPasswords now requires reauthentication.
* (T191608, T187638) Add 'logid' parameter to Special:Log.
* (T176097) resourceloader: Disable a flaky MessageBlobStoreTest case
* (T193829) Indicate when a Bot Password needs reset.
* (T151415) Log email changes.
* (T118420) Unbreak Oracle installer.
== MediaWiki 1.29.2 ==
This is a security and maintenance release of the MediaWiki 1.29 branch.
@ -1040,6 +1632,34 @@ There's usually someone online in #mediawiki on irc.freenode.net.
= MediaWiki 1.27 =
== MediaWiki 1.27.5 ==
This is a security and maintenance release of the MediaWiki 1.27 branch.
=== Changes since 1.27.4 ===
* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
'newbie'.
* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
account lock.
* Upgraded Moment.js from v2.8.4 to v2.19.3.
* (T160298) Fixed Special:ActiveUsers due to bad backport.
* (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array.
* Updated list of SPDX licenses for extensions.
* (T189567) the CLI installer (maintenance/install.php) learned to detect and
include extensions. Pass --with-extensions to enable that feature.
* (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
* Add default edit rate limit of 90 edits/minute for all users.
* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
* (T196672) The mtime of extension.json files is now able to be zero.
* (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook.
* (T180403) Validate $length in padleft/padright parser functions.
* (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
* Special:BotPasswords now requires reauthentication.
* (T191608, T187638) Add 'logid' parameter to Special:Log.
* (T193829) Indicate when a Bot Password needs reset.
* (T151415) Log email changes.
* (T118420) Unbreak Oracle installer.
== MediaWiki 1.27.4 ==
This is a security and maintenance release of the MediaWiki 1.27 branch.
@ -4244,7 +4864,7 @@ This is a maintenance release of the MediaWiki 1.22 branch.
=== Changes since 1.22.9 ===
* (bug 64970) Fix support for blobs on DatabaseOracle::update
* (bug 60719) In MediaWiki 1.22, the job queue execution on each page request was changed (Gerrit change 59797) so, instead of executing the job inside the same PHP process that's rendering the page, a new PHP cli command is spawned to execute runJobs.php in the background. It will only work if $wgPhpCli is set to an actual path or safe mode is off, otherwise, the old method will be used. https://www.mediawiki.org/wiki/Manual:Job_queue#Changes_introduced_in_MediaWiki_1.22 for more infomation. This change was in earlier releases of 1.22 but was not noted here until now.
* (bug 60719) In MediaWiki 1.22, the job queue execution on each page request was changed (Gerrit change 59797) so, instead of executing the job inside the same PHP process that's rendering the page, a new PHP cli command is spawned to execute runJobs.php in the background. It will only work if $wgPhpCli is set to an actual path or safe mode is off, otherwise, the old method will be used. https://www.mediawiki.org/wiki/Manual:Job_queue#Changes_introduced_in_MediaWiki_1.22 for more information. This change was in earlier releases of 1.22 but was not noted here until now.
== MediaWiki 1.22.9 ==
This is a security and maintenance release of the MediaWiki 1.22 branch.
@ -5322,7 +5942,7 @@ This is a security and maintenance release of the MediaWiki 1.20 branch.
* Localisation updates from http://translatewiki.net.
* mwdocgen.php: Implement --version option.
* Remove svnstat stuff used in Doxygen generation
* (bug 43594) Correctly supress warnings that were missed after the upstream
* (bug 43594) Correctly suppress warnings that were missed after the upstream
* PHP change to E_STRICT being included in E_ALL.
== MediaWiki 1.20.4 ==
@ -11419,7 +12039,7 @@ it from source control: https://www.mediawiki.org/wiki/Download_from_SVN
* (bug 11082) Fix check for fully-specced table names in Database::tableName
* (bug 11067) Fix regression in upload conflict thumbnail display
* (bug 10985) Resolved cached entries on Special:DoubleRedirects were being
supressed, breaking paging - now strikes out "fixed" results
suppressed, breaking paging - now strikes out "fixed" results
* (bug 8393) <sup> and <sub> need to be preserved (without attributes) for
entries in the table of contents
* (bug 11114) Fix regression in read-only mode error display during editing
@ -15829,7 +16449,7 @@ pages for purposes of page relevancy ranking.
* (bug 1241) Don't show 'cont.' for first entry of the category list
* (bug 1240) Special:Preferences was broken in Slovenian locale when
$wgUseDynamicDates is enabled
* Added magic word MAG_NOCONTENTCONVERT to supress the conversion of the
* Added magic word MAG_NOCONTENTCONVERT to suppress the conversion of the
content of an article. Useful in zh:
* write-lock for updating the zh conversion tables in memcache
* recursively parse subpages of MediaWiki:Zhconversiontable

13
INSTALL
View File

@ -17,11 +17,8 @@ Required software:
MediaWiki is developed and tested mainly on Unix/Linux platforms, but should
work on Windows as well.
If your PHP is configured as a CGI plug-in rather than an Apache module you may
experience problems, as this configuration is not well tested.
Support for rendering mathematical formulas requires installing the Math extension,
see https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Math
Support for specialised content requires installing the relevant extension. For
formulæ, see https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Math
Don't forget to check the RELEASE-NOTES file...
@ -56,7 +53,7 @@ ie. /wiki/index.php/Article.
| will appear. It is common in this case to use w as the folder name and |
| /wiki/ as the virtual article path where your articles pretend to be. |
| |
| See: https://www.mediawiki.org/wiki/Manual:Short_URL |
| See: https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Short_URL |
+--------------------------------------------------------------------------+
Hop into your browser and surf into the wiki directory. It'll direct you into
@ -70,8 +67,8 @@ available to download from the installer. Download this now, there is not a
way (yet) to get it after you exit the installer. Place it in the main wiki
directory, and the wiki should now be working.
Once the wiki is set up, you should remove the mw-config directory (though it will
refuse to config again if the wiki is set up).
Once the wiki is set up, you should remove the mw-config directory (though it
will refuse to config again if the wiki is set up).
----

View File

@ -1,506 +0,0 @@
== MediaWiki 1.31.1 ==
This is a security and maintenance release of the MediaWiki 1.31 branch.
=== Changes since MediaWiki 1.31.0 ===
* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
'newbie'.
* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
account lock.
* (T199029, CVE-2018-13258) SECURITY: Tarball was missing .htaccess files.
* (T197229) Bundle Nuke extension, it was accidentally omitted.
* (T193995) Fix undefined patchPath() method call in parser tests.
* (T198687) Fix various selectFields methods to use the string 'NULL', not null.
* Special:BotPasswords now requires reauthentication.
* (T191608, T187638) Add 'logid' parameter to Special:Log.
* (T193829) Indicate when a Bot Password needs reset.
* (T198037) GitInfo: Don't try shelling out if it's disabled.
* (T151415) Log email changes.
* (T197206) Fix performance regression when multiple DB used without caching.
* (T197030) PHPSessionHandler: Suppress headers warnings in initialize().
* (T182377, T196793) Exif: Guard against uncountable tag values.
* (T200861) Fix total breakage of SQLite web upgrade.
* (T200864) Fix pingback over-reporting on non-MySQL databases
* (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader
hooks.
=== Changes since MediaWiki 1.31.0-rc.2 ===
* (T195783) Initialize PSR-4 namespaces at same stage as normal autoloader.
* (T196092) Hide MySQL binary/utf-8 charset option in the installer.
* (T196185) Don't allow setting $wgDBmysql5 in the installer.
* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
* (T182366) UploadBase::checkXMLEncodingMissmatch() now works on PHP 7.1+
* (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook.
* (T196672) The mtime of extension.json files is now able to be zero
* (T180403) Validate $length in padleft/padright parser functions.
* (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
=== Changes since MediaWiki 1.31.0-rc.0 ===
* (T33223) Drop archive.ar_text and ar_flags.
* Add default edit rate limit of 90 edits/minute for all users.
* (T187645) Use codepoint as tiebreaker when getting first-letters in
IcuCollation.
* (T191947) Don't shell during the installer if shelling out is disabled.
* (T194319) Improve duplicate config setting exception as part of extension
registration.
* (T195211) Don't require trailing slash in PSR-4 autoloader directory.
* (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`.
* Do not incorrectly hide namespace input field in the installer.
* (T186456) Refactor checks looking for PEAR maik libraries to be clearer.
=== Important pre-upgrade notes for 1.31 ===
* If you're using MySQL, SQLite, or MSSQL, are not using update.php to apply
schema changes, and cannot have downtime to run migrateArchiveText.php and
apply patch-drop-ar_text.sql manually, you'll have to apply a default value
to the ar_text and ar_flags columns of the archive table or make those
columns nullable before upgrading to MediaWiki 1.31.
maintenance/archives/patch-nullable-ar_text.sql shows how to do this for MySQL.
=== Configuration changes in 1.31 ===
* $wgEnableAPI and $wgEnableWriteAPI are now deprecated and will be removed in
a future version. The API is now considered to be stable, secure and
essential.
* $wgUsejQueryThree was removed, as it is now the default. This was documented
as a temporary variable during the migration period, deprecated since 1.29.
* $wgLogoHD has been updated to support svg images and uses $wgLogo where
possible for fallback images such as png.
* (T44246) $wgFilterLogTypes will no longer ignore 'patrol' when user does not
have the right to mark things patrolled.
* Wikis that contain imported revisions or CentralAuth global blocks should run
maintenance/cleanupUsersWithNoId.php.
* The configuration settings $wgResourceLoaderMinifierStatementsOnOwnLine and
$wgResourceLoaderMinifierMaxLineLength, deprecated since 1.27, were removed.
* (T180921) $wgReferrerPolicy now supports having fallbacks for browsers that
are not using the latest version of the Referrer Policy specification.
* $wgFragmentMode is now set to [ 'legacy', 'html5' ] by default. This is a
first step of migration to human-readable section IDs that will later result
in 'html5' being the default mode.
* CACHE_ACCEL now only supports APC(u) or WinCache. XCache support was removed
as upstream is inactive and has no plans to move to PHP 7.
* The old CategorizedRecentChanges feature, including its related configuration
option $wgAllowCategorizedRecentChanges, has been removed.
* (T188472) The 'comma' value for $wgArticleCountMethod is no longer supported
for performance reasons, and installations with this setting will now work as
if it was configured with 'any'.
* (T185753) MediaWiki now defaults to using RemexHtml to tidy up user input,
rather than being off by default. If you wish to disable HTML tidying
entirely, set $wgTidyConfig to null; if you wish to use the old, deprecated
Tidy external binary, both set $wgTidyConfig to null and $wgUseTidy to true.
* $wgLogAutopatrol now defaults to false instead of true.
* $wgValidateAllHtml was removed and will be ignored.
* $wgScriptExtension, deprecated and ignored since 1.25, was removed. See the
1.25 release notes for more information.
* $wgUseAjax is now marked as deprecated, just like the deprecated AJAX
framework that it enables. Some extensions mistakenly used this to check
whether any AJAX functionality at all should be enabled, further making this
problematic to retain.
* $wgDBmysql5 is now deprecated, and will be removed in a future version. It
has been marked as experimental ever since it was introduced.
=== New features in 1.31 ===
* (T76554) User sub-pages named ….json are now protected in the same way that
….js and ….css pages are, so that configuration options can safely be placed
there.
* Wikimedia\Rdbms\IDatabase->select() and similar methods now support joins
with parentheses for grouping.
* As a first pass in standardizing dialog boxes across the MediaWiki product,
Html class now provides helper methods for messageBox, successBox, errorBox
and warningBox generation.
* (T9240) Imports will now record unknown (and, optionally, known) usernames in
a format like "iw>Example".
* (T20209) Linker (used on history pages, log pages, and so on) will display
usernames formed like "iw>Example" as interwiki links, as if by wikitext like
[[iw:User:Example|iw>Example]].
* (T111605) The 'ImportHandleUnknownUser' hook allows extensions to auto-create
users during an import.
* Added a hook, ParserOutputPostCacheTransform, to allow extensions to affect
the ParserOutput::getText() post-cache transformations.
* Added a hook, UploadForm:getInitialPageText, to allow extensions to alter the
initial page text for file uploads.
* (T181651) The info page for File pages now displays the file's base-16 SHA1
hash value in the table of basic information.
* Style tags with a 'data-mw-deduplicate' attribute will be deduplicated as a
ParserOutput::getText() post-cache transformation. This may be disabled by
passing 'deduplicateStyles' => false to that method.
* The identity of the logged-in or IP "actor" for logged actions is being moved
into a new actor table, with the rows in tables such as revision and logging
referring to the actor ID instead of storing the user ID and name/IP in
every row.
* This is currently gated by $wgActorTableSchemaMigrationStage. Most wikis
can set this to MIGRATION_NEW and run maintenance/migrateActors.php as
soon as any necessary extensions are updated.
* Most code accessing rows for logged actions from the database should use
the relevant getQueryInfo() methods to get the information needed to build
the SQL query. The ActorMigration class may also be used to get feature
-flagged information needed to access actor-related fields during the
migration period.
* Added Wikimedia\Rdbms\IDatabase::cancelAtomic(), to roll back an atomic
section without having to roll back the whole transaction.
* Wikimedia\Rdbms\IDatabase::doAtomicSection(), non-native ::insertSelect(),
and non-MySQL ::replace() and ::upsert() no longer roll back the whole
transaction on failure.
* (T189785) Added a monthly heartbeat ping to the pingback feature.
* The CLI installer (maintenance/install.php) learned to detect and include
extensions. Pass --with-extensions to enable that feature.
* (T184791) rc_patrolled now has three states: "0" for unpatrolled,
"1" for manually patrolled and "2" for autopatrolled actions.
* Extensions can now set their type to "editor" if they provide an editor or
enhance the editing experience.
* Extensions can use a PSR-4 autoloader by setting an "AutoloadNamespaces"
property in extension.json. See the documentation at
<https://mediawiki.org/wiki/Manual:Extension.json/Schema#AutoloadNamespaces>
for more details and an example.
* (T19099) Tabs which link to pages that don't exist (like those to uncreated
discussion pages) now have a tooltip to indicate state, not just colour.
=== External library changes in 1.31 ===
* pear/mail, pear/mail_mime and pear/mail_mime-decode have been moved from
suggested to required. These packages now must be installed via composer
and not via PEAR itself.
==== Upgraded external libraries ====
* Updated jquery.chosen from v0.9.14 to v1.8.2.
* Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
* Updated nikic/php-parser from 2.1.0 to 3.1.3 (development dependency).
* Updated wikimedia/ip-set from 1.1.0 to 1.2.0.
* Updated wikimedia/relpath from 2.0.0 to 2.1.1.
* Updated wikimedia/running-stat from 1.1.0 to 1.2.0.
* Updated wikimedia/wrappedstring from 2.2.0 to 2.3.0.
* Updated mediawiki/at-ease from 1.1.0 to 1.2.0.
* Updated wikimedia/php-session-serializer from 1.0.4 to 1.0.6.
* Updated wikimedia/remex-html from 1.0.2 to 1.0.3.
* Updated wikimedia/html-formatter from 1.0.1 to 1.0.2.
==== New external libraries ====
* Added wikimedia/object-factory 1.0.0
==== Removed and replaced external libraries ====
* (T17845) The deprecated 'jquery.badge' module was removed.
* The deprecated 'jquery.autoEllipsis' module was removed. Use the CSS
text-overflow property instead.
* The deprecated 'jquery.placeholder' module was removed.
* The deprecated 'jquery.appear' module was removed. Use the
'mediawiki.viewport' module instead.
* mediawiki/at-ease was replaced with wikimedia/at-ease.
=== Bug fixes in 1.31 ===
* (T90902) Non-breaking space in header ID breaks anchor.
* (T189375) CSSMin now allows quoted urls in `url()` syntax to start with a
space.
* (T2087, T10897, T87753, T174639) Whitespace created by category and language
links is now stripped rather than leaving blank lines in odd places.
* (T3780) Uploads with UTF-8 names now work on PHP7.1+ on Windows servers.
* (T182366) UploadBase::checkXMLEncodingMissmatch() now works on PHP 7.1+
=== Action API changes in 1.31 ===
* (T185058) The 'name' value to tgprop for action=query&list=tags has been
removed. It has never made a difference in the output, the name was always
returned regardless.
* The 'watch' and 'unwatch' parameters for action=move have been removed. They
were deprecated and also accidentally nonfunctional since 1.17 in 2010. Use
'watchlist' instead.
=== Action API internal changes in 1.31 ===
* ApiBase::getProfileDBTime, deprecated since 1.25, was removed.
* ApiBase::getModuleProfileName, deprecated since 1.25, was removed.
* ApiBase::getProfileTime, deprecated since 1.25, was removed.
=== Languages updated in 1.31 ===
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.
* (T180052) Mirandese (mwl) now supports gendered NS_USER/NS_USER_TALK.
* (T182305) New language support: Nyungar (nys).
* (T186359) New language support: Siberian Tatar [cебертатар] (sty).
* (T186635) New language support: Guianan Creole (gcr).
* (T186647) New language support: Kumyk [къумукъ] (kum).
* (T187750) New language support: Spanish formal address (es-formal).
* (T187824) New language support: Hungarian formal address (hu-formal).
* (T189127) New language support: Gorontalo (gor).
=== Breaking changes in 1.31 ===
* MessageBlobStore::insertMessageBlob(), deprecated in 1.27, was removed.
* The OutputPage class constructor now requires a context parameter.
Instantiating without context was deprecated in 1.18.
* The mw.page JavaScript singleton, deprecated in 1.30, was removed.
* Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the
related WikiPage::PURGE_* constants, deprecated in 1.29, were removed.
* The Article::selectFields(), ::onArticleCreate(), ::onArticleDelete(), and
::onArticleEdit() methods, deprecated in 1.24, were removed.
* Installer::locateExecutable() and ::locateExecutableInDefaultPaths() were
removed. Use ExecutableFinder::findInDefaultPaths() instead.
* The deprecated MW_DIFF_VERSION constant was removed.
DifferenceEngine::MW_DIFF_VERSION should be used instead.
* Due to significant refactoring, method ContribsPager::getUserCond() that had
no access restriction has been removed.
* The Block class will no longer accept usable-but-missing usernames for
'byText' or ->setBlocker(). Callers should either ensure the blocker exists
locally or use a new interwiki-format username like "iw>Example".
* The following methods and constants from the WatchedItem class, which were
deprecated in 1.27, have been removed:
* WatchedItem::getTitle()
* WatchedItem::fromUserTitle()
* WatchedItem::addWatch()
* WatchedItem::removeWatch()
* WatchedItem::isWatched()
* WatchedItem::duplicateEntries()
* WatchedItem::IGNORE_USER_RIGHTS
* WatchedItem::CHECK_USER_RIGHTS
* WatchedItem::DEPRECATED_USAGE_TIMESTAMP
* The $statementsOnOwnLine parameter of JavaScriptMinifier::minify was removed.
$wgResourceLoaderMinifierStatementsOnOwnLine, the corresponding configuration
variable, has been deprecated since 1.27 and was removed as well.
* The $maxLineLength parameter of JavaScriptMinifier::minify was removed.
$wgResourceLoaderMinifierMaxLineLength, the corresponding configuration
variable, has been deprecated since 1.27 and was removed as well.
* The HtmlFormatter class, deprecated in 1.27, was removed. The namespaced
HtmlFormatter\HtmlFormatter class should be used instead.
* The driver 'mysql' for MySQL, deprecated in MediaWiki 1.30, has been removed.
The driver has been deprecated since PHP 5.5 and was removed in PHP 7.0. The
default driver for MySQL has been 'mysqli' since MediaWiki 1.22.
* The following properties of PreparedEdit were deprecated in 1.21 and have
been removed:
* PreparedEdit->newText
* PreparedEdit->oldText
* PreparedEdit->pst
* ParserOutput objects which are generated using a non-default value for
ParserOptions::setWrapOutputClass() can no longer be added to the parser
cache.
* The following deprecated methods from the OutputPage class have been removed:
* OutputPage::addExtensionStyle(); deprecated in 1.27
* OutputPage::getExtStyle(); deprecated in 1.27
* OutputPage::setETag(); deprecated in 1.28 (obsolete no-op)
* OutputPage::setSquidMaxage(); deprecated in 1.27
* OutputPage::readOnlyPage(); deprecated in 1.25
* OutputPage::rateLimited(); deprecated in 1.25
* Additionally, the protected OutputPage::$mExtStyles array, only accessed
through the above and with no known uses, was removed.
* The no-op method Skin::showIPinHeader(), deprecated in 1.27, was removed.
* The following variables and methods in EditPage, deprecated in MediaWiki 1.30,
were removed:
* $isCssJsSubpage — use ::isUserConfigPage()
* $isCssSubpage — use ::isUserCssConfigPage()
* $isJsSubpage — use ::isUserJsConfigPage()
* $isWrongCaseCssJsPage use ::isWrongCaseUserConfigPage()
* ::getSummaryInput() use ::getSummaryInputWidget()
* ::getSummaryInputOOUI() use ::getSummaryInputWidget()
* ::getCheckboxes() use ::getCheckboxesWidget() or
::getCheckboxesDefinition()
* ::getCheckboxesOOUI() use ::getCheckboxesWidget() or
::getCheckboxesDefinition()
* ResourceLoaderModule::getPosition(), deprecated in 1.29, has been removed.
* In User, the cookie-related methods which were wrappers for the functions on
the response object, and were deprecated in 1.27, have been removed:
* ::setCookie()
* ::clearCookie()
* ::setExtendedLoginCookie()
Note that User::setCookies() remains, and is not deprecated.
* Also in User, some auth-related methods which were deprecated in 1.27 have
been removed:
* ::getEditTokenTimestamp() use MediaWiki\Session\Token::getTimestamp()
* ::getPasswordFactory() create a PasswordFactory directly
* ::passwordChangeInputAttribs()
* The global functions wfProfileIn and wfProfileOut, deprecated in 1.25, have
been removed.
* SpecialPageFactory::getList(), deprecated in 1.24, has been removed. You can
use ::getNames() instead.
* OpenSearch::getOpenSearchTemplate(), deprecated in 1.25, has been removed. You
can use ApiOpenSearch::getOpenSearchTemplate() instead.
* The global function wfBaseConvert, deprecated in 1.27, has been removed. Use
Wikimedia\base_convert() directly.
* Calling Database::begin() explicitly during an implicit transaction or when
DBO_TRX is set results in an exception. Calling Database::commit() explicitly
for an implicit transaction also results in an exception. Previously these
were logged as errors. The startAtomic() and endAtomic() methods, or
AtomicSectionUpdate should be used instead.
* The global function wfOutputHandler() was removed, use the its replacement
MediaWiki\OutputHandler::handle() instead. The global function was only
sometimes defined. Its replacement is always available via the autoloader.
* ChangeTags::listExtensionActivatedTags and ::listExtensionDefinedTags,
deprecated in 1.28, have been removed. Use ::listSoftwareActivatedTags() and
::listSoftwareDefinedTags() instead.
* Title::getTitleInvalidRegex(), deprecated in 1.25, has been removed. You can
use MediaWikiTitleCodec::getTitleInvalidRegex() instead.
* HTMLForm & VFormHTMLForm::isVForm(), deprecated in 1.25, have been removed.
* The ProfileSection class, deprecated in 1.25 and unused, has been removed.
* The ResourceLoaderGetLessVars hook, deprecated in 1.30, has been removed. Use
ResourceLoaderModule::getLessVars() to expose local variables instead of
global ones.
* As part of work to modernise user-generated content clean-up, a config option
and some methods related to HTML validity were removed without deprecation.
The public methods MWTidy::checkErrors() and the path through which it was
called, TidyDriverBase::validate(), are removed, as are the testing methods
MediaWikiTestCase::assertValidHtmlSnippet() and ::assertValidHtmlDocument().
The $wgValidateAllHtml configuration option is removed and will be ignored.
* Execution of external programs using MediaWiki\Shell\Command now applies
the RESTRICT_DEFAULT Firejail restriction by default.
* The ResourceLoaderModule::getHashMtime() and ::getDefinitionMtime() methods,
deprecated in 1.26, were removed.
* The deprecated 'mediawiki.widgets.CategorySelector' module alias was removed.
Use the 'mediawiki.widgets.CategoryMultiselectWidget' module directly.
=== Deprecations in 1.31 ===
* The Revision class was deprecated in favor of RevisionStore, BlobStore, and
RevisionRecord and its subclasses.
* The global function wfBCP47 is deprecated in favour of LanguageCode::bcp47.
* The global function wfCountDown is now deprecated in favor of
Maintenance::countDown.
* Several methods for returning lists of fields to select from the database
have been deprecated in favor of similar methods that also return the tables
to select from and the join conditions for those tables.
* Block::selectFields() → Block::getQueryInfo()
* RecentChange::selectFields() → RecentChange::getQueryInfo()
* ArchivedFile::selectFields() → ArchivedFile::getQueryInfo()
* LocalFile::selectFields() → LocalFile::getQueryInfo()
* LocalFile::getCacheFields() with a prefix no longer works
* LocalFile::getLazyCacheFields() with a prefix no longer works
* OldLocalFile::selectFields() → OldLocalFile::getQueryInfo()
* RecentChange::selectFields() → RecentChange::getQueryInfo()
* Revision::userJoinCond() → Revision::getQueryInfo( [ 'user' ] )
* Revision::selectUserFields() → Revision::getQueryInfo( [ 'user' ] )
* Revision::pageJoinCond() → Revision::getQueryInfo( [ 'page' ] )
* Revision::selectPageFields() → Revision::getQueryInfo( [ 'page' ] )
* Revision::selectTextFields() → Revision::getQueryInfo( [ 'text' ] )
* Revision::selectFields() → Revision::getQueryInfo()
* Revision::selectArchiveFields() → Revision::getArchiveQueryInfo()
* User::selectFields() → User::getQueryInfo()
* WikiPage::selectFields() → WikiPage::getQueryInfo()
* Revision::setUserIdAndName() was deprecated.
* Access to TitleValue class properties was deprecated, the relevant getters
should be used instead.
* DifferenceEngine::getDiffBodyCacheKey() is deprecated. Subclasses should
override DifferenceEngine::getDiffBodyCacheKeyParams() instead.
* Use of Maintenance::error( $err, $die ) to exit script was deprecated. Use
Maintenance::fatalError() instead.
* Passing a ParserOptions object to OutputPage::parserOptions() is deprecated.
* The RevisionInsertComplete hook is now deprecated; use instead the hook
RevisionRecordInserted. RevisionInsertComplete is still called, but the second
and third parameter will always be null. Hard deprecation is scheduled for 1.32.
* The following methods that get and set ParserOutput state are deprecated.
Callers should use the new stateless $options parameter to
ParserOutput::getText() instead.
* ParserOptions::getEditSection()
* ParserOptions::setEditSection()
* ParserOutput::getEditSectionTokens()
* ParserOutput::setEditSectionTokens()
* ParserOutput::getTOCEnabled()
* ParserOutput::setTOCEnabled()
* OutputPage::enableSectionEditLinks()
* OutputPage::sectionEditLinksEnabled()
* The public ParserOutput state fields $mTOCEnabled and $mEditSectionTokens
are also deprecated.
* License::getLicenses has been deprecated; use License::getLines instead.
* QuickTemplate::setRef() was deprecated in favour of QuickTemplate::set().
Setting template variables by reference allowed violating the principle of
data being immutable once added to the skin template. In practice, this method
was not being used for that. Rather, setRef() existed as memory optimisation
for PHP 4.
* QuickTemplate::setTranslator() and MediaWikiI18N::set() were deprecated in
favour of Skin::msg() parameters.
* MediaWikiI18N::translate() was deprecated in favour of Skin::msg() or
wfMessage().
* Passing false to ParserOptions::setWrapOutputClass() is deprecated. Use the
'unwrap' transform to ParserOutput::getText() instead.
* \ObjectFactory (no namespace) is deprecated, the namespaced class
\Wikimedia\ObjectFactory from the wikimedia/object-factory library should be
used instead.
* CommentStore::newKey is deprecated. Instead, get an instance from
MediaWikiServices.
* The following CommentStore methods have had their signatures changed to
introduce a $key parameter, usage of the methods on instances retrieved from
CommentStore::newKey will remain unchanged but deprecated:
* CommentStore::getFields
* CommentStore::getJoin
* CommentStore::getComment
* CommentStore::getCommentLegacy
* CommentStore::insert
* CommentStore::insertWithTemplate
* The following methods in Title have been renamed, and the old ones are
deprecated:
* Title::getSkinFromCssJsSubpage use ::getSkinFromConfigSubpage
* Title::isCssOrJsPage use ::isSiteConfigPage
* Title::isCssJsSubpage use ::isUserConfigPage
* Title::isCssSubpage use ::isUserCssConfigPage
* Title::isJsSubpage use ::isUserJsConfigPage
* The following methods related to caching of half-parsed HTML were deprecated:
* Parser::serializeHalfParsedText()
* Parser::unserializeHalfParsedText()
* Parser::isValidHalfParsedText()
* StripState::getSubState()
* StripState::merge()
* The DeferredStringifier class is deprecated, use Message::listParam() instead.
* The type string for the parameter $lang of DateFormatter::getInstance is
deprecated.
* Wikimedia\Rdbms\SavepointPostgres is deprecated.
* The DO_MAINTENANCE constant is deprecated. RUN_MAINTENANCE_IF_MAIN should be
used instead.
* The function wfShellWikiCmd() has been deprecated, use
MediaWiki\Shell::makeScriptCommand().
* In the future, the hooks 'PreferencesFormPreSave' and 'PreferencesGetLegend'
will be allowed to provide any HTMLForm object rather than PreferencesForm.
=== Other changes in 1.31 ===
* Browser support for Internet Explorer 10 was lowered from Grade A to Grade C.
* Browser support for Opera 12 and older was dropped entirely. Opera 15+
continues at Grade A.
* Multi-content-revision capability was introduced into the storage layer. See
<https://mediawiki.org/wiki/Requests_for_comment/Multi-Content_Revisions>.
* The "free" CSS class is now only applied to unbracketed URLs in wikitext.
Links written using square brackets will get the class "text" not "free".
* RFC 157418: Whitespace is trimmed from wikitext headings, wikitext list items,
wikitext table captions, wikitext table headings, wikitext table cells. HTML
headings, HTML list items, HTML table captions, HTML table headings, HTML
table cells will not have this trimming behavior.
== Compatibility ==
MediaWiki 1.31 requires PHP 7.0.0 or later. Although HHVM 3.18.5 or later is
supported, it is generally advised to use PHP 7.0.0 or later for long term
support.
MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
but support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.5.8 or later
* PostgreSQL 9.2 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.31 has several database changes since 1.30, 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.
For notes on 1.30.x and older releases, see HISTORY.
== 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.

743
RELEASE-NOTES-1.32 Normal file
View File

@ -0,0 +1,743 @@
== MediaWiki 1.32 ==
=== Changes since MediaWiki 1.32.0-rc.2 ===
* (T188327) Fix slow queries in migrateActors.php.
* (T102320) Fix $magicWords for the Sanskrit language.
=== Changes since MediaWiki 1.32.0-rc.1 ===
* Fix addition of ug_expiry column to user_groups table on MSSQL.
* (T210307) Fix the cache timestamp for forced updates.
* (T210621) User: Bypass repeatable-read when creating an actor_id.
* (T197535) Extensions can now specify PHP versions and PHP extensions they
depend on.
* Updated wikimedia/ip-set from v1.2.0 to v1.3.0.
* (T212356) When using action=delete on pages with many revisions, the module
may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
deletion will be processed via the job queue.
* (T64103) Dropped columns category.cat_hidden, site_stats.ss_admins, and
recentchanges.rc_cur_time from the PostgreSQL schema.
=== Changes since MediaWiki 1.32.0-rc.0 ===
* (T209885) Prevent populateSearchIndex.php from breaking once actor migration
has been started.
* (T210998) Properly set $wgLanguageCode in the generated LocalSettings.php
if --lang is used with the command-line installer (install.php).
=== Configuration changes in 1.32 ===
==== New configuration ====
* $wgJpegQuality The quality of JPEG thumbnails is now configurable through
this setting. The default is 80, which matches the quality of JPEG thumbnails
previously generated by ImageMagick. The quality of JPEG thumbnails generated
by GD was previously 95, but now uses the $wgJpegQuality setting as well.
* $wgCookieSetOnIpBlock - This determines whether to set a cookie when an IP
user is blocked. Doing so means that a blocked user, even after moving to a
new IP address, will still be blocked.
* $wgRawHtmlMessages This new configuration setting is added for listing
messages which are displayed as raw HTML.
* $wgCSPHeader and $wgCSPReportOnlyHeader You can now define a
"Content Security Policy" for your wiki. This adds a defense-in-depth feature
to stop an attacker who has found a bug in the parser allowing them to insert
malicious attributes. Disabled by default. (T135963)
* $wgGroupPermissions A new user group, 'interface-admin', is added for
controlling access to sitewide CSS/JS (and editing other users' CSS/JS). No
other group has 'editsitecss', 'editusercss', 'editsitejs' or 'edituserjs'
by default.
* $wgGrantPermissions A new grant group, 'editsiteconfig', is added for
granting the above rights.
* $wgDBDefaultGroup A default database group for use by maintenance scripts.
* $wgResourceLoaderEnableJSProfiler  This new configuration setting lets you
enable client-side profiling of JavaScript modules; it is off by default.
* (T193868) $wgChangeTagsSchemaMigrationStage — This temporary configuration
setting allows sysadmins to gradually migrate the database table schema for
how change tags are stored.
* (T199334) $wgTagStatisticsNewTable — This temporary configuration setting
allows sysadmins to enable the caching of Special:Tags via the new
change_tag_def table.
==== Changed configuration ====
* $wgUseAjax This setting, deprecated in 1.31, is now ignored.
* $wgDefaultUserOptions The default watchlist view time (watchlistdays) has
been increased from 3 to 7 days. (T194414)
* $wgGroupPermissions The right to edit sitewide Javascript
(e.g. MediaWiki:Common.js), CSS or JSON was separated from 'editinterface'
and is available under 'editsitejs'/'editsitecss'/'editsitejson'. Having
'editinterface' is still necessary to edit such pages.
* $wgMultiContentRevisionSchemaMigrationStage now defaults to writing both the
old and the new schema, but reading the new schema, so Multi-Content Revisions
(MCR) are now functional per default. The new default value of the setting is
SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW.
* $wgActorTableSchemaMigrationStage no longer accepts MIGRATION_WRITE_BOTH or
MIGRATION_WRITE_NEW. It instead uses SCHEMA_COMPAT_WRITE_BOTH |
SCHEMA_COMPAT_READ_OLD and SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW
for intermediate stages of migration.
* $wgDBTableOptions  The default table options now use the binary charset. The
default was already overridden in the installer-generated LocalSettings.php,
and so is always set to binary after the installer UI option was removed. The
default value is only used when the installer installs an extension.
* $wgPopularPasswordFile — The location of the default popular passwords file
has been moved to be in line with other non-PHP files used by libraries and
classes.
* $wgEnableImageWhitelist is now disabled by default, as it opens up a hole for
potential privacy leaks by administrators. You can check
"MediaWiki:External image whitelist" on your wiki to see whether the feature
was ever used, and whether it needs to be re-enabled.
==== Removed configuration ====
* $wgEnableAPI and $wgEnableWriteAPI These settings, deprecated in 1.31,
have been removed. (T115414)
* $wgSiteSupportPage  This setting, unused since 1.5, was removed.
* $wgBrowserBlacklist  This setting, deprecated in 1.30, was removed.
* $wgExperimentalHtmlIds This setting, deprecated since 1.30, was removed.
The 'html5-legacy' value for $wgFragmentMode is no longer accepted.
* $wgPasswordSenderName - This setting, ignored since 1.23 by MediaWiki and
most extensions, is no longer set. Instead, you can modify the system
message `emailsender`.
* $wgTidyConfig The experimental Html5Internal and Html5Depurate tidy drivers
were removed. RemexHtml, which is the default, should be used instead.
* (T181318) The $wgStyleVersion setting and its appendage to various script and
style URLs in OutputPage, deprecated in 1.31, was removed.
* (T140807) The wgResourceLoaderLESSImportPaths configuration option was removed
from ResourceLoader. Instead, use `@import` statements in LESS to import
files directly from nearby directories within the same project.
* (T140804) The wgResourceLoaderLESSVars configuration option, deprecated
since 1.30, was removed. Instead, to expose variables from PHP to LESS, use
the ResourceLoaderModule::getLessVars() method.
* $wgResourceLoaderValidateStaticJS  This setting, unused since MediaWiki 1.18,
was removed.
* Two temporary variables for deploying the feature of filters on change lists,
$wgStructuredChangeFiltersShowPreference introduced in MediaWiki 1.30 and
$wgStructuredChangeFiltersOnWatchlist in 1.31, were removed.
=== New features in 1.32 ===
* (T112474) Generalized the ResourceLoader mechanism for overriding modules
using a particular page during edit previews.
* (T12331) You can now log page creation events by setting $wgPageCreationLog
to true.
* Added 'ApiParseMakeOutputPage' hook.
* (T174313) Added checkbox on Special:ListUsers to display only users in
temporary user groups.
* (T152462) A cookie can now be set when an IP user is blocked to track that
user if they move to a new IP address. This is disabled by default.
* (T194950) Added 'ApiMaxLagInfo' hook.
* SpecialPage::checkLoginSecurityLevel() will now preserve POST data when
reauthenticating.
* FormSpecialPage::execute() will now call checkLoginSecurityLevel() if
getLoginSecurityLevel() returns non-false.
* The 'ImageBeforeProduceHTML' hook is now passed three new parameters, $parser,
&$query and &$widthOption, allowing extensions even finer control over the
resulting HTML code.
* Added new 'ArticleShowPatrolFooter' hook, which allows extensions to determine
if the [mark as patrolled] link should be shown at the footer of patrollable
pages.
* The array of hidden options ($opts) passed to the 'SpecialSearchPowerBox' hook
is now passed by reference, allowing extensions to modify or even unset it.
* Added new 'OutputPageAfterGetHeadLinksArray' hook, allowing extensions to
modify the return value of OutputPage#getHeadLinksArray in order to add,
remove or otherwise alter the elements to be output in the page <head>.
* (T28934) The 'HistoryPageToolLinks' hook allows extensions to append
additional links to the subtitle of a history page.
* The 'GetLinkColours' hook now receives an additional $title parameter,
the Title object of the page being parsed, on which the links will be shown.
* (T194731) DifferenceEngine supports multiple slots. Added SlotDiffRenderer to
render diffs between two Content objects, and DifferenceEngine::setRevisions()
to render diffs between two custom (potentially multi-content) revisions.
Added GetSlotDiffRenderer hook which works like GetDifferenceEngine for slots.
* Added a temporary action=mcrundo to the web UI, as the normal undo logic
can't yet handle MCR and deadlines are forcing is to put off fixing that.
This action should be considered deprecated and should not be used directly.
* Extensions overriding ContentHandler::getUndoContent() will need to be
updated for the changed method signature.
* Added a new hook, 'UserGetRightsRemove', which can be used to remove rights
from user. Unlike the 'UserGetRights' it will ensure that removed rights
will not be reinserted.
* (T197535) Extensions can now specify PHP versions and PHP extensions they
depend on.
=== External library changes in 1.32 ===
==== New external libraries ====
* Added pear/Net_SMTP v1.8.0.
* Added wikimedia/xmp-reader v0.6.0.
* Added cache/integration-tests v0.16.0 (dev-only).
* Added giorgiosironi/eris v0.10.0 (dev-only).
* Added seld/jsonlint v1.7.1 (dev-only).
* Added EasyDeflate (unversioned).
==== Changed external libraries ====
* Updated OOUI from v0.26.3 to v0.29.2.
* Updated wikimedia/base-convert from v1.0.1 to v2.0.0.
* Updated wikimedia/remex-html from v1.0.3 to v2.0.1.
* Updated wikimedia/scoped-callback from v1.0.0 to v2.0.0.
** ScopedCallback objects can no longer be serialized.
* Updated wikimedia/timestamp from v1.0.0 to v2.2.0.
* Updated wikimedia/wrappedstring from v2.3.0 to v3.0.1.
* oyejorge/less.php replaced with our fork wikimedia/less.php
* Updated wikimedia/ip-set from v1.2.0 to v1.3.0.
* Updated composer/spdx-licenses from v1.3.0 to v1.4.0 (dev-only).
* Updated mediawiki/mediawiki-codesniffer from v18.0.0 to v22.0.0 (dev-only).
* Updated psy/psysh from v0.8.11 to v0.9.6 (dev-only).
* Updated CLDRPluralRuleParser from v0.1.0 to v1.3.2-pre.
* Updated jquery from v3.2.1 to v3.3.1.
* Updated jquery.client from v2.0.0 to v2.0.1.
* Updated jquery.i18n from v1.0.4 to v1.0.5.
* Updated mustache.js from v0.8.2-d9aa703 to v1.0.0.
* Updated OOjs from v2.2.0 to v2.2.2.
* Updated qunitjs from v2.4.0 to v2.6.2.
* Updated sinonjs from v1.17.3 to v1.17.7.
==== Removed external libraries ====
* pear/mail_mime-decode was removed.
=== Bug fixes in 1.32 ===
* SpecialPage::execute() will now only call checkLoginSecurityLevel() if
getLoginSecurityLevel() returns non-false.
* (T43720, T46197) Improved page display title handling for category pages
* (T65080) Fixed resetting options of some types via API action=options.
=== Action API changes in 1.32 ===
* Added templated parameters.
* A module can define a templated parameter like "{fruit}-quantity", where
the actual parameters recognized correspond to the values of a multi-valued
parameter. Then clients can make requests like
"fruits=apples|bananas&apples-quantity=1&bananas-quantity=5".
* action=paraminfo will return templated parameter definitions separately
from normal parameters. All parameter definitions now include an "index"
key to allow clients to maintain parameter ordering when merging normal and
templated parameters.
* It is now an error to submit too many values for a multi-valued parameter.
This has generated a warning since MediaWiki 1.14.
* Assertion failures from the 'assert' and 'assertuser' parameters will no
longer use the action module's custom response format, for the few modules
that use custom formatters that handle errors.
* (T198935) User list preferences such as `email-blacklist` and similar
extension preferences are no longer represented as arrays when returned by
action=query&meta=userinfo&uiprop=options.
* 'missingparam' errors will now use the prefixed parameter name in the code
and error text, e.g. "noxxfoo" and "The 'xxfoo' parameter must be set" rather
than "nofoo" and "The 'foo' parameter must be set".
* action=query&prop=revisions now takes a 'rvslots' parameter to indicate the
multi-content revision slots for which content should be returned. It also
has a new rvprop, 'roles', to indicate which roles have slots. A deprecation
warning will be issued if rvprop=content or rvprop=contentmodel are used
without rvslots.
* The rvcontentformat parameter to action=query&prop=revisions has been
deprecated. Clients should be prepared to deal with the default format for
relevant models.
* Use of the deprecated parameters rvexpandtemplates, rvgeneratexml, rvparse,
rvdiffto, rvdifftotext, rvdifftotextpst, rvcontentformat, or the deprecated
rvprop=parsetree is forbidden with the new 'rvslots' parameter.
* action=query&prop=deletedrevisions, action=query&list=allrevisions, and
action=query&list=alldeletedrevisions are changed similarly to
&prop=revisions (see the three previous items).
* (T174032) action=compare now supports multi-content revisions.
* It has a 'slots' parameter to select diffing of individual slots. The
default behavior is to return one combined diff.
* The 'fromtext', 'fromsection', 'fromcontentmodel', 'fromcontentformat',
'totext', 'tosection', 'tocontentmodel', and 'tocontentformat' parameters
are deprecated. Specify the new 'fromslots' and 'toslots' to identify which
slots have text supplied and the corresponding templated parameters for
each slot.
* The behavior of 'fromsection' and 'tosection' of extracting one section's
content is not being preserved. 'fromsection-{slot}' and 'tosection-{slot}'
instead expand the given text as if for a section edit. This effectively
declines T183823 in favor of T185723.
* (T198214) The 'disabletidy' parameter to action=parse has been
deprecated; untidy output will not be supported by future wikitext
parsers.
* Added intestactionsdetail to action=query&prop=info to allow retrieving the
reasons an action is not allowed.
* Deprecated action=query&prop=info inprop=readable in favor of
intestactions=read.
* (T212356) When using action=delete on pages with many revisions, the module
may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
deletion will be processed via the job queue.
=== Action API internal changes in 1.32 ===
* Added 'ApiParseMakeOutputPage' hook.
* Parameter names may no longer contain '{' or '}', as these are now used for
templated parameters.
* (T194950) Added 'ApiMaxLagInfo' hook.
* The following methods now take a RevisionRecord rather than a Revision. No
external callers are known.
* ApiFeedContributions::feedItemAuthor()
* ApiFeedContributions::feedItemDesc()
* ApiQueryRevisionsBase::extractRevisionInfo()
* The following deprecated methods have been removed:
* ApiBase::profileIn() (deprecated in 1.25)
* ApiBase::profileOut() (deprecated in 1.25)
* ApiBase::safeProfileOut() (deprecated in 1.25)
* ApiBase::profileDBIn() (deprecated in 1.25)
* ApiBase::profileDBOut() (deprecated in 1.25)
* ApiBase::dieUsage() (deprecated in 1.29)
* ApiBase::dieUsageMsg() (deprecated in 1.29)
* ApiBase::dieUsageMsgOrDebug() (deprecated in 1.29)
* ApiBase::getErrorFromStatus() (deprecated in 1.29)
* ApiBase::parseMsg() (deprecated in 1.29)
* ApiBase::setWarning() (deprecated in 1.29)
* ApiPageSet::getInvalidTitles() (deprecated in 1.26)
* ApiQueryLogEvents::addLogParams() (deprecated in 1.25)
* ApiUsageException::getCodeString() (deprecated in 1.29)
* ApiUsageException::getMessageArray() (deprecated in 1.29)
* Class UsageException, deprecated in 1.29, has been removed.
* ApiErrorFormatter: Added getFormat() and newWithFormat(). In particular, you
can now easily test $formatter->getFormat() === 'bc', and then call
$formatter->newWithFormat( 'plaintext' ) to get a non-BC formatter.
=== Languages updated in 1.32 ===
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.
* (T193566) Added language support for Ambonese Malay (abs).
* (T194047) Added language support for Shawiya, Latin script (shy-latn).
* (T195940) Added language support for Batak Mandailing (btm).
* (T137491) Added language support for Standard Moroccan Amazigh (zgh).
* (T198132) Added language support for Manipuri (mni).
* (T201276) Added language support for Western Armenian (hyw).
* (T201583) Added language support for Mon (mnw).
=== Breaking changes in 1.32 ===
* $wgRequestTime, deprecated in 1.25, was removed. Use
$_SERVER['REQUEST_TIME_FLOAT'] or WebRequest::getElapsedTime() instead.
* The MediaWikiI18N class, deprecated in 1.31, was removed.
* QuickTemplate::setTranslator(), deprecated in 1.31, was removed. Use
Skin::msg() instead.
* wfInitShellLocale(), deprecated in 1.30, was removed.
* wfShellExecDisabled(), deprecated in 1.30, was removed.
* The type string for the parameter $lang of DateFormatter::getInstance,
deprecated in 1.31, was removed.
* The EDIT_TOKEN_SUFFIX constant deprecated in 1.27, was removed. Use
MediaWiki\Session\Token::SUFFIX instead.
* EditPage::isOouiEnabled() deprecated in 1.30, was removed.
* mw.util.wikiGetlink(), deprecated in 1.23, was removed. Use mw.util.getUrl()
instead.
* (T61113) The following methods and constants from the Revision class, which
were deprecated in 1.25, have now been removed:
* Revision::getRawUser()
* Revision::getRawUserText()
* Revision::getRawComment()
* window.gM() from mediawiki.jqueryMsg, deprecated in 1.23, was removed. Use
mw.msg() or mw.message() instead.
* mw.util.escapeId(), deprecated in 1.30, was removed. Use
mw.util.escapeIdForAttribute or mw.util.escapeIdForLink instead.
* mw.util.updateTooltipAccessKeys(), deprecated in 1.24, was removed. Use
jquery.accessKeyLabel instead.
* The SqlDataUpdate class, deprecated in 1.28, has been removed.
* The Html5Internal and Html5Depurate tidy driver classes were removed, along
with the Balancer tidy implementation. Both implementations were experimental,
and were replaced by RemexHtml.
* (T179624) Job::insert() and ::batchInsert(), deprecated in 1.21, were both
removed. Use JobQueueGroup::singleton()->push() instead.
* The jquery.footHovzer module, for mediawiki.debug, was removed.
* The es5-shim module, empty and deprecated since 1.29, was removed.
* the dom-level2-shim module, empty and deprecated since 1.29, was removed.
* the json module, empty and deprecated since 1.29, was removed.
* The mediawiki.widgets.visibleByteLimit module alias, deprecated in 1.32, was
removed. Use mediawiki.widgets.visibleLengthLimit instead.
* The jquery.farbtastic module, unused since 1.18, was removed.
* The 'jquery.expandableField' module, unused since 1.22, was removed.
* The hooks 'PreferencesFormPreSave' and 'PreferencesGetLegend' may provide
any HTMLForm object rather than PreferencesForm.
* The non namespaced TimestampException class, deprecated in 1.29, was removed.
Use Wikimedia\Timestamp\TimestampException instead.
* The global functions codepointToUtf8, hexSequenceToUtf8, utf8ToHexSequence,
utf8ToCodepoint, and escapeSingleString (deprecated in 1.25) were removed.
The UtfNormal\Utils class from the utfnormal library should be used instead.
* The deprecated UTF8_ and UNICODE_ constants were removed. The class constants
from the UtfNormal\Constants class from the utfnormal library should be used
* The protected methods PHPSessionHandler::returnSuccess() and returnFailure(),
only needed for PHP5 compatibility, have been removed. It now uses the boolean
values `true` and `false` respectively.
* The $parserMemc global and wfGetParserCacheStorage(), deprecated since 1.30,
were removed. Use the ParserCache class instead.
* ScopedCallback (deprecated in 1.28) was removed. Use Wikimedia\ScopedCallback
instead.
* Support for ResourceLoaderModule::getModifiedTime() and getModifiedHash(),
deprecated since 1.26, was removed. Use getDefinitionSummary() instead.
* (T195256) Skins are recommended not to rely on JavaScript for the "mw-jump"
and "jump-to-nav" accessibility links. To this end, the "jquery.mw-jump"
is no longer loaded by default. The Vector and MonoBook skins have made a
minor change to implement the toggle feature with CSS instead. To restore
prior functionality, either explicitly load "jquery.mw-jump" in your skin
or refer to T195256 for details on how to make the same change.
* Hook 'EditPageBeforeEditChecks' was removed;
use 'EditPageGetCheckboxesDefinition' instead.
* Linker::getLinkColour() and DummyLinker::getLinkColour(), deprecated since
1.28, were removed. LinkRenderer::getLinkClasses() should be used instead.
* Wikimedia\Rdbms\LoadBalancer::getLaggedSlaveMode(), deprecated in 1.28, has
been removed. Use Wikimedia\Rdbms\LoadBalancer::getLaggedReplicaMode()
instead.
* mw.widgets.CategoryMultiselectWidget now uses TagMultiselectWidget instead of
CapsuleMultiselectWidget. The following methods may no longer be used:
* setItemsFromData: Use setValue instead
* getItemsData: Use getItems instead and get the data property
* Two OutputPage methods, addMetadataLink() and getMetadataAttribute(), were
removed. Use addLink() instead.
* Another two OutputPage methods, setPageTitleActionText() and
getPageTitleActionText(), were removed. They did nothing since 1.15 (almost
ten years). Use setHTMLTitle() directly.
* The return value of OutputPage::adaptCdnTTL() has been removed. The
value returned was misleading and probably not what any caller would
have wanted.
* All MagicWord static member variables have been removed. Use appropriate
hooks or MagicWordFactory methods instead.
* MagicWord::clearCache() has been removed. Instead, create a new
MagicWordFactory, such as by calling
resetServiceForTesting( 'MagicWordFactory' ) on a MediaWikiServices.
* mw.util.init() has been removed. This function is not needed anymore and was
a no-op function since 1.30.
* SpecialPageFactory::resetList() is a no-op. Call overrideMwServices()
instead.
* MediaWiki no longer supports a StartProfiler.php file. Instead, you can set
$wgProfiler and $wgEnableProfileInfo.
* The mw.loader.addSource() is now considered a private method, and no longer
supports the `id, url` signature. Use the `Object` parameter instead.
* The backwards-compatibility code in HTMLForm to add a drop-down control to an
option that is not set to be a drop-down if the "mw-chosen" class is present,
is now removed.
* Several collations were removed. They were workarounds for bugs in the ICU
library and they are no longer needed (as of ICU 57.1):
* 'uppercase-se' (NorthernSamiUppercaseCollation) - use 'uca-se' instead
* 'xx-uca-et' (CollationEt) - use 'uca-et' instead
* 'xx-uca-fa' (CollationFa) - use 'uca-fa' instead
* LanguageCode::bcp47() now always returns a valid BCP 47 code. This means
that some MediaWiki-specific language codes, such as `simple`, are mapped
into valid BCP 47 codes (eg `en-simple`).
* The hooks 'SpecialRecentChangesFilters' & 'SpecialWatchlistFilters' deprecated
in 1.23 were removed. Instead, use 'ChangesListSpecialPageStructuredFilters'.
The ChangesListSpecialPage code for these legacy hooks, and their use in
SpecialRecentchanges.php and SpecialWatchlist, was also removed:
* ChangesListSpecialPage->getCustomFilters()
* ChangesListSpecialPage->getFilterGroupDefinitionFromLegacyCustomFilters()
* ChangesListSpecialPage::customFilters
* The global function wfUseMW, deprecated since 1.26, has now been removed. Use
the "requires" property of static extension registration instead.
* $wgSpecialPages no longer accepts array syntax, deprecated since 1.18.
* The MailAddress constructor can no longer be called with a User object,
behaviour which has been deprecated since 1.24.
* LBFactory, deprecated since 1.28, has been removed. Instead, use
Wikimedia\Rdbms\LBFactory.
* The MimeMagic class, deprecated since 1.28 has been removed. Get a
MimeAnalyzer instance from MediaWikiServices instead.
* The '--tidy' option to maintenance/parse.php has been removed. Tidying
the output is now the default. Use '--no-tidy' to bypass the tidy
phase.
* The global function wfErrorLog, deprecated since 1.25, has now been removed.
Use MWLoggerLegacyLogger::emit or UDPTransport.
* The hooks 'SpecialRecentChangesQuery' & 'SpecialWatchlistQuery', deprecated in
1.23, were removed. Instead, use ChangesListSpecialPageStructuredFilters or
ChangesListSpecialPageQuery.
* The global function wfUsePHP, deprecated since 1.30, has now been removed. To
assert a newer version of PHP than MediaWiki does, use extension registration.
* The hook 'ChangesListSpecialPageFilters', deprecated in 1.29, has now been
removed. Use the 'ChangesListSpecialPageStructuredFilters' hook instead.
* DeferredUpdates::setImmediateMode(), deprecated since 1.29, has been removed.
* File / MediaHandler::getStreamHeaders(), deprecated since 1.30, was removed.
* The hook 'DoEditSectionLink', deprecated since 1.25, has been removed. Use
the hook 'SkinEditSectionLinks' instead.
* The hook 'UserGetImplicitGroups', deprecated since 1.25, has been removed.
* The global function wfRunHooks, deprecated since 1.25, has now been removed.
Use Hooks::run().
* The hook 'UnknownAction', deprecated since 1.19, has now been removed.
* The hook 'ParserLimitReport', deprecated since 1.22, has been removed. Use
the hooks 'ParserLimitReportPrepare' and 'ParserLimitReportFormat' instead.
* The following deprecated API methods have been removed:
* ApiBase::profileIn() (deprecated in 1.25)
* ApiBase::profileOut() (deprecated in 1.25)
* ApiBase::safeProfileOut() (deprecated in 1.25)
* ApiBase::profileDBIn() (deprecated in 1.25)
* ApiBase::profileDBOut() (deprecated in 1.25)
* ApiBase::dieUsage() (deprecated in 1.29)
* ApiBase::dieUsageMsg() (deprecated in 1.29)
* ApiBase::dieUsageMsgOrDebug() (deprecated in 1.29)
* ApiBase::getErrorFromStatus() (deprecated in 1.29)
* ApiBase::parseMsg() (deprecated in 1.29)
* ApiBase::setWarning() (deprecated in 1.29)
* ApiPageSet::getInvalidTitles() (deprecated in 1.26)
* ApiQueryLogEvents::addLogParams() (deprecated in 1.25)
* ApiUsageException::getCodeString() (deprecated in 1.29)
* ApiUsageException::getMessageArray() (deprecated in 1.29)
* Class UsageException, deprecated in 1.29, has been removed.
* MediaWiki no longer has a 'JavaScript-powered' wikitext toolbar built in. The
old "bulletin board style toolbar", known as "the 2006 wikitext editor", has
been removed, and instead sysadmins will be required to choose one (or more)
of the several extensions available for this purpose if they need the
functionality. The MediaWiki "tarball" releases have included the replacement
extension for this, the WikiEditor extension aka "the 2010 wikitext editor",
for many years now. As part of this, several parts of MediaWiki have been
removed or simplified:
* The user option 'showtoolbar' (shown as "Show edit toolbar") is no longer
available; if an extension adds a toolbar via the EditPageBeforeEditToolbar
hook, it will be shown; extensions should provide a specific user preference
to disable themselves as needed.
* The public methods Language::getImageFile() and ::getImageFiles(), and the
related specification of $imageFiles within individual languages' code file,
as well as the referenced static media assets, all of which were only used
inside MediaWiki itself for providing the icons for the old toolbar, have
been removed without explicit deprecation.
* The internal ResourceLoader module "mediawiki.toolbar", which is unused
except by MediaWiki itself and back-compatibility code, has been removed.
* The internal ResourceLoaderEditToolbarModule class has been removed.
=== Deprecations in 1.32 ===
* HTMLForm::setSubmitProgressive() is deprecated. No need to call it. Submit
button is already marked as progressive.
* Skin::setupSkinUserCss() is deprecated. Adding of modules to load
has been centralised to Skin::getDefaultModules(), which is now capable
of queueing style modules as well.
* OutputPage::addModuleScripts() and ParserOutput::addModuleScripts are
deprecated. Use addModules() instead.
* Overriding SearchEngine::{searchText,searchTitle,searchArchiveTitle}
in extending classes is deprecated. Extend related doSearch* methods
instead.
* The following 'mediawiki.api' plugin modules were merged into mediawiki.api
and deprecated: mediawiki.api.category, mediawiki.api.edit,
mediawiki.api.login, mediawiki.api.options, mediawiki.api.parse,
mediawiki.api.upload, mediawiki.api.user, mediawiki.api.watch,
mediawiki.api.messages, and mediawiki.api.rollback.
* ApiBase::truncateArray() is deprecated. No replacement, as nothing is known
to use it.
* WatchAction::getUnwatchToken is deprecated. Use WatchAction::getWatchToken
with the 'unwatch' action parameter instead.
* IcuCollation::getICUVersion() is deprecated, as you can just use the PHP
constant INTL_ICU_VERSION directly in all versions that MediaWiki supports.
* Parser::fetchFile() is deprecated. Use ::fetchFileAndTitle() instead.
* The ApiQueryContributions class has been renamed to ApiQueryUserContribs.
* The XMPInfo, XMPReader, and XMPValidate classes have been deprecated in favor
of the namespaced classes provided by the wikimedia/xmp-reader library.
* SearchResultSet::{next,rewind} are deprecated. Calling code should
use foreach on the SearchResultSet, or the extractResults method. Extending
code should override extractResults.
* Instantiating SearchResultSet directly is deprecated. SearchEngine
implementations must subclass SearchResultSet for their purposes.
* SearchResult::setExtensionData argument has been changed from accepting an
array to accepting a Closure that returns the array when called.
* Class CryptRand, everything in MWCryptRand except generateHex() and function
MediaWikiServices::getCryptRand() are deprecated, use random_bytes() to
generate cryptographically secure random byte sequences.
* Parser::getConverterLanguage() is deprecated. Use ::getTargetLanguage()
instead.
* Language::markNoConversion() is deprecated. It confused readers because
it had unexpected behavior (only marking text if it looked like a URL)
and was only used in a single place in the code. Use
LanguageConverter::markNoConversion() instead.
* (T197492) Language::truncate() was soft deprecated in 1.31 and is
hard deprecated in this release. It has been split into two similar
methods, Language::truncateForVisual() and Language::truncateForDatabase(),
which measure length in characters and bytes, respectively. Use
Language::truncateForVisual() when possible to provide equity to users
of multibyte scripts.
* (T176526) EditPage::getContextTitle() falling back to $wgTitle when the
context title is unset is now deprecated; anything creating an EditPage
instance should set the context title via ::setContextTitle().
* The 'jquery.hidpi' module (polyfill for IMG srcset) is deprecated.
* ResourceLoaderStartUpModule::getStartupModules() and ::getLegacyModules()
are deprecated. These concepts are obsolete and have no replacement.
* String type for $lang of DifferenceEngine::setTextLanguage is deprecated.
* The following methods of OutputPage are now deprecated in favour
of using showFatalError directly: OutputPage::showFileDeleteError()
OutputPage::showFileNotFoundError(), OutputPage::showFileRenameError()
OutputPage::showFileCopyError() and OutputPage::showUnexpectedValueError().
* The Replacer, DoubleReplacer, HashtableReplacer, and RegexlikeReplacer
classes are now deprecated. Use a Closure instead.
* (T194263) ContentHandler::makeParserOptions() is deprecated. Use
WikiPage::makeParserOptions() or ParserOptions::newCanonical() instead.
* (T100681) Use of the Parsoid v1 API with the VirtualRESTService, deprecated in
MediaWiki 1.26, is now hard-deprecated. All known clients were converted to
the Parsoid v3 API in May 2015.
* $input is deprecated in hook 'LogEventsListGetExtraInputs'. Use
$formDescriptor instead.
* SearchEngine::transformSearchTerm( $term ) should no longer be called prior
to running searchText. This method was mainly implemented to support the
'prefix' URI param in SpecialSearch, but there are no reasons to expose this
logic as it should be handled internally by SearchEngine implementations
supporting this feature. SearchEngine implementations should no longer
override this methods.
* SearchEngine::replacePrefixes( $query ) should no longer be called prior
to running searchText/searchTitle.
* (T199657) Messages for $wgFilterLogTypes labels should be no longer be in the
'log-show-hide-[type]' format. Instead use 'logeventslist-[type]-log'.
* Global functions wfArrayFilter() and wfArrayFilterByKey() are deprecated.
use array_filter() directly.
* The $wgShowSQLErrors global is deprecated and nonfunctional.
Set $wgShowExceptionDetails and/or $wgShowHostnames instead.
* The $wgShowDBErrorBacktrace global is deprecated and nonfunctional.
Set $wgShowExceptionDetails instead.
* Public access to the DifferenceEngine properties mOldid, mNewid, mOldRev,
mNewRev, mOldPage, mNewPage, mOldContent, mNewContent, mRevisionsLoaded,
mTextLoaded and mCacheHit is deprecated. Use getOldid() / getNewid() /
getOldRevision() / getNewRevision() for the first four (note that the
revision ones return a RevisionRecord, not a Revision), do your own lookup
for page/content.
* The $wgExternalDiffEngine value 'wikidiff2' is deprecated. To use wikidiff2
just enable the PHP extension, and it will be autodetected.
* (T194731) DifferenceEngine properties mOldContent and mNewContent and methods
setContent(), generateContentDiffBody(), generateTextDiffBody() and textDiff()
are deprecated. To interact with a single slot, use a SlotDiffRenderer (and
subclass it to customize diff rendering); to diff custom (e.g. unsaved)
content, use setRevisions(). Subclassing DifferenceEngine should only be done
to customize page-level diff properties (such as the navigation header).
* The wfUseMW function, soft-deprecated in 1.26, is now hard deprecated.
* All MagicWord static methods are now deprecated. Use the MagicWordFactory
methods instead.
* PasswordFactory::init is deprecated. To get a password factory with the
standard configuration, use MediaWikiServices::getPasswordFactory.
* $wgContLang is deprecated, use MediaWikiServices::getContentLanguage()
instead.
* $wgParser is deprecated, use MediaWikiServices::getParser() instead.
* wfGetMainCache() is deprecated, use ObjectCache::getLocalClusterInstance()
instead.
* wfGetCache() is deprecated, use ObjectCache::getInstance() instead.
* All SpecialPageFactory static methods are deprecated. Instead, call the
methods on a SpecialPageFactory instance, which may be obtained from
MediaWikiServices.
* mw.user.stickyRandomId was renamed to the more explicit
mw.user.getPageviewToken to better capture its function.
* Passing Revision objects to ContentHandler::getUndoContent() is deprecated,
Content object should be passed instead.
* (T197179) Parameters 'notice', 'notice-messages', 'notice-message',
previously used by OOUI HTMLForm fields, are now deprecated. Use
'help', 'help-message', 'help-messages' instead.
* (T197179) HTMLFormField::getNotices() is now deprecated.
* The jquery.localize module is now deprecated. Use jquery.i18n instead.
* The SecondaryDataUpdates hook was deprecated in favor of RevisionDataUpdates,
or overriding ContentHandler::getSecondaryDataUpdates (T194038).
* The WikiPageDeletionUpdates hook was deprecated in favor of
PageDeletionDataUpdates, or overriding ContentHandler::getDeletionDataUpdates
(T194038).
* Content::getSecondaryDataUpdates has been deprecated in favor of
ContentHandler::getSecondaryDataUpdates() for overriding by extensions
(T194038).
Application logic should call WikiPage::doSecondaryDataUpdates() (T194037).
* Content::getDeletionUpdates has been deprecated in favor of
ContentHandler::getDeletionUpdates() for overriding by extensions (T194038).
Application logic should call WikiPage::doSecondaryDataUpdates() (T194037).
* (T198214) Old Tidy-related configuration settings, which were soft-deprecated
in MediaWiki 1.26, have now been hard deprecated. This affects $wgUseTidy,
$wgTidyBin, $wgTidyConf, $wgTidyOpts, $wgTidyInternal, and $wgDebugTidy. Use
$wgTidyConfig instead.
* All Tidy configurations other than Remex have been hard deprecated;
future parsers will not emit compatible output for these configurations.
In particular, running MediaWiki with tidy disabled has been deprecated.
* (T198214) OutputPage::addWikiText(), OutputPage::addWikiTextWithTitle(),
and OutputPage::addWikiTextTitle() have been deprecated, since they
can result in untidy output. In addition OutputPage::addWikiTextTidy()
and OutputPage::addWikiTextTitleTidy() was deprecated to make naming new
methods consistent. Use OutputPage::addWikiTextAsInterface() or
OutputPage::addWikiTextAsContent() instead, which ensures the output is
tidy and clarifies whether content-language specific postprocessing should
be done on the text.
* OutputPage::parse() and OutputPage::parseInline() have been deprecated
due to untidy output and inconsistent handling of wrapper divs and
interface/content language defaults. Use OutputPage::parseAsContent(),
OutputPage::parseAsInterface(), or OutputPage::parseInlineAsInterface()
as appropriate.
* QuickTemplate::msgHtml() and BaseTemplate::msgHtml() have been deprecated
as they promote bad practises. I18n messages should always be properly
escaped.
* Skin::getDynamicStylesheetQuery() has been deprecated. It always
returns action=raw&ctype=text/css which callers should use directly.
* Class LegacyFormatter is deprecated.
* Use of CommentStore::insertWithTempTable() with 'img_description' is
deprecated. Use CommentStore::insert() instead.
* Language::setCode is deprecated as public function. Use Language::factory
to create a new Language object with a different language code.
* Several classes have been moved from the MediaWiki\Storage\ namespace to the
MediaWiki\Revision\ namespace. The old class names are aliased for
compatibility, but are deprecated. Classes are IncompleteRevisionException,
MutableRevisionRecord, MutableRevisionSlots, RevisionAccessException,
RevisionArchiveRecord, RevisionFactory, RevisionLookup, RevisionRecord,
RevisionSlots, RevisionStore, RevisionStoreRecord, SlotRecord, and
SuppressedDataException.
* When using OOUI HTMLForm containing an 'info' field which uses the 'rawrow'
option, it is now deprecated to give its contents (the 'default' option)
as a string. They should be given as a OOUI\FieldLayout object instead.
Notably, this affects fields defined in the 'GetPreferences' hook, because
Special:Preferences uses an OOUI form now. (If possible, don't use 'rawrow'.)
* In Skin::doEditSectionLink omitting the parameters $tooltip and $lang is
deprecated. For the $lang parameter, types other than Language are
deprecated.
* The $wgUseKeyHeader configuration option and the
OutputPage::getKeyHeader() method have been deprecated; the relevant
draft IETF spec expired without becoming a standard.
* Deprecated API action=query&prop=info inprop=readable in favor of
intestactions=read.
=== Other changes in 1.32 ===
* (T198811) The following tables have had their UNIQUE indexes turned into
proper PRIMARY KEYs for increased maintainability: interwiki, page_props,
protected_titles and site_identifiers.
* OOUI HTMLForm will now display help text inline after the input field,
rather than in a popup. Previous behavior can be restored by using
`'help-inline' => false`.
* The archive table's ar_rev_id field is now unique.
* Special:BotPasswords now requires reauthentication.
* (T174023) Multi-Content Revision (MCR) capabilities were introduced into the
storage layer and have basic support for display. No user interface exists
yet for creating or managing content in slots beides the main slot. See
<https://www.mediawiki.org/wiki/Multi-Content_Revisions> for more
information.
* The image_comment_temp database table has been removed. Since all access
should be mediated by the CommentStore class, this change shouldn't affect
external code.
* (T206147) Database::close() will no longer commit any open transactions.
* (T64103) Dropped columns category.cat_hidden, site_stats.ss_admins, and
recentchanges.rc_cur_time from the PostgreSQL schema.
== Compatibility ==
MediaWiki 1.32 requires PHP 7.0.0 or later. Although HHVM 3.18.5 or later is
supported, it is generally advised to use PHP 7.0.0 or later for long term
support. MediaWiki requires that the mbstring, xml, ctype, json, iconv and
fileinfo PHP extensions are loaded to work.
MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
but support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.5.8 or later
* PostgreSQL 9.2 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.32 has several database changes since 1.31, 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.
For notes on 1.31.x and older releases, see HISTORY.
== 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.

View File

@ -1,38 +0,0 @@
<?php
/**
* To use a profiler, copy this file to StartProfiler.php and add:
* $wgProfiler['class'] = 'ProfilerXhprof';
*
* For output, set the 'output' key to an array of class names, one for each
* output type you want the profiler to generate. For example:
* $wgProfiler['output'] = array( 'ProfilerOutputText' );
*
* The output classes available to you by default are ProfilerOutputDb,
* ProfilerOutputDump, ProfilerOutputStats, ProfilerOutputText, and
* ProfilerOutputUdp.
*
* ProfilerOutputStats outputs profiling data as StatsD metrics. It expects
* that you have set the $wgStatsdServer configuration variable to the host (or
* host:port) of your statsd server.
*
* ProfilerOutputText will output profiling data in the page body as a comment.
* You can make the profiling data in HTML render as part of the page content
* by setting the 'visible' configuration flag:
* $wgProfiler['visible'] = true;
*
* 'ProfilerOutputDb' expects a database table that can be created by applying
* maintenance/archives/patch-profiling.sql to your database.
*
* 'ProfilerOutputDump' expects a $wgProfiler['outputDir'] telling it where to
* write dump files. The files produced are compatible with the XHProf gui.
* For a rudimentary sampling profiler:
* $wgProfiler['class'] = 'ProfilerXhprof';
* $wgProfiler['output'] = array( 'ProfilerOutputDb' );
* $wgProfiler['sampling'] = 50; // one every 50 requests
* This will use ProfilerStub for non-sampled cases.
*
* For performance, the profiler is always disabled for CLI scripts as they
* could be long running and the data would accumulate. Use the '--profiler'
* parameter of maintenance scripts to override this.
*/

259
UPGRADE
View File

@ -1,24 +1,23 @@
This file provides an overview of the MediaWiki upgrade process. For help with
specific problems, check
specific problems, you should check:
* the documentation at https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents
* the docs at https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents ;
* the mediawiki-l mailing list archive at
https://lists.wikimedia.org/pipermail/mediawiki-l/
https://lists.wikimedia.org/pipermail/mediawiki-l/ ; and
* the bug tracker at https://phabricator.wikimedia.org/
for information and workarounds to common issues.
… for information and workarounds to common issues.
== Overview ==
Comprehensive documentation on upgrading to the latest version of the software
is available at https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Upgrading
We provide comprehensive documentation on upgrading to the latest version of the
software at https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Upgrading.
=== Consult the release notes ===
Before doing anything, stop and consult the release notes supplied with the new
version of the software. These detail bug fixes, new features and functionality,
and any particular points that may need to be noted during the upgrade
procedure.
and any particular points that may need to be noted during the upgrade process.
=== Backup first ===
@ -27,19 +26,18 @@ you take a complete backup of your wiki database and files and verify it. While
the upgrade scripts are somewhat robust, there is no guarantee that things will
not fail, leaving the database in an inconsistent state.
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Backing_up_a_wiki provides an overview of
the backup process. You should also refer to the documentation for your
database management system for information on backing up a database, and to
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Backing_up_a_wiki is an
overview of the backup process. You should also refer to the documentation for
your database management system for information on backing up a database, and to
your operating system documentation for information on making copies of files.
=== Perform the file upgrade ===
Download the files for the new version of the software. These are available
as a compressed "tar" archive from the Wikimedia Download Service
Download the files for the new version of the software. These are available as a
compressed "tar" archive from the Wikimedia Download Service
(https://releases.wikimedia.org/mediawiki/).
You can also obtain the new files directly from our Git source code
repository.
You can also obtain the new files directly from our Git source code repository.
Replace the existing MediaWiki files with the new. You should preserve the
LocalSettings.php file and the "extensions" and "images" directories.
@ -50,15 +48,15 @@ deleted file archives, and any custom skins.
=== Perform the database upgrade ===
As of 1.21, it is possible to separate schema changes (i.e. adding,
dropping, or changing tables, fields, or indices) from all other
database changes (e.g. populating fields). If you need this
capability, see "From the command line" below.
As of 1.21, it is possible to separate schema changes (i.e. adding, dropping, or
changing tables, fields, or indices) from all other database changes (e.g.
populating fields). If you need this capability, see "From the command line"
below.
==== From the web ====
==== From the Web ====
If you browse to the web-based installation script (usually at
/mw-config/index.php) from your wiki installation you can follow the script and
If you browse to the Web-based installation script (usually at
./mw-config/index.php) from your wiki installation you can follow the script and
upgrade your database in place.
==== From the command line ====
@ -68,19 +66,19 @@ update.php script to check and update the schema. This will insert missing
tables, update existing tables, and move data around as needed. In most cases,
this is successful and nothing further needs to be done.
If you need to separate out the schema changes so they can be run
by someone with more privileges, then you can use the --schema option
to produce a text file with the necessary commands. You can use
--schema, --noschema, $wgAllowSchemaUpdates as well as proper database
permissions to enforce this separation.
If you need to separate out the schema changes so they can be run by someone
with more privileges, then you can use the --schema option to produce a text
file with the necessary commands. You can use --schema, --noschema,
$wgAllowSchemaUpdates as well as proper database permissions to enforce this
separation.
=== Check configuration settings ===
The names of configuration variables, and their default values and purposes,
can change between release branches, e.g. $wgDisableUploads in 1.4 is replaced
with $wgEnableUploads in later versions. When upgrading, consult the release
notes to check for configuration changes which would alter the expected
behavior of MediaWiki.
The names of configuration variables, and their default values and purposes, can
change between release branches, e.g. $wgDisableUploads in 1.4 is replaced with
$wgEnableUploads in later versions. When upgrading, consult the release notes to
check for configuration changes which would alter the expected behavior of
MediaWiki.
=== Check installed extensions ===
@ -94,48 +92,48 @@ LocalSettings.php
It makes sense to test your wiki immediately following any kind of maintenance
procedure, and especially after upgrading; check that page views and edits work
normally and that special pages continue to function, etc. and correct errors
normally, that special pages continue to function, etc., and correct any errors
and quirks which reveal themselves.
You should also test any extensions, and upgrade these if necessary.
== Upgrading from 1.16 or earlier ==
If you have a Chinese or Japanese wiki ($wgLanguageCode is set to one
of "zh", "ja", or "yue") and you are using MySQL fulltext search, you
will probably want to update the search index.
If you have a Chinese or Japanese wiki ($wgLanguageCode is set to one of "zh",
"ja", or "yue") and you are using MySQL fulltext search, you will probably want
to update the search index.
In the "maintenance" directory, run the updateDoubleWidthSearch.php
script. This will update the searchindex table for those pages that
contain double-byte latin characters.
In the "maintenance" directory, run the updateDoubleWidthSearch.php script. This
will update the searchindex table for those pages that contain double-byte Latin
characters.
== Upgrading from 1.10 or earlier ==
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
If upgrading from before 1.11, and you are using a wiki as a commons repository,
make sure that it is updated as well. Otherwise, errors may arise due to
database schema changes.
== Upgrading from 1.8 or earlier ==
MediaWiki 1.9 and later no longer keep default localized message text
in the database; 'MediaWiki:'-namespace pages that do not exist in the
database are simply transparently filled-in on demand.
MediaWiki 1.9 and later no longer keep default localized message text in the
database; 'MediaWiki:'-namespace pages that do not exist in the database are
simply transparently filled-in on demand.
The upgrade process will delete any 'MediaWiki:' pages which are left
in the default state (last edited by 'MediaWiki default'). This may
take a few moments, similar to the old initial setup.
The upgrade process will delete any 'MediaWiki:' pages which are left in the
default state (last edited by 'MediaWiki default'). This may take a few moments,
similar to the old initial setup.
Note that the large number of deletions may cause older edits to expire
from the list on Special:Recentchanges, although the deletions themselves
will be hidden by default. (Click "show bot edits" to list them.)
Note that the large number of deletions may cause older edits to expire from the
list on Special:Recentchanges, although the deletions themselves will be hidden
by default. (Click "show bot edits" to list them.)
See RELEASE-NOTES for more details about new and changed options.
== Upgrading from 1.7 or earlier ==
$wgDefaultUserOptions now contains all the defaults, not only overrides.
If you're setting this as a complete array(), you may need to change it
to set only specific items as recommended in DefaultSettings.php.
$wgDefaultUserOptions now contains all the defaults, not only overrides. If you
are setting this as a complete array(), you may need to change it to set only
specific items as recommended in DefaultSettings.php.
== Upgrading from 1.6 or earlier ==
@ -146,58 +144,56 @@ new database fields are filled with data.
== Upgrading from 1.5 or earlier ==
Major changes have been made to the schema from 1.4.x. The updater
has not been fully tested for all conditions, and might well break.
Major changes have been made to the schema from 1.4.x. The updater has not been
fully tested for all conditions, and might well break.
On a large site, the schema update might take a long time. It might
explode, or leave your database half-done or otherwise badly hurting.
On a large site, the schema update might take a long time. It might explode, or
leave your database half-done or otherwise badly hurting.
Among other changes, note that Latin-1 encoding (ISO-8859-1) is
no longer supported. Latin-1 wikis will need to be upgraded to
UTF-8; an experimental command-line upgrade helper script,
'upgrade1_5.php', can do this -- run it prior to 'update.php' or
the web upgrader.
Among other changes, note that Latin-1 encoding (ISO-8859-1) is no longer
supported. Latin-1 wikis will need to be upgraded to UTF-8; an experimental
command-line upgrade helper script, 'upgrade1_5.php', can do this -- run it
prior to 'update.php' or the Web upgrader.
NOTE that upgrade1_5.php does not work properly with recent versions
of MediaWiki. If upgrading a 1.4.x wiki, you should upgrade to 1.5
first. upgrade1_5.php has been removed from MediaWiki 1.21.
NOTE that upgrade1_5.php does not work properly with recent versions of
MediaWiki. If upgrading a 1.4.x wiki, you should upgrade to 1.5 first.
upgrade1_5.php has been removed from MediaWiki 1.21.
If you absolutely cannot make the UTF-8 upgrade work, you can try
doing it by hand: dump your old database, convert the dump file
using iconv as described here:
http://portal.suse.com/sdb/en/2004/05/jbartsh_utf-8.html
and then reimport it. You can also convert filenames using convmv,
but note that the old directory hashes will no longer be valid,
so you will also have to move them to new destinations.
If you absolutely cannot make the UTF-8 upgrade work, you can try doing it by
hand: dump your old database, convert the dump file using iconv as described
here: http://portal.suse.com/sdb/en/2004/05/jbartsh_utf-8.html
and then re-import it. You can also convert filenames using convmv, but note
that the old directory hashes will no longer be valid, so you will also have to
move them to new destinations.
Message changes:
* A number of additional UI messages have been changed from HTML to
wikitext, and will need to be manually fixed if customized.
* A number of additional UI messages have been changed from HTML to wikitext,
and will need to be manually fixed if customized.
=== Configuration changes from 1.4.x: ===
$wgDisableUploads has been replaced with $wgEnableUploads.
$wgWhitelistAccount has been replaced by the 'createaccount' permission
key in $wgGroupPermissions. To emulate the old effect of setting:
$wgWhitelistAccount has been replaced by the 'createaccount' permission key in
$wgGroupPermissions. To emulate the old effect of setting:
$wgWhitelistAccount['user'] = 0;
set:
$wgGroupPermissions['*']['createaccount'] = false;
$wgWhitelistEdit has been replaced by the 'edit' permission key.
To emulate the old effect of setting:
$wgWhitelistEdit has been replaced by the 'edit' permission key. To emulate the
old effect of setting:
$wgWhitelistEdit = true;
set:
$wgGroupPermissions['*']['edit'] = false;
If $wgWhitelistRead is set, you must also disable the 'read' permission
for it to take affect on anonymous users:
If $wgWhitelistRead is set, you must also disable the 'read' permission for it
to take affect on anonymous users:
$wgWhitelistRead = array( "Main Page", "Special:Userlogin" );
$wgGroupPermissions['*']['read'] = false;
Note that you can disable/enable several other permissions by modifying
this configuration array in your LocalSettings.php; see DefaultSettings.php
for the complete default permission set.
Note that you can disable/enable several other permissions by modifying this
configuration array in your LocalSettings.php; see DefaultSettings.php for the
complete default permission set.
If using Memcached, you must enabled it differently now:
$wgUseMemCached = true;
@ -206,35 +202,31 @@ should be replaced with:
== Upgrading from 1.4.2 or earlier ==
1.4.3 has added new fields to the sitestats table. These fields are
optional and help to speed Special:Statistics on large sites. If you
choose not to run the database upgrades, everything will continue to
work in 1.4.3.
1.4.3 has added new fields to the sitestats table. These fields are optional and
help to speed Special:Statistics on large sites. If you choose not to run the
database upgrades, everything will continue to work in 1.4.3.
You can apply the update by running maintenance/update.php, or
manually run the SQL commands from this file:
You can apply the update by running maintenance/update.php, or manually run the
SQL commands from this file:
maintenance/archives/patch-ss_total_articles.sql
== Upgrading from 1.4rc1 or earlier betas ==
The logging table has been altered from 1.4beta4 to 1.4beta5
and again in 1.4.0 final. Copy in the new files and use the web
installer to upgrade, or the command-line maintenance/update.php.
If you cannot use the automated installers/updaters, you may
update the table by manually running the SQL commands in these
files:
maintenance/archives/patch-log_params.sql
maintenance/archives/patch-logging-title.sql
The logging table has been altered from 1.4beta4 to 1.4beta5 and again in 1.4.0
final. Copy in the new files and use the Web installer to upgrade, or the
command-line maintenance/update.php.
If you cannot use the automated installers/updaters, you may update the table by
manually running the SQL commands in these files:
maintenance/archives/patch-log_params.sql
maintenance/archives/patch-logging-title.sql
== Upgrading from 1.3 or earlier ==
This should generally go smoothly.
If you keep your LocalSettings.php, you may need to change the style paths
to match the newly rearranged skin modules. Change these lines:
If you keep your LocalSettings.php, you may need to change the style paths to
match the newly rearranged skin modules. Change these lines:
$wgStylePath = "$wgScriptPath/stylesheets";
$wgStyleDirectory = "$IP/stylesheets";
$wgLogo = "$wgStylePath/images/wiki.png";
@ -244,9 +236,9 @@ to this:
$wgStyleDirectory = "$IP/skins";
$wgLogo = "$wgStylePath/common/images/wiki.png";
As well as new messages, the processing of some messages has changed.
If you have customized them, please compare the new format using
Special:Allmessages or the relevant LanguageXX.php files:
As well as new messages, the processing of some messages has changed. If you
have customized them, please compare the new format using Special:Allmessages or
the relevant LanguageXX.php files:
* copyrightwarning
* dberrortext
@ -262,45 +254,42 @@ Special:Allmessages or the relevant LanguageXX.php files:
* showhideminor
* unprotectedarticle
Note that the 1.3 beta releases included a potential vulnerability if PHP
is configured with register_globals on and the includes directory is
served to the web. For general safety, turn register_globals *off* if you
don't _really_ need it for another package.
If your hosting provider turns it on and you can't turn it off yourself,
send them a kind note explaining that it can expose their servers and their
customers to attacks.
Note that the 1.3 beta releases included a potential vulnerability if PHP is
configured with register_globals on and the includes directory is served to the
Web. For general safety, turn register_globals *off* if you don't _really_ need
it for another package.
If your hosting provider turns it on and you can't turn it off yourself, send
them a kind note explaining that it can expose their servers and their customers
to attacks.
== Upgrading from 1.2 or earlier ==
If you've been using the MediaWiki: namespace for custom page templates,
note that things are a little different. The Template: namespace has been
added which is more powerful -- templates can include parameters for
instance.
If you've been using the MediaWiki: namespace for custom page templates, note
that things are a little different. The Template: namespace has been added which
is more powerful -- templates can include parameters for instance.
If you were using custom MediaWiki: entries for text inclusions, they
will *not* automatically be moved to Template: entries at upgrade time.
Be sure to go through and check that everything is working properly;
you can move them manually or you can try using moveCustomMessages.php
in maintenance/archives to do it automatically, but this might break things.
Also, be sure to pick the correct character encoding -- some languages were
only available in Latin-1 on 1.2.x and are now available for Unicode as well.
If you want to upgrade an existing wiki from Latin-1 to Unicode you'll have
to dump the database to SQL, run it through iconv or another conversion tool,
and restore it. Sorry.
If you were using custom MediaWiki: entries for text inclusions, they will *not*
automatically be moved to Template: entries at upgrade time. Be sure to go
through and check that everything is working properly; you can move them
manually or you can try using moveCustomMessages.php in maintenance/archives to
do it automatically, but this might break things.
Also, be sure to pick the correct character encoding -- some languages were only
available in Latin-1 on 1.2.x and are now available for Unicode as well. If you
want to upgrade an existing wiki from Latin-1 to Unicode you'll have to dump the
database to SQL, run it through iconv or another conversion tool, and restore
it. Sorry.
== Upgrading from 1.1 or earlier ==
This is less thoroughly tested, but should work.
You need to specify the *admin* database username and password to the
installer in order for it to successfully upgrade the database structure.
You may wish to manually change the GRANTs later.
You need to specify the *admin* database username and password to the installer
in order for it to successfully upgrade the database structure. You may wish to
manually change the GRANTs later.
If you have a very old database (earlier than organized MediaWiki releases
in late August 2003) you may need to manually run some of the update SQL
scripts in maintenance/archives before the installer is able to pick up
with remaining updates.
If you have a very old database (earlier than organized MediaWiki releases in
late August 2003) you may need to manually run some of the update SQL scripts in
maintenance/archives before the installer is able to pick up with remaining
updates.

33
api.php
View File

@ -2,13 +2,10 @@
/**
* This file is the entry point for all API queries.
*
* It begins by checking whether the API is enabled on this wiki; if not,
* it informs the user that s/he should set $wgEnableAPI to true and exits.
* Otherwise, it constructs a new ApiMain using the parameter passed to it
* as an argument in the URL ('?action=') and with write-enabled set to the
* value of $wgEnableWriteAPI as specified in LocalSettings.php.
* It then invokes "execute()" on the ApiMain object instance, which
* produces output in the format specified in the URL.
* It begins by constructing a new ApiMain using the parameter passed to it
* as an argument in the URL ('?action='). It then invokes "execute()" on the
* ApiMain object instance, which produces output in the format specified in
* the URL.
*
* Copyright © 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
*
@ -44,7 +41,7 @@ if ( !$wgRequest->checkUrlExtension() ) {
return;
}
// Pathinfo can be used for stupid things. We don't support it for api.php at
// PATH_INFO can be used for stupid things. We don't support it for api.php at
// all, so error out if it's present.
if ( isset( $_SERVER['PATH_INFO'] ) && $_SERVER['PATH_INFO'] != '' ) {
$correctUrl = wfAppendQuery( wfScript( 'api' ), $wgRequest->getQueryValues() );
@ -55,14 +52,6 @@ if ( isset( $_SERVER['PATH_INFO'] ) && $_SERVER['PATH_INFO'] != '' ) {
die( 1 );
}
// Verify that the API has not been disabled
if ( !$wgEnableAPI ) {
header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
echo 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php'
. '<pre><b>$wgEnableAPI=true;</b></pre>';
die( 1 );
}
// Set a dummy $wgTitle, because $wgTitle == null breaks various things
// In a perfect world this wouldn't be necessary
$wgTitle = Title::makeTitle( NS_SPECIAL, 'Badtitle/dummy title for API calls set in api.php' );
@ -76,14 +65,18 @@ try {
* is some form of an ApiMain, possibly even one that produces an error message,
* but we don't care here, as that is handled by the constructor.
*/
$processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI );
$processor = new ApiMain( RequestContext::getMain(), true );
// Last chance hook before executing the API
Hooks::run( 'ApiBeforeMain', [ &$processor ] );
if ( !$processor instanceof ApiMain ) {
throw new MWException( 'ApiBeforeMain hook set $processor to a non-ApiMain class' );
}
} catch ( Exception $e ) {
} catch ( Exception $e ) { // @todo Remove this block when HHVM is no longer supported
// Crap. Try to report the exception in API format to be friendly to clients.
ApiMain::handleApiBeforeMainException( $e );
$processor = false;
} catch ( Throwable $e ) {
// Crap. Try to report the exception in API format to be friendly to clients.
ApiMain::handleApiBeforeMainException( $e );
$processor = false;
@ -110,7 +103,9 @@ if ( $wgAPIRequestLog ) {
try {
$manager = $processor->getModuleManager();
$module = $manager->getModule( $wgRequest->getVal( 'action' ), 'action' );
} catch ( Exception $ex ) {
} catch ( Exception $ex ) { // @todo Remove this block when HHVM is no longer supported
$module = null;
} catch ( Throwable $ex ) {
$module = null;
}
if ( !$module || $module->mustBePosted() ) {

View File

@ -12,7 +12,8 @@ $wgAutoloadLocalClasses = [
'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php',
'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php',
'ActorMigration' => __DIR__ . '/includes/ActorMigration.php',
'AddRFCAndPMIDInterwiki' => __DIR__ . '/maintenance/addRFCandPMIDInterwiki.php',
'AddChangeTag' => __DIR__ . '/maintenance/addChangeTag.php',
'AddRFCandPMIDInterwiki' => __DIR__ . '/maintenance/addRFCandPMIDInterwiki.php',
'AddSite' => __DIR__ . '/maintenance/addSite.php',
'AjaxDispatcher' => __DIR__ . '/includes/AjaxDispatcher.php',
'AjaxResponse' => __DIR__ . '/includes/AjaxResponse.php',
@ -64,7 +65,7 @@ $wgAutoloadLocalClasses = [
'ApiManageTags' => __DIR__ . '/includes/api/ApiManageTags.php',
'ApiMergeHistory' => __DIR__ . '/includes/api/ApiMergeHistory.php',
'ApiMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiMessageTrait' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiMessageTrait' => __DIR__ . '/includes/api/ApiMessageTrait.php',
'ApiModuleManager' => __DIR__ . '/includes/api/ApiModuleManager.php',
'ApiMove' => __DIR__ . '/includes/api/ApiMove.php',
'ApiOpenSearch' => __DIR__ . '/includes/api/ApiOpenSearch.php',
@ -93,7 +94,7 @@ $wgAutoloadLocalClasses = [
'ApiQueryCategories' => __DIR__ . '/includes/api/ApiQueryCategories.php',
'ApiQueryCategoryInfo' => __DIR__ . '/includes/api/ApiQueryCategoryInfo.php',
'ApiQueryCategoryMembers' => __DIR__ . '/includes/api/ApiQueryCategoryMembers.php',
'ApiQueryContributions' => __DIR__ . '/includes/api/ApiQueryUserContributions.php',
'ApiQueryContributions' => __DIR__ . '/includes/api/ApiQueryUserContribs.php',
'ApiQueryContributors' => __DIR__ . '/includes/api/ApiQueryContributors.php',
'ApiQueryDeletedRevisions' => __DIR__ . '/includes/api/ApiQueryDeletedRevisions.php',
'ApiQueryDeletedrevs' => __DIR__ . '/includes/api/ApiQueryDeletedrevs.php',
@ -129,11 +130,12 @@ $wgAutoloadLocalClasses = [
'ApiQueryStashImageInfo' => __DIR__ . '/includes/api/ApiQueryStashImageInfo.php',
'ApiQueryTags' => __DIR__ . '/includes/api/ApiQueryTags.php',
'ApiQueryTokens' => __DIR__ . '/includes/api/ApiQueryTokens.php',
'ApiQueryUserContribs' => __DIR__ . '/includes/api/ApiQueryUserContribs.php',
'ApiQueryUserInfo' => __DIR__ . '/includes/api/ApiQueryUserInfo.php',
'ApiQueryUsers' => __DIR__ . '/includes/api/ApiQueryUsers.php',
'ApiQueryWatchlist' => __DIR__ . '/includes/api/ApiQueryWatchlist.php',
'ApiQueryWatchlistRaw' => __DIR__ . '/includes/api/ApiQueryWatchlistRaw.php',
'ApiRawMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiRawMessage' => __DIR__ . '/includes/api/ApiRawMessage.php',
'ApiRemoveAuthenticationData' => __DIR__ . '/includes/api/ApiRemoveAuthenticationData.php',
'ApiResetPassword' => __DIR__ . '/includes/api/ApiResetPassword.php',
'ApiResult' => __DIR__ . '/includes/api/ApiResult.php',
@ -172,7 +174,7 @@ $wgAutoloadLocalClasses = [
'AvroValidator' => __DIR__ . '/includes/utils/AvroValidator.php',
'BacklinkCache' => __DIR__ . '/includes/cache/BacklinkCache.php',
'BacklinkJobUtils' => __DIR__ . '/includes/jobqueue/utils/BacklinkJobUtils.php',
'BackupDumper' => __DIR__ . '/maintenance/backup.inc',
'BackupDumper' => __DIR__ . '/maintenance/includes/BackupDumper.php',
'BackupReader' => __DIR__ . '/maintenance/importDump.php',
'BadRequestError' => __DIR__ . '/includes/exception/BadRequestError.php',
'BadTitleError' => __DIR__ . '/includes/exception/BadTitleError.php',
@ -183,11 +185,9 @@ $wgAutoloadLocalClasses = [
'BatchRowIterator' => __DIR__ . '/includes/utils/BatchRowIterator.php',
'BatchRowUpdate' => __DIR__ . '/includes/utils/BatchRowUpdate.php',
'BatchRowWriter' => __DIR__ . '/includes/utils/BatchRowWriter.php',
'BatchedQueryRunner' => __DIR__ . '/maintenance/runBatchedQuery.php',
'BcryptPassword' => __DIR__ . '/includes/password/BcryptPassword.php',
'BenchHttpHttps' => __DIR__ . '/maintenance/benchmarks/bench_HTTP_HTTPS.php',
'BenchIfSwitch' => __DIR__ . '/maintenance/benchmarks/bench_if_switch.php',
'BenchStrtrStrReplace' => __DIR__ . '/maintenance/benchmarks/bench_strtr_str_replace.php',
'BenchUtf8TitleCheck' => __DIR__ . '/maintenance/benchmarks/bench_utf8_title_check.php',
'BenchWfIsWindows' => __DIR__ . '/maintenance/benchmarks/bench_wfIsWindows.php',
'BenchWikimediaBaseConvert' => __DIR__ . '/maintenance/benchmarks/bench_Wikimedia_base_convert.php',
@ -195,21 +195,24 @@ $wgAutoloadLocalClasses = [
'BenchmarkDeleteTruncate' => __DIR__ . '/maintenance/benchmarks/bench_delete_truncate.php',
'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php',
'BenchmarkJSMinPlus' => __DIR__ . '/maintenance/benchmarks/benchmarkJSMinPlus.php',
'BenchmarkJavaScriptMinifier' => __DIR__ . '/maintenance/benchmarks/benchmarkJavaScriptMinifier.php',
'BenchmarkLruHash' => __DIR__ . '/maintenance/benchmarks/benchmarkLruHash.php',
'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php',
'BenchmarkPurge' => __DIR__ . '/maintenance/benchmarks/benchmarkPurge.php',
'BenchmarkSanitizer' => __DIR__ . '/maintenance/benchmarks/benchmarkSanitizer.php',
'BenchmarkStringReplacement' => __DIR__ . '/maintenance/benchmarks/benchmarkStringReplacement.php',
'BenchmarkTidy' => __DIR__ . '/maintenance/benchmarks/benchmarkTidy.php',
'BenchmarkTitleValue' => __DIR__ . '/maintenance/benchmarks/benchmarkTitleValue.php',
'Benchmarker' => __DIR__ . '/maintenance/benchmarks/Benchmarker.php',
'BitmapHandler' => __DIR__ . '/includes/media/Bitmap.php',
'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/Bitmap_ClientOnly.php',
'BitmapHandler' => __DIR__ . '/includes/media/BitmapHandler.php',
'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/BitmapHandler_ClientOnly.php',
'BitmapMetadataHandler' => __DIR__ . '/includes/media/BitmapMetadataHandler.php',
'Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
'Block' => __DIR__ . '/includes/Block.php',
'BlockLevelPass' => __DIR__ . '/includes/parser/BlockLevelPass.php',
'BlockListPager' => __DIR__ . '/includes/specials/pagers/BlockListPager.php',
'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
'BmpHandler' => __DIR__ . '/includes/media/BmpHandler.php',
'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
'BrokenRedirectsPage' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
@ -222,9 +225,9 @@ $wgAutoloadLocalClasses = [
'CachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/CachedBagOStuff.php',
'CachingSiteStore' => __DIR__ . '/includes/site/CachingSiteStore.php',
'CannotCreateActorException' => __DIR__ . '/includes/exception/CannotCreateActorException.php',
'CapsCleanup' => __DIR__ . '/maintenance/cleanupCaps.php',
'CategoriesRdf' => __DIR__ . '/includes/CategoriesRdf.php',
'Category' => __DIR__ . '/includes/Category.php',
'CategoryChangesAsRdf' => __DIR__ . '/maintenance/categoryChangesAsRdf.php',
'CategoryFinder' => __DIR__ . '/includes/CategoryFinder.php',
'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php',
'CategoryMembershipChangeJob' => __DIR__ . '/includes/jobqueue/jobs/CategoryMembershipChangeJob.php',
@ -263,12 +266,16 @@ $wgAutoloadLocalClasses = [
'ClassCollector' => __DIR__ . '/includes/utils/AutoloadGenerator.php',
'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php',
'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
'CleanupCaps' => __DIR__ . '/maintenance/cleanupCaps.php',
'CleanupEmptyCategories' => __DIR__ . '/maintenance/cleanupEmptyCategories.php',
'CleanupImages' => __DIR__ . '/maintenance/cleanupImages.php',
'CleanupInvalidDbKeys' => __DIR__ . '/maintenance/cleanupInvalidDbKeys.php',
'CleanupPreferences' => __DIR__ . '/maintenance/cleanupPreferences.php',
'CleanupRemovedModules' => __DIR__ . '/maintenance/cleanupRemovedModules.php',
'CleanupSpam' => __DIR__ . '/maintenance/cleanupSpam.php',
'CleanupUploadStash' => __DIR__ . '/maintenance/cleanupUploadStash.php',
'CleanupUsersWithNoId' => __DIR__ . '/maintenance/cleanupUsersWithNoId.php',
'CleanupWatchlist' => __DIR__ . '/maintenance/cleanupWatchlist.php',
'ClearInterwikiCache' => __DIR__ . '/maintenance/clearInterwikiCache.php',
'ClearUserWatchlistJob' => __DIR__ . '/includes/jobqueue/jobs/ClearUserWatchlistJob.php',
'ClearWatchlistNotificationsJob' => __DIR__ . '/includes/jobqueue/jobs/ClearWatchlistNotificationsJob.php',
@ -278,8 +285,6 @@ $wgAutoloadLocalClasses = [
'CodeContentHandler' => __DIR__ . '/includes/content/CodeContentHandler.php',
'Collation' => __DIR__ . '/includes/collation/Collation.php',
'CollationCkb' => __DIR__ . '/includes/collation/CollationCkb.php',
'CollationEt' => __DIR__ . '/includes/collation/CollationEt.php',
'CollationFa' => __DIR__ . '/includes/collation/CollationFa.php',
'CommandLineInc' => __DIR__ . '/maintenance/commandLine.inc',
'CommandLineInstaller' => __DIR__ . '/maintenance/install.php',
'CommentStore' => __DIR__ . '/includes/CommentStore.php',
@ -303,6 +308,7 @@ $wgAutoloadLocalClasses = [
'Content' => __DIR__ . '/includes/content/Content.php',
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php',
'ContentSecurityPolicy' => __DIR__ . '/includes/ContentSecurityPolicy.php',
'ContextSource' => __DIR__ . '/includes/context/ContextSource.php',
'ContribsPager' => __DIR__ . '/includes/specials/pagers/ContribsPager.php',
'ConvertExtensionToRegistration' => __DIR__ . '/maintenance/convertExtensionToRegistration.php',
@ -317,6 +323,7 @@ $wgAutoloadLocalClasses = [
'CoreParserFunctions' => __DIR__ . '/includes/parser/CoreParserFunctions.php',
'CoreTagHooks' => __DIR__ . '/includes/parser/CoreTagHooks.php',
'CreateAndPromote' => __DIR__ . '/maintenance/createAndPromote.php',
'CreateCommonPasswordCdb' => __DIR__ . '/maintenance/createCommonPasswordCdb.php',
'CreateFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/CreateFileOp.php',
'CreditsAction' => __DIR__ . '/includes/actions/CreditsAction.php',
'CrhConverter' => __DIR__ . '/languages/classes/LanguageCrh.php',
@ -359,6 +366,7 @@ $wgAutoloadLocalClasses = [
'DateFormats' => __DIR__ . '/maintenance/language/date-formats.php',
'DateFormatter' => __DIR__ . '/includes/parser/DateFormatter.php',
'DeadendPagesPage' => __DIR__ . '/includes/specials/SpecialDeadendpages.php',
'DeduplicateArchiveRevId' => __DIR__ . '/maintenance/deduplicateArchiveRevId.php',
'DeferrableCallback' => __DIR__ . '/includes/deferred/DeferrableCallback.php',
'DeferrableUpdate' => __DIR__ . '/includes/deferred/DeferrableUpdate.php',
'DeferredStringifier' => __DIR__ . '/includes/libs/DeferredStringifier.php',
@ -372,15 +380,18 @@ $wgAutoloadLocalClasses = [
'DeleteEqualMessages' => __DIR__ . '/maintenance/deleteEqualMessages.php',
'DeleteFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/DeleteFileOp.php',
'DeleteLinksJob' => __DIR__ . '/includes/jobqueue/jobs/DeleteLinksJob.php',
'DeleteLocalPasswords' => __DIR__ . '/maintenance/includes/DeleteLocalPasswords.php',
'DeleteLogFormatter' => __DIR__ . '/includes/logging/DeleteLogFormatter.php',
'DeleteOldRevisions' => __DIR__ . '/maintenance/deleteOldRevisions.php',
'DeleteOrphanedRevisions' => __DIR__ . '/maintenance/deleteOrphanedRevisions.php',
'DeletePageJob' => __DIR__ . '/includes/jobqueue/jobs/DeletePageJob.php',
'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php',
'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php',
'DeletedContributionsPage' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
'DependencyWrapper' => __DIR__ . '/includes/cache/CacheDependency.php',
'DeprecatedGlobal' => __DIR__ . '/includes/DeprecatedGlobal.php',
'DeprecatedInterfaceFinder' => __DIR__ . '/maintenance/findDeprecated.php',
'DeprecationHelper' => __DIR__ . '/includes/debug/DeprecationHelper.php',
'DerivativeContext' => __DIR__ . '/includes/context/DerivativeContext.php',
'DerivativeRequest' => __DIR__ . '/includes/DerivativeRequest.php',
'DerivativeResourceLoaderContext' => __DIR__ . '/includes/resourceloader/DerivativeResourceLoaderContext.php',
@ -395,8 +406,9 @@ $wgAutoloadLocalClasses = [
'DiffOpCopy' => __DIR__ . '/includes/diff/DairikiDiff.php',
'DiffOpDelete' => __DIR__ . '/includes/diff/DairikiDiff.php',
'DifferenceEngine' => __DIR__ . '/includes/diff/DifferenceEngine.php',
'DifferenceEngineSlotDiffRenderer' => __DIR__ . '/includes/diff/DifferenceEngineSlotDiffRenderer.php',
'Digit2Html' => __DIR__ . '/maintenance/language/digit2html.php',
'DjVuHandler' => __DIR__ . '/includes/media/DjVu.php',
'DjVuHandler' => __DIR__ . '/includes/media/DjVuHandler.php',
'DjVuImage' => __DIR__ . '/includes/media/DjVuImage.php',
'DnsSrvDiscoverer' => __DIR__ . '/includes/libs/DnsSrvDiscoverer.php',
'DoubleRedirectJob' => __DIR__ . '/includes/jobqueue/jobs/DoubleRedirectJob.php',
@ -425,7 +437,9 @@ $wgAutoloadLocalClasses = [
'DumpRenderer' => __DIR__ . '/maintenance/renderDump.php',
'DumpRev' => __DIR__ . '/maintenance/storage/dumpRev.php',
'DumpStringOutput' => __DIR__ . '/includes/export/DumpStringOutput.php',
'DumpUploads' => __DIR__ . '/maintenance/dumpUploads.php',
'DuplicateJob' => __DIR__ . '/includes/jobqueue/jobs/DuplicateJob.php',
'EasyDeflate' => __DIR__ . '/includes/libs/EasyDeflate.php',
'EditAction' => __DIR__ . '/includes/actions/EditAction.php',
'EditCLI' => __DIR__ . '/maintenance/edit.php',
'EditPage' => __DIR__ . '/includes/EditPage.php',
@ -436,6 +450,7 @@ $wgAutoloadLocalClasses = [
'EmailNotification' => __DIR__ . '/includes/mail/EmailNotification.php',
'EmaillingJob' => __DIR__ . '/includes/jobqueue/jobs/EmaillingJob.php',
'EmptyBagOStuff' => __DIR__ . '/includes/libs/objectcache/EmptyBagOStuff.php',
'EmptyUserGroup' => __DIR__ . '/maintenance/emptyUserGroup.php',
'EnConverter' => __DIR__ . '/languages/classes/LanguageEn.php',
'EncryptedPassword' => __DIR__ . '/includes/password/EncryptedPassword.php',
'EnhancedChangesList' => __DIR__ . '/includes/changes/EnhancedChangesList.php',
@ -452,7 +467,7 @@ $wgAutoloadLocalClasses = [
'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerNull.php',
'ExecutableFinder' => __DIR__ . '/includes/utils/ExecutableFinder.php',
'Exif' => __DIR__ . '/includes/media/Exif.php',
'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmap.php',
'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmapHandler.php',
'ExplodeIterator' => __DIR__ . '/includes/libs/ExplodeIterator.php',
'ExportProgressFilter' => __DIR__ . '/includes/export/ExportProgressFilter.php',
'ExportSites' => __DIR__ . '/maintenance/exportSites.php',
@ -510,6 +525,7 @@ $wgAutoloadLocalClasses = [
'FileJournal' => __DIR__ . '/includes/libs/filebackend/filejournal/FileJournal.php',
'FileOp' => __DIR__ . '/includes/libs/filebackend/fileop/FileOp.php',
'FileOpBatch' => __DIR__ . '/includes/libs/filebackend/FileOpBatch.php',
'FileOpPerfTest' => __DIR__ . '/maintenance/fileOpPerfTest.php',
'FileRepo' => __DIR__ . '/includes/filerepo/FileRepo.php',
'FileRepoStatus' => __DIR__ . '/includes/filerepo/FileRepoStatus.php',
'FindDeprecated' => __DIR__ . '/maintenance/findDeprecated.php',
@ -533,16 +549,16 @@ $wgAutoloadLocalClasses = [
'FormAction' => __DIR__ . '/includes/actions/FormAction.php',
'FormOptions' => __DIR__ . '/includes/FormOptions.php',
'FormSpecialPage' => __DIR__ . '/includes/specialpage/FormSpecialPage.php',
'FormatInstallDoc' => __DIR__ . '/maintenance/formatInstallDoc.php',
'FormatJson' => __DIR__ . '/includes/json/FormatJson.php',
'FormatMetadata' => __DIR__ . '/includes/media/FormatMetadata.php',
'FormattedRCFeed' => __DIR__ . '/includes/rcfeed/FormattedRCFeed.php',
'FormlessAction' => __DIR__ . '/includes/actions/FormlessAction.php',
'GIFHandler' => __DIR__ . '/includes/media/GIF.php',
'GIFHandler' => __DIR__ . '/includes/media/GIFHandler.php',
'GIFMetadataExtractor' => __DIR__ . '/includes/media/GIFMetadataExtractor.php',
'GanConverter' => __DIR__ . '/languages/classes/LanguageGan.php',
'GenderCache' => __DIR__ . '/includes/cache/GenderCache.php',
'GenerateCollationData' => __DIR__ . '/maintenance/language/generateCollationData.php',
'GenerateCommonPassword' => __DIR__ . '/maintenance/createCommonPasswordCdb.php',
'GenerateJsonI18n' => __DIR__ . '/maintenance/generateJsonI18n.php',
'GenerateNormalizerDataAr' => __DIR__ . '/maintenance/language/generateNormalizerDataAr.php',
'GenerateNormalizerDataMl' => __DIR__ . '/maintenance/language/generateNormalizerDataMl.php',
@ -550,7 +566,7 @@ $wgAutoloadLocalClasses = [
'GenericArrayObject' => __DIR__ . '/includes/libs/GenericArrayObject.php',
'GetConfiguration' => __DIR__ . '/maintenance/getConfiguration.php',
'GetLagTimes' => __DIR__ . '/maintenance/getLagTimes.php',
'GetSlaveServer' => __DIR__ . '/maintenance/getReplicaServer.php',
'GetReplicaServer' => __DIR__ . '/maintenance/getReplicaServer.php',
'GetTextMaint' => __DIR__ . '/maintenance/getText.php',
'GitInfo' => __DIR__ . '/includes/GitInfo.php',
'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
@ -566,6 +582,7 @@ $wgAutoloadLocalClasses = [
'HTMLComboboxField' => __DIR__ . '/includes/htmlform/fields/HTMLComboboxField.php',
'HTMLDateTimeField' => __DIR__ . '/includes/htmlform/fields/HTMLDateTimeField.php',
'HTMLEditTools' => __DIR__ . '/includes/htmlform/fields/HTMLEditTools.php',
'HTMLExpiryField' => __DIR__ . '/includes/htmlform/fields/HTMLExpiryField.php',
'HTMLFileCache' => __DIR__ . '/includes/cache/HTMLFileCache.php',
'HTMLFloatField' => __DIR__ . '/includes/htmlform/fields/HTMLFloatField.php',
'HTMLForm' => __DIR__ . '/includes/htmlform/HTMLForm.php',
@ -616,7 +633,7 @@ $wgAutoloadLocalClasses = [
'Http' => __DIR__ . '/includes/http/Http.php',
'HttpError' => __DIR__ . '/includes/exception/HttpError.php',
'HttpStatus' => __DIR__ . '/includes/libs/HttpStatus.php',
'IApiMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'IApiMessage' => __DIR__ . '/includes/api/IApiMessage.php',
'IBufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/IBufferingStatsdDataFactory.php',
'ICacheHelper' => __DIR__ . '/includes/cache/CacheHelper.php',
'IContextSource' => __DIR__ . '/includes/context/IContextSource.php',
@ -634,7 +651,6 @@ $wgAutoloadLocalClasses = [
'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php',
'IdentityCollation' => __DIR__ . '/includes/collation/IdentityCollation.php',
'ImageBuilder' => __DIR__ . '/maintenance/rebuildImages.php',
'ImageCleanup' => __DIR__ . '/maintenance/cleanupImages.php',
'ImageGalleryBase' => __DIR__ . '/includes/gallery/ImageGalleryBase.php',
'ImageHandler' => __DIR__ . '/includes/media/ImageHandler.php',
'ImageHistoryList' => __DIR__ . '/includes/page/ImageHistoryList.php',
@ -689,22 +705,21 @@ $wgAutoloadLocalClasses = [
'JobQueueAggregatorRedis' => __DIR__ . '/includes/jobqueue/aggregator/JobQueueAggregatorRedis.php',
'JobQueueConnectionError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueDB' => __DIR__ . '/includes/jobqueue/JobQueueDB.php',
'JobQueueEnqueueUpdate' => __DIR__ . '/includes/deferred/JobQueueEnqueueUpdate.php',
'JobQueueError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueFederated' => __DIR__ . '/includes/jobqueue/JobQueueFederated.php',
'JobQueueGroup' => __DIR__ . '/includes/jobqueue/JobQueueGroup.php',
'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php',
'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php',
'JobQueueSecondTestQueue' => __DIR__ . '/includes/jobqueue/JobQueueSecondTestQueue.php',
'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php',
'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
'JpegHandler' => __DIR__ . '/includes/media/Jpeg.php',
'JpegHandler' => __DIR__ . '/includes/media/JpegHandler.php',
'JpegMetadataExtractor' => __DIR__ . '/includes/media/JpegMetadataExtractor.php',
'JsonContent' => __DIR__ . '/includes/content/JsonContent.php',
'JsonContentHandler' => __DIR__ . '/includes/content/JsonContentHandler.php',
'KkConverter' => __DIR__ . '/languages/classes/LanguageKk.php',
'KuConverter' => __DIR__ . '/languages/classes/LanguageKu.php',
'LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php',
'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
'LCStoreDB' => __DIR__ . '/includes/cache/localisation/LCStoreDB.php',
@ -823,19 +838,22 @@ $wgAutoloadLocalClasses = [
'MachineReadableRCFeedFormatter' => __DIR__ . '/includes/rcfeed/MachineReadableRCFeedFormatter.php',
'MagicWord' => __DIR__ . '/includes/MagicWord.php',
'MagicWordArray' => __DIR__ . '/includes/MagicWordArray.php',
'MagicWordFactory' => __DIR__ . '/includes/MagicWordFactory.php',
'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php',
'MainConfigDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'MaintainableDBConnRef' => __DIR__ . '/includes/libs/rdbms/database/MaintainableDBConnRef.php',
'Maintenance' => __DIR__ . '/maintenance/Maintenance.php',
'MaintenanceFormatInstallDoc' => __DIR__ . '/maintenance/formatInstallDoc.php',
'MakeTestEdits' => __DIR__ . '/maintenance/makeTestEdits.php',
'MalformedTitleException' => __DIR__ . '/includes/title/MalformedTitleException.php',
'ManageForeignResources' => __DIR__ . '/maintenance/resources/manageForeignResources.php',
'ManageJobs' => __DIR__ . '/maintenance/manageJobs.php',
'ManualLogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'MapCacheLRU' => __DIR__ . '/includes/libs/MapCacheLRU.php',
'MappedIterator' => __DIR__ . '/includes/libs/MappedIterator.php',
'MarkpatrolledAction' => __DIR__ . '/includes/actions/MarkpatrolledAction.php',
'McTest' => __DIR__ . '/maintenance/mctest.php',
'McrRestoreAction' => __DIR__ . '/includes/actions/McrRestoreAction.php',
'McrUndoAction' => __DIR__ . '/includes/actions/McrUndoAction.php',
'MediaHandler' => __DIR__ . '/includes/media/MediaHandler.php',
'MediaHandlerFactory' => __DIR__ . '/includes/media/MediaHandlerFactory.php',
'MediaStatisticsPage' => __DIR__ . '/includes/specials/SpecialMediaStatistics.php',
@ -843,51 +861,14 @@ $wgAutoloadLocalClasses = [
'MediaTransformInvalidParametersException' => __DIR__ . '/includes/media/MediaTransformInvalidParametersException.php',
'MediaTransformOutput' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'MediaWiki' => __DIR__ . '/includes/MediaWiki.php',
'MediaWikiI18N' => __DIR__ . '/includes/skins/MediaWikiI18N.php',
'MediaWikiShell' => __DIR__ . '/maintenance/shell.php',
'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
'MediaWiki\\Auth\\AbstractAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPreAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPreAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AuthManager' => __DIR__ . '/includes/auth/AuthManager.php',
'MediaWiki\\Auth\\AuthManagerAuthPlugin' => __DIR__ . '/includes/auth/AuthManagerAuthPlugin.php',
'MediaWiki\\Auth\\AuthManagerAuthPluginUser' => __DIR__ . '/includes/auth/AuthManagerAuthPlugin.php',
'MediaWiki\\Auth\\AuthPluginPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AuthPluginPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AuthenticationProvider' => __DIR__ . '/includes/auth/AuthenticationProvider.php',
'MediaWiki\\Auth\\AuthenticationRequest' => __DIR__ . '/includes/auth/AuthenticationRequest.php',
'MediaWiki\\Auth\\AuthenticationResponse' => __DIR__ . '/includes/auth/AuthenticationResponse.php',
'MediaWiki\\Auth\\ButtonAuthenticationRequest' => __DIR__ . '/includes/auth/ButtonAuthenticationRequest.php',
'MediaWiki\\Auth\\CheckBlocksSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\ConfirmLinkAuthenticationRequest' => __DIR__ . '/includes/auth/ConfirmLinkAuthenticationRequest.php',
'MediaWiki\\Auth\\ConfirmLinkSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/ConfirmLinkSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\CreateFromLoginAuthenticationRequest' => __DIR__ . '/includes/auth/CreateFromLoginAuthenticationRequest.php',
'MediaWiki\\Auth\\CreatedAccountAuthenticationRequest' => __DIR__ . '/includes/auth/CreatedAccountAuthenticationRequest.php',
'MediaWiki\\Auth\\CreationReasonAuthenticationRequest' => __DIR__ . '/includes/auth/CreationReasonAuthenticationRequest.php',
'MediaWiki\\Auth\\EmailNotificationSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/EmailNotificationSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\LegacyHookPreAuthenticationProvider' => __DIR__ . '/includes/auth/LegacyHookPreAuthenticationProvider.php',
'MediaWiki\\Auth\\LocalPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/LocalPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\PasswordAuthenticationRequest' => __DIR__ . '/includes/auth/PasswordAuthenticationRequest.php',
'MediaWiki\\Auth\\PasswordDomainAuthenticationRequest' => __DIR__ . '/includes/auth/PasswordDomainAuthenticationRequest.php',
'MediaWiki\\Auth\\PreAuthenticationProvider' => __DIR__ . '/includes/auth/PreAuthenticationProvider.php',
'MediaWiki\\Auth\\PrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/PrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\RememberMeAuthenticationRequest' => __DIR__ . '/includes/auth/RememberMeAuthenticationRequest.php',
'MediaWiki\\Auth\\ResetPasswordSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/ResetPasswordSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\SecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/SecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\TemporaryPasswordAuthenticationRequest' => __DIR__ . '/includes/auth/TemporaryPasswordAuthenticationRequest.php',
'MediaWiki\\Auth\\TemporaryPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/TemporaryPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\ThrottlePreAuthenticationProvider' => __DIR__ . '/includes/auth/ThrottlePreAuthenticationProvider.php',
'MediaWiki\\Auth\\Throttler' => __DIR__ . '/includes/auth/Throttler.php',
'MediaWiki\\Auth\\UserDataAuthenticationRequest' => __DIR__ . '/includes/auth/UserDataAuthenticationRequest.php',
'MediaWiki\\Auth\\UsernameAuthenticationRequest' => __DIR__ . '/includes/auth/UsernameAuthenticationRequest.php',
'MediaWiki\\Config\\ConfigRepository' => __DIR__ . '/includes/config/ConfigRepository.php',
'MediaWiki\\DB\\PatchFileLocation' => __DIR__ . '/includes/db/PatchFileLocation.php',
'MediaWiki\\Diff\\ComplexityException' => __DIR__ . '/includes/diff/ComplexityException.php',
'MediaWiki\\Diff\\WordAccumulator' => __DIR__ . '/includes/diff/WordAccumulator.php',
'MediaWiki\\EditPage\\TextConflictHelper' => __DIR__ . '/includes/editpage/TextConflictHelper.php',
'MediaWiki\\EditPage\\TextboxBuilder' => __DIR__ . '/includes/editpage/TextboxBuilder.php',
'MediaWiki\\Edit\\PreparedEdit' => __DIR__ . '/includes/edit/PreparedEdit.php',
'MediaWiki\\HeaderCallback' => __DIR__ . '/includes/HeaderCallback.php',
'MediaWiki\\Http\\HttpRequestFactory' => __DIR__ . '/includes/http/HttpRequestFactory.php',
'MediaWiki\\Interwiki\\ClassicInterwikiLookup' => __DIR__ . '/includes/interwiki/ClassicInterwikiLookup.php',
@ -916,85 +897,32 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
'MediaWiki\\OutputHandler' => __DIR__ . '/includes/OutputHandler.php',
'MediaWiki\\Preferences\\DefaultPreferencesFactory' => __DIR__ . '/includes/preferences/DefaultPreferencesFactory.php',
'MediaWiki\\Preferences\\PreferencesFactory' => __DIR__ . '/includes/preferences/PreferencesFactory.php',
'MediaWiki\\ProcOpenError' => __DIR__ . '/includes/exception/ProcOpenError.php',
'MediaWiki\\Search\\ParserOutputSearchDataExtractor' => __DIR__ . '/includes/search/ParserOutputSearchDataExtractor.php',
'MediaWiki\\Services\\CannotReplaceActiveServiceException' => __DIR__ . '/includes/services/CannotReplaceActiveServiceException.php',
'MediaWiki\\Services\\ContainerDisabledException' => __DIR__ . '/includes/services/ContainerDisabledException.php',
'MediaWiki\\Services\\DestructibleService' => __DIR__ . '/includes/services/DestructibleService.php',
'MediaWiki\\Services\\NoSuchServiceException' => __DIR__ . '/includes/services/NoSuchServiceException.php',
'MediaWiki\\Services\\SalvageableService' => __DIR__ . '/includes/services/SalvageableService.php',
'MediaWiki\\Services\\ServiceAlreadyDefinedException' => __DIR__ . '/includes/services/ServiceAlreadyDefinedException.php',
'MediaWiki\\Services\\ServiceContainer' => __DIR__ . '/includes/services/ServiceContainer.php',
'MediaWiki\\Services\\ServiceDisabledException' => __DIR__ . '/includes/services/ServiceDisabledException.php',
'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
'MediaWiki\\Session\\MetadataMergeException' => __DIR__ . '/includes/session/MetadataMergeException.php',
'MediaWiki\\Session\\PHPSessionHandler' => __DIR__ . '/includes/session/PHPSessionHandler.php',
'MediaWiki\\Session\\Session' => __DIR__ . '/includes/session/Session.php',
'MediaWiki\\Session\\SessionBackend' => __DIR__ . '/includes/session/SessionBackend.php',
'MediaWiki\\Session\\SessionId' => __DIR__ . '/includes/session/SessionId.php',
'MediaWiki\\Session\\SessionInfo' => __DIR__ . '/includes/session/SessionInfo.php',
'MediaWiki\\Session\\SessionManager' => __DIR__ . '/includes/session/SessionManager.php',
'MediaWiki\\Session\\SessionManagerInterface' => __DIR__ . '/includes/session/SessionManagerInterface.php',
'MediaWiki\\Session\\SessionProvider' => __DIR__ . '/includes/session/SessionProvider.php',
'MediaWiki\\Session\\SessionProviderInterface' => __DIR__ . '/includes/session/SessionProviderInterface.php',
'MediaWiki\\Session\\Token' => __DIR__ . '/includes/session/Token.php',
'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php',
'MediaWiki\\ShellDisabledError' => __DIR__ . '/includes/exception/ShellDisabledError.php',
'MediaWiki\\Shell\\Command' => __DIR__ . '/includes/shell/Command.php',
'MediaWiki\\Shell\\CommandFactory' => __DIR__ . '/includes/shell/CommandFactory.php',
'MediaWiki\\Shell\\FirejailCommand' => __DIR__ . '/includes/shell/FirejailCommand.php',
'MediaWiki\\Shell\\Result' => __DIR__ . '/includes/shell/Result.php',
'MediaWiki\\Shell\\Shell' => __DIR__ . '/includes/shell/Shell.php',
'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
'MediaWiki\\Sparql\\SparqlClient' => __DIR__ . '/includes/sparql/SparqlClient.php',
'MediaWiki\\Sparql\\SparqlException' => __DIR__ . '/includes/sparql/SparqlException.php',
'MediaWiki\\Storage\\BlobAccessException' => __DIR__ . '/includes/Storage/BlobAccessException.php',
'MediaWiki\\Storage\\BlobStore' => __DIR__ . '/includes/Storage/BlobStore.php',
'MediaWiki\\Storage\\BlobStoreFactory' => __DIR__ . '/includes/Storage/BlobStoreFactory.php',
'MediaWiki\\Storage\\IncompleteRevisionException' => __DIR__ . '/includes/Storage/IncompleteRevisionException.php',
'MediaWiki\\Storage\\MutableRevisionRecord' => __DIR__ . '/includes/Storage/MutableRevisionRecord.php',
'MediaWiki\\Storage\\MutableRevisionSlots' => __DIR__ . '/includes/Storage/MutableRevisionSlots.php',
'MediaWiki\\Storage\\NameTableAccessException' => __DIR__ . '/includes/Storage/NameTableAccessException.php',
'MediaWiki\\Storage\\NameTableStore' => __DIR__ . '/includes/Storage/NameTableStore.php',
'MediaWiki\\Storage\\RevisionAccessException' => __DIR__ . '/includes/Storage/RevisionAccessException.php',
'MediaWiki\\Storage\\RevisionArchiveRecord' => __DIR__ . '/includes/Storage/RevisionArchiveRecord.php',
'MediaWiki\\Storage\\RevisionFactory' => __DIR__ . '/includes/Storage/RevisionFactory.php',
'MediaWiki\\Storage\\RevisionLookup' => __DIR__ . '/includes/Storage/RevisionLookup.php',
'MediaWiki\\Storage\\RevisionRecord' => __DIR__ . '/includes/Storage/RevisionRecord.php',
'MediaWiki\\Storage\\RevisionSlots' => __DIR__ . '/includes/Storage/RevisionSlots.php',
'MediaWiki\\Storage\\RevisionStore' => __DIR__ . '/includes/Storage/RevisionStore.php',
'MediaWiki\\Storage\\RevisionStoreRecord' => __DIR__ . '/includes/Storage/RevisionStoreRecord.php',
'MediaWiki\\Storage\\SlotRecord' => __DIR__ . '/includes/Storage/SlotRecord.php',
'MediaWiki\\Storage\\SqlBlobStore' => __DIR__ . '/includes/Storage/SqlBlobStore.php',
'MediaWiki\\Storage\\SuppressedDataException' => __DIR__ . '/includes/Storage/SuppressedDataException.php',
'MediaWiki\\Tidy\\BalanceActiveFormattingElements' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceElement' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceMarker' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceSets' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceStack' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\Balancer' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\Html5Depurate' => __DIR__ . '/includes/tidy/Html5Depurate.php',
'MediaWiki\\Tidy\\Html5Internal' => __DIR__ . '/includes/tidy/Html5Internal.php',
'MediaWiki\\Tidy\\RaggettBase' => __DIR__ . '/includes/tidy/RaggettBase.php',
'MediaWiki\\Tidy\\RaggettExternal' => __DIR__ . '/includes/tidy/RaggettExternal.php',
'MediaWiki\\Tidy\\RaggettInternalHHVM' => __DIR__ . '/includes/tidy/RaggettInternalHHVM.php',
'MediaWiki\\Tidy\\RaggettInternalPHP' => __DIR__ . '/includes/tidy/RaggettInternalPHP.php',
'MediaWiki\\Tidy\\RaggettWrapper' => __DIR__ . '/includes/tidy/RaggettWrapper.php',
'MediaWiki\\Tidy\\RemexCompatFormatter' => __DIR__ . '/includes/tidy/RemexCompatFormatter.php',
'MediaWiki\\Tidy\\RemexCompatMunger' => __DIR__ . '/includes/tidy/RemexCompatMunger.php',
'MediaWiki\\Tidy\\RemexDriver' => __DIR__ . '/includes/tidy/RemexDriver.php',
'MediaWiki\\Tidy\\RemexMungerData' => __DIR__ . '/includes/tidy/RemexMungerData.php',
'MediaWiki\\Tidy\\TidyDriverBase' => __DIR__ . '/includes/tidy/TidyDriverBase.php',
'MediaWiki\\Special\\SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory.php',
'MediaWiki\\Storage\\IncompleteRevisionException' => __DIR__ . '/includes/Revision/IncompleteRevisionException.php',
'MediaWiki\\Storage\\MutableRevisionRecord' => __DIR__ . '/includes/Revision/MutableRevisionRecord.php',
'MediaWiki\\Storage\\MutableRevisionSlots' => __DIR__ . '/includes/Revision/MutableRevisionSlots.php',
'MediaWiki\\Storage\\RevisionAccessException' => __DIR__ . '/includes/Revision/RevisionAccessException.php',
'MediaWiki\\Storage\\RevisionArchiveRecord' => __DIR__ . '/includes/Revision/RevisionArchiveRecord.php',
'MediaWiki\\Storage\\RevisionFactory' => __DIR__ . '/includes/Revision/RevisionFactory.php',
'MediaWiki\\Storage\\RevisionLookup' => __DIR__ . '/includes/Revision/RevisionLookup.php',
'MediaWiki\\Storage\\RevisionRecord' => __DIR__ . '/includes/Revision/RevisionRecord.php',
'MediaWiki\\Storage\\RevisionSlots' => __DIR__ . '/includes/Revision/RevisionSlots.php',
'MediaWiki\\Storage\\RevisionStore' => __DIR__ . '/includes/Revision/RevisionStore.php',
'MediaWiki\\Storage\\RevisionStoreRecord' => __DIR__ . '/includes/Revision/RevisionStoreRecord.php',
'MediaWiki\\Storage\\SlotRecord' => __DIR__ . '/includes/Revision/SlotRecord.php',
'MediaWiki\\Storage\\SuppressedDataException' => __DIR__ . '/includes/Revision/SuppressedDataException.php',
'MediaWiki\\User\\UserIdentity' => __DIR__ . '/includes/user/UserIdentity.php',
'MediaWiki\\User\\UserIdentityValue' => __DIR__ . '/includes/user/UserIdentityValue.php',
'MediaWiki\\Widget\\CheckMatrixWidget' => __DIR__ . '/includes/widget/CheckMatrixWidget.php',
'MediaWiki\\Widget\\ComplexNamespaceInputWidget' => __DIR__ . '/includes/widget/ComplexNamespaceInputWidget.php',
'MediaWiki\\Widget\\ComplexTitleInputWidget' => __DIR__ . '/includes/widget/ComplexTitleInputWidget.php',
'MediaWiki\\Widget\\DateInputWidget' => __DIR__ . '/includes/widget/DateInputWidget.php',
'MediaWiki\\Widget\\DateTimeInputWidget' => __DIR__ . '/includes/widget/DateTimeInputWidget.php',
'MediaWiki\\Widget\\ExpiryInputWidget' => __DIR__ . '/includes/widget/ExpiryInputWidget.php',
'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
'MediaWiki\\Widget\\SearchInputWidget' => __DIR__ . '/includes/widget/SearchInputWidget.php',
'MediaWiki\\Widget\\Search\\BasicSearchResultSetWidget' => __DIR__ . '/includes/widget/search/BasicSearchResultSetWidget.php',
@ -1027,6 +955,7 @@ $wgAutoloadLocalClasses = [
'Message' => __DIR__ . '/includes/Message.php',
'MessageBlobStore' => __DIR__ . '/includes/cache/MessageBlobStore.php',
'MessageCache' => __DIR__ . '/includes/cache/MessageCache.php',
'MessageCacheUpdate' => __DIR__ . '/includes/deferred/MessageCacheUpdate.php',
'MessageContent' => __DIR__ . '/includes/content/MessageContent.php',
'MessageLocalizer' => __DIR__ . '/languages/MessageLocalizer.php',
'MessageSpecifier' => __DIR__ . '/includes/libs/MessageSpecifier.php',
@ -1034,9 +963,9 @@ $wgAutoloadLocalClasses = [
'MigrateArchiveText' => __DIR__ . '/maintenance/migrateArchiveText.php',
'MigrateComments' => __DIR__ . '/maintenance/migrateComments.php',
'MigrateFileRepoLayout' => __DIR__ . '/maintenance/migrateFileRepoLayout.php',
'MigrateImageCommentTemp' => __DIR__ . '/maintenance/migrateImageCommentTemp.php',
'MigrateUserGroup' => __DIR__ . '/maintenance/migrateUserGroup.php',
'MimeAnalyzer' => __DIR__ . '/includes/libs/mime/MimeAnalyzer.php',
'MimeMagic' => __DIR__ . '/includes/MimeMagic.php',
'MinifyScript' => __DIR__ . '/maintenance/minify.php',
'MostcategoriesPage' => __DIR__ . '/includes/specials/SpecialMostcategories.php',
'MostimagesPage' => __DIR__ . '/includes/specials/SpecialMostimages.php',
@ -1060,18 +989,18 @@ $wgAutoloadLocalClasses = [
'MwSql' => __DIR__ . '/maintenance/sql.php',
'MySqlLockManager' => __DIR__ . '/includes/filebackend/lockmanager/MySqlLockManager.php',
'MysqlInstaller' => __DIR__ . '/includes/installer/MysqlInstaller.php',
'MysqlMaintenance' => __DIR__ . '/maintenance/mysql.php',
'MysqlUpdater' => __DIR__ . '/includes/installer/MysqlUpdater.php',
'NaiveForeignTitleFactory' => __DIR__ . '/includes/title/NaiveForeignTitleFactory.php',
'NaiveImportTitleFactory' => __DIR__ . '/includes/title/NaiveImportTitleFactory.php',
'NamespaceAwareForeignTitleFactory' => __DIR__ . '/includes/title/NamespaceAwareForeignTitleFactory.php',
'NamespaceConflictChecker' => __DIR__ . '/maintenance/namespaceDupes.php',
'NamespaceDupes' => __DIR__ . '/maintenance/namespaceDupes.php',
'NamespaceImportTitleFactory' => __DIR__ . '/includes/title/NamespaceImportTitleFactory.php',
'NewFilesPager' => __DIR__ . '/includes/specials/pagers/NewFilesPager.php',
'NewPagesPager' => __DIR__ . '/includes/specials/pagers/NewPagesPager.php',
'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
'NoWriteWatchedItemStore' => __DIR__ . '/includes/watcheditem/NoWriteWatchedItemStore.php',
'NolinesImageGallery' => __DIR__ . '/includes/gallery/NolinesImageGallery.php',
'NorthernSamiUppercaseCollation' => __DIR__ . '/includes/collation/NorthernSamiUppercaseCollation.php',
'NotRecursiveIterator' => __DIR__ . '/includes/libs/iterators/NotRecursiveIterator.php',
'NukeNS' => __DIR__ . '/maintenance/nukeNS.php',
'NukePage' => __DIR__ . '/maintenance/nukePage.php',
@ -1098,7 +1027,7 @@ $wgAutoloadLocalClasses = [
'Orphans' => __DIR__ . '/maintenance/orphans.php',
'OutputPage' => __DIR__ . '/includes/OutputPage.php',
'PHPVersionCheck' => __DIR__ . '/includes/PHPVersionCheck.php',
'PNGHandler' => __DIR__ . '/includes/media/PNG.php',
'PNGHandler' => __DIR__ . '/includes/media/PNGHandler.php',
'PNGMetadataExtractor' => __DIR__ . '/includes/media/PNGMetadataExtractor.php',
'PPCustomFrame_DOM' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
'PPCustomFrame_Hash' => __DIR__ . '/includes/parser/Preprocessor_Hash.php',
@ -1133,10 +1062,12 @@ $wgAutoloadLocalClasses = [
'PageProps' => __DIR__ . '/includes/PageProps.php',
'PageQueryPage' => __DIR__ . '/includes/specialpage/PageQueryPage.php',
'Pager' => __DIR__ . '/includes/pager/Pager.php',
'PaginatingSearchEngine' => __DIR__ . '/includes/search/PaginatingSearchEngine.php',
'ParameterizedPassword' => __DIR__ . '/includes/password/ParameterizedPassword.php',
'Parser' => __DIR__ . '/includes/parser/Parser.php',
'ParserCache' => __DIR__ . '/includes/parser/ParserCache.php',
'ParserDiffTest' => __DIR__ . '/includes/parser/ParserDiffTest.php',
'ParserFactory' => __DIR__ . '/includes/parser/ParserFactory.php',
'ParserOptions' => __DIR__ . '/includes/parser/ParserOptions.php',
'ParserOutput' => __DIR__ . '/includes/parser/ParserOutput.php',
'ParsoidVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/ParsoidVirtualRESTService.php',
@ -1147,7 +1078,6 @@ $wgAutoloadLocalClasses = [
'PasswordReset' => __DIR__ . '/includes/user/PasswordReset.php',
'PatchSql' => __DIR__ . '/maintenance/patchSql.php',
'PathRouter' => __DIR__ . '/includes/PathRouter.php',
'PathRouterPatternReplacer' => __DIR__ . '/includes/PathRouter.php',
'PatrolLog' => __DIR__ . '/includes/logging/PatrolLog.php',
'PatrolLogFormatter' => __DIR__ . '/includes/logging/PatrolLogFormatter.php',
'Pbkdf2Password' => __DIR__ . '/includes/password/Pbkdf2Password.php',
@ -1165,7 +1095,10 @@ $wgAutoloadLocalClasses = [
'PopulateArchiveRevId' => __DIR__ . '/maintenance/populateArchiveRevId.php',
'PopulateBacklinkNamespace' => __DIR__ . '/maintenance/populateBacklinkNamespace.php',
'PopulateCategory' => __DIR__ . '/maintenance/populateCategory.php',
'PopulateChangeTagDef' => __DIR__ . '/maintenance/populateChangeTagDef.php',
'PopulateContentModel' => __DIR__ . '/maintenance/populateContentModel.php',
'PopulateContentTables' => __DIR__ . '/maintenance/populateContentTables.php',
'PopulateExternallinksIndex60' => __DIR__ . '/maintenance/populateExternallinksIndex60.php',
'PopulateFilearchiveSha1' => __DIR__ . '/maintenance/populateFilearchiveSha1.php',
'PopulateImageSha1' => __DIR__ . '/maintenance/populateImageSha1.php',
'PopulateInterwiki' => __DIR__ . '/maintenance/populateInterwiki.php',
@ -1181,8 +1114,11 @@ $wgAutoloadLocalClasses = [
'PostgresInstaller' => __DIR__ . '/includes/installer/PostgresInstaller.php',
'PostgresUpdater' => __DIR__ . '/includes/installer/PostgresUpdater.php',
'Preferences' => __DIR__ . '/includes/Preferences.php',
'PreferencesForm' => __DIR__ . '/includes/specials/forms/PreferencesForm.php',
'PreferencesForm' => __DIR__ . '/includes/specials/forms/PreferencesFormLegacy.php',
'PreferencesFormLegacy' => __DIR__ . '/includes/specials/forms/PreferencesFormLegacy.php',
'PreferencesFormOOUI' => __DIR__ . '/includes/specials/forms/PreferencesFormOOUI.php',
'PrefixSearch' => __DIR__ . '/includes/PrefixSearch.php',
'PrefixingStatsdDataFactoryProxy' => __DIR__ . '/includes/libs/stats/PrefixingStatsdDataFactoryProxy.php',
'PreprocessDump' => __DIR__ . '/maintenance/preprocessDump.php',
'Preprocessor' => __DIR__ . '/includes/parser/Preprocessor.php',
'Preprocessor_DOM' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
@ -1269,13 +1205,13 @@ $wgAutoloadLocalClasses = [
'ReplicatedBagOStuff' => __DIR__ . '/includes/libs/objectcache/ReplicatedBagOStuff.php',
'RepoGroup' => __DIR__ . '/includes/filerepo/RepoGroup.php',
'RequestContext' => __DIR__ . '/includes/context/RequestContext.php',
'ResetAuthenticationThrottle' => __DIR__ . '/maintenance/resetAuthenticationThrottle.php',
'ResetUserEmail' => __DIR__ . '/maintenance/resetUserEmail.php',
'ResetUserTokens' => __DIR__ . '/maintenance/resetUserTokens.php',
'ResourceFileCache' => __DIR__ . '/includes/cache/ResourceFileCache.php',
'ResourceLoader' => __DIR__ . '/includes/resourceloader/ResourceLoader.php',
'ResourceLoaderClientHtml' => __DIR__ . '/includes/resourceloader/ResourceLoaderClientHtml.php',
'ResourceLoaderContext' => __DIR__ . '/includes/resourceloader/ResourceLoaderContext.php',
'ResourceLoaderEditToolbarModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderEditToolbarModule.php',
'ResourceLoaderFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderFileModule.php',
'ResourceLoaderFilePath' => __DIR__ . '/includes/resourceloader/ResourceLoaderFilePath.php',
'ResourceLoaderForeignApiModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderForeignApiModule.php',
@ -1284,12 +1220,12 @@ $wgAutoloadLocalClasses = [
'ResourceLoaderJqueryMsgModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderJqueryMsgModule.php',
'ResourceLoaderLanguageDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageDataModule.php',
'ResourceLoaderLanguageNamesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageNamesModule.php',
'ResourceLoaderLessVarFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLessVarFileModule.php',
'ResourceLoaderMediaWikiUtilModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php',
'ResourceLoaderModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderModule.php',
'ResourceLoaderOOUIFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIFileModule.php',
'ResourceLoaderOOUIImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIImageModule.php',
'ResourceLoaderOOUIModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIModule.php',
'ResourceLoaderRawFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderRawFileModule.php',
'ResourceLoaderSiteModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteModule.php',
'ResourceLoaderSiteStylesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteStylesModule.php',
'ResourceLoaderSkinModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSkinModule.php',
@ -1334,12 +1270,12 @@ $wgAutoloadLocalClasses = [
'RollbackAction' => __DIR__ . '/includes/actions/RollbackAction.php',
'RollbackEdits' => __DIR__ . '/maintenance/rollbackEdits.php',
'RowUpdateGenerator' => __DIR__ . '/includes/utils/RowUpdateGenerator.php',
'RunBatchedQuery' => __DIR__ . '/maintenance/runBatchedQuery.php',
'RunJobs' => __DIR__ . '/maintenance/runJobs.php',
'SVGMetadataExtractor' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
'SVGReader' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
'SamplingStatsdClient' => __DIR__ . '/includes/libs/stats/SamplingStatsdClient.php',
'Sanitizer' => __DIR__ . '/includes/parser/Sanitizer.php',
'ScopedCallback' => __DIR__ . '/includes/compat/ScopedCallback.php',
'ScopedLock' => __DIR__ . '/includes/libs/lockmanager/ScopedLock.php',
'SearchApi' => __DIR__ . '/includes/api/SearchApi.php',
'SearchDatabase' => __DIR__ . '/includes/search/SearchDatabase.php',
@ -1392,6 +1328,7 @@ $wgAutoloadLocalClasses = [
'SkinFallbackTemplate' => __DIR__ . '/includes/skins/SkinFallbackTemplate.php',
'SkinTemplate' => __DIR__ . '/includes/skins/SkinTemplate.php',
'SlideshowImageGallery' => __DIR__ . '/includes/gallery/SlideshowImageGallery.php',
'SlotDiffRenderer' => __DIR__ . '/includes/diff/SlotDiffRenderer.php',
'SpecialActiveUsers' => __DIR__ . '/includes/specials/SpecialActiveusers.php',
'SpecialAllMessages' => __DIR__ . '/includes/specials/SpecialAllMessages.php',
'SpecialAllMyUploads' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
@ -1443,9 +1380,10 @@ $wgAutoloadLocalClasses = [
'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
'SpecialPageAction' => __DIR__ . '/includes/actions/SpecialPageAction.php',
'SpecialPageData' => __DIR__ . '/includes/specials/SpecialPageData.php',
'SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory.php',
'SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory_deprecated.php',
'SpecialPageLanguage' => __DIR__ . '/includes/specials/SpecialPageLanguage.php',
'SpecialPagesWithProp' => __DIR__ . '/includes/specials/SpecialPagesWithProp.php',
'SpecialPasswordPolicies' => __DIR__ . '/includes/specials/SpecialPasswordPolicies.php',
'SpecialPasswordReset' => __DIR__ . '/includes/specials/SpecialPasswordReset.php',
'SpecialPermanentLink' => __DIR__ . '/includes/specials/SpecialPermanentLink.php',
'SpecialPreferences' => __DIR__ . '/includes/specials/SpecialPreferences.php',
@ -1481,7 +1419,6 @@ $wgAutoloadLocalClasses = [
'SpecialWatchlist' => __DIR__ . '/includes/specials/SpecialWatchlist.php',
'SpecialWhatLinksHere' => __DIR__ . '/includes/specials/SpecialWhatlinkshere.php',
'SqlBagOStuff' => __DIR__ . '/includes/objectcache/SqlBagOStuff.php',
'SqlDataUpdate' => __DIR__ . '/includes/deferred/SqlDataUpdate.php',
'SqlSearchResultSet' => __DIR__ . '/includes/search/SqlSearchResultSet.php',
'Sqlite' => __DIR__ . '/maintenance/sqlite.inc',
'SqliteInstaller' => __DIR__ . '/includes/installer/SqliteInstaller.php',
@ -1505,7 +1442,7 @@ $wgAutoloadLocalClasses = [
'StubUserLang' => __DIR__ . '/includes/StubObject.php',
'SubmitAction' => __DIR__ . '/includes/actions/SubmitAction.php',
'SubpageImportTitleFactory' => __DIR__ . '/includes/title/SubpageImportTitleFactory.php',
'SvgHandler' => __DIR__ . '/includes/media/SVG.php',
'SvgHandler' => __DIR__ . '/includes/media/SvgHandler.php',
'SwiftFileBackend' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileBackendDirList' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileBackendFileList' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
@ -1521,17 +1458,17 @@ $wgAutoloadLocalClasses = [
'TempFileRepo' => __DIR__ . '/includes/filerepo/TempFileRepo.php',
'TemplateParser' => __DIR__ . '/includes/TemplateParser.php',
'TemplatesOnThisPageFormatter' => __DIR__ . '/includes/TemplatesOnThisPageFormatter.php',
'TestFileOpPerformance' => __DIR__ . '/maintenance/fileOpPerfTest.php',
'TextContent' => __DIR__ . '/includes/content/TextContent.php',
'TextContentHandler' => __DIR__ . '/includes/content/TextContentHandler.php',
'TextPassDumper' => __DIR__ . '/maintenance/dumpTextPass.php',
'TextSlotDiffRenderer' => __DIR__ . '/includes/diff/TextSlotDiffRenderer.php',
'TextStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'TgConverter' => __DIR__ . '/languages/classes/LanguageTg.php',
'ThrottledError' => __DIR__ . '/includes/exception/ThrottledError.php',
'ThumbnailImage' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'ThumbnailRenderJob' => __DIR__ . '/includes/jobqueue/jobs/ThumbnailRenderJob.php',
'TidyUpBug37714' => __DIR__ . '/maintenance/tidyUpBug37714.php',
'TiffHandler' => __DIR__ . '/includes/media/Tiff.php',
'TidyUpT39714' => __DIR__ . '/maintenance/tidyUpT39714.php',
'TiffHandler' => __DIR__ . '/includes/media/TiffHandler.php',
'Timing' => __DIR__ . '/includes/libs/Timing.php',
'Title' => __DIR__ . '/includes/Title.php',
'TitleArray' => __DIR__ . '/includes/TitleArray.php',
@ -1579,7 +1516,6 @@ $wgAutoloadLocalClasses = [
'UploadChunkFileException' => __DIR__ . '/includes/upload/UploadFromChunks.php',
'UploadChunkVerificationException' => __DIR__ . '/includes/upload/UploadFromChunks.php',
'UploadChunkZeroLengthFileException' => __DIR__ . '/includes/upload/UploadFromChunks.php',
'UploadDumper' => __DIR__ . '/maintenance/dumpUploads.php',
'UploadForm' => __DIR__ . '/includes/specials/forms/UploadForm.php',
'UploadFromChunks' => __DIR__ . '/includes/upload/UploadFromChunks.php',
'UploadFromFile' => __DIR__ . '/includes/upload/UploadFromFile.php',
@ -1591,7 +1527,6 @@ $wgAutoloadLocalClasses = [
'UploadSourceField' => __DIR__ . '/includes/specials/formfields/UploadSourceField.php',
'UploadStash' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashBadPathException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashCleanup' => __DIR__ . '/maintenance/cleanupUploadStash.php',
'UploadStashException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashFile' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashFileException' => __DIR__ . '/includes/upload/UploadStash.php',
@ -1601,7 +1536,6 @@ $wgAutoloadLocalClasses = [
'UploadStashWrongOwnerException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashZeroLengthFileException' => __DIR__ . '/includes/upload/UploadStash.php',
'UppercaseCollation' => __DIR__ . '/includes/collation/UppercaseCollation.php',
'UsageException' => __DIR__ . '/includes/api/ApiUsageException.php',
'User' => __DIR__ . '/includes/user/User.php',
'UserArray' => __DIR__ . '/includes/user/UserArray.php',
'UserArrayFromResult' => __DIR__ . '/includes/user/UserArrayFromResult.php',
@ -1641,7 +1575,6 @@ $wgAutoloadLocalClasses = [
'WatchedItemQueryServiceExtension' => __DIR__ . '/includes/watcheditem/WatchedItemQueryServiceExtension.php',
'WatchedItemStore' => __DIR__ . '/includes/watcheditem/WatchedItemStore.php',
'WatchedItemStoreInterface' => __DIR__ . '/includes/watcheditem/WatchedItemStoreInterface.php',
'WatchlistCleanup' => __DIR__ . '/maintenance/cleanupWatchlist.php',
'WebInstaller' => __DIR__ . '/includes/installer/WebInstaller.php',
'WebInstallerComplete' => __DIR__ . '/includes/installer/WebInstallerComplete.php',
'WebInstallerCopying' => __DIR__ . '/includes/installer/WebInstallerCopying.php',
@ -1661,7 +1594,7 @@ $wgAutoloadLocalClasses = [
'WebInstallerUpgrade' => __DIR__ . '/includes/installer/WebInstallerUpgrade.php',
'WebInstallerUpgradeDoc' => __DIR__ . '/includes/installer/WebInstallerUpgradeDoc.php',
'WebInstallerWelcome' => __DIR__ . '/includes/installer/WebInstallerWelcome.php',
'WebPHandler' => __DIR__ . '/includes/media/WebP.php',
'WebPHandler' => __DIR__ . '/includes/media/WebPHandler.php',
'WebRequest' => __DIR__ . '/includes/WebRequest.php',
'WebRequestUpload' => __DIR__ . '/includes/WebRequestUpload.php',
'WebResponse' => __DIR__ . '/includes/WebResponse.php',
@ -1736,6 +1669,7 @@ $wgAutoloadLocalClasses = [
'Wikimedia\\Rdbms\\SessionConsistentConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php',
'Wikimedia\\Rdbms\\Subquery' => __DIR__ . '/includes/libs/rdbms/encasing/Subquery.php',
'Wikimedia\\Rdbms\\TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php',
'Wikimedia\\StaticArrayWriter' => __DIR__ . '/includes/libs/StaticArrayWriter.php',
'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php',
'WikitextContentHandler' => __DIR__ . '/includes/content/WikitextContentHandler.php',
'WikitextLogFormatter' => __DIR__ . '/includes/logging/WikitextLogFormatter.php',
@ -1745,9 +1679,9 @@ $wgAutoloadLocalClasses = [
'WrapOldPasswords' => __DIR__ . '/maintenance/wrapOldPasswords.php',
'XCFHandler' => __DIR__ . '/includes/media/XCF.php',
'XMLRCFeedFormatter' => __DIR__ . '/includes/rcfeed/XMLRCFeedFormatter.php',
'XMPInfo' => __DIR__ . '/includes/libs/xmp/XMPInfo.php',
'XMPReader' => __DIR__ . '/includes/libs/xmp/XMP.php',
'XMPValidate' => __DIR__ . '/includes/libs/xmp/XMPValidate.php',
'XMPInfo' => __DIR__ . '/includes/compat/XMPReader.php',
'XMPReader' => __DIR__ . '/includes/compat/XMPReader.php',
'XMPValidate' => __DIR__ . '/includes/compat/XMPReader.php',
'Xhprof' => __DIR__ . '/includes/libs/Xhprof.php',
'XhprofData' => __DIR__ . '/includes/libs/XhprofData.php',
'Xml' => __DIR__ . '/includes/Xml.php',

View File

@ -1,6 +1,7 @@
{
"name": "mediawiki/core",
"description": "Free software wiki application developed by the Wikimedia Foundation and others",
"type": "mediawiki-core",
"keywords": ["mediawiki", "wiki"],
"homepage": "https://www.mediawiki.org/",
"authors": [
@ -19,59 +20,63 @@
"composer/semver": "1.4.2",
"cssjanus/cssjanus": "1.2.0",
"ext-ctype": "*",
"ext-fileinfo": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"liuggio/statsd-php-client": "1.0.18",
"oojs/oojs-ui": "v0.26.4",
"oyejorge/less.php": "1.7.0.14",
"oojs/oojs-ui": "0.29.2",
"pear/mail": "1.4.1",
"pear/mail_mime": "1.10.2",
"pear/mail_mime-decode": "1.5.5.2",
"pear/net_smtp": "1.8.0",
"php": ">=5.6.99",
"psr/log": "1.0.2",
"wikimedia/assert": "0.2.2",
"wikimedia/at-ease": "1.2.0",
"wikimedia/base-convert": "1.0.1",
"wikimedia/base-convert": "2.0.0",
"wikimedia/cdb": "1.4.1",
"wikimedia/cldr-plural-rule-parser": "1.0.0",
"wikimedia/composer-merge-plugin": "1.4.1",
"wikimedia/html-formatter": "1.0.2",
"wikimedia/ip-set": "1.2.0",
"wikimedia/ip-set": "1.3.0",
"wikimedia/less.php": "1.8.0",
"wikimedia/object-factory": "1.0.0",
"wikimedia/php-session-serializer": "1.0.6",
"wikimedia/purtle": "1.0.7",
"wikimedia/relpath": "2.1.1",
"wikimedia/remex-html": "1.0.3",
"wikimedia/remex-html": "2.0.1",
"wikimedia/running-stat": "1.2.1",
"wikimedia/scoped-callback": "1.0.0",
"wikimedia/scoped-callback": "2.0.0",
"wikimedia/utfnormal": "2.0.0",
"wikimedia/timestamp": "1.0.0",
"wikimedia/timestamp": "2.2.0",
"wikimedia/wait-condition-loop": "1.0.1",
"wikimedia/wrappedstring": "2.3.0",
"wikimedia/wrappedstring": "3.0.1",
"wikimedia/xmp-reader": "0.6.0",
"zordius/lightncandy": "0.23"
},
"require-dev": {
"composer/spdx-licenses": "1.3.0",
"cache/integration-tests": "0.16.0",
"composer/spdx-licenses": "1.4.0",
"giorgiosironi/eris": "^0.10.0",
"hamcrest/hamcrest-php": "^2.0",
"jakub-onderka/php-parallel-lint": "0.9.2",
"jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a",
"jetbrains/phpstorm-stubs": "dev-master#38ff1a581b297f7901e961b8c923862ea80c3b96",
"justinrainbow/json-schema": "~5.2",
"mediawiki/mediawiki-codesniffer": "18.0.0",
"mediawiki/mediawiki-codesniffer": "22.0.0",
"monolog/monolog": "~1.22.1",
"nikic/php-parser": "3.1.3",
"seld/jsonlint": "1.7.1",
"nmred/kafka-php": "0.1.5",
"phpunit/phpunit": "4.8.36 || ^6.5",
"psy/psysh": "0.8.11",
"psy/psysh": "0.9.6",
"wikimedia/avro": "1.8.0",
"wikimedia/testing-access-wrapper": "~1.0",
"wmde/hamcrest-html-matchers": "^0.1.0"
},
"suggest": {
"ext-apc": "Local data and opcode cache",
"ext-apcu": "Local data cache for greatly improved performance",
"ext-curl": "Improved http communication abilities",
"ext-fileinfo": "Improved mime magic detection",
"ext-intl": "ICU integration",
"ext-wikidiff2": "Diff accelerator",
"monolog/monolog": "Flexible debug logging system",
@ -82,10 +87,7 @@
"psr-0": {
"ComposerHookHandler": "includes/composer",
"ComposerVendorHtaccessCreator": "includes/composer"
},
"files": [
"includes/compat/Timestamp.php"
]
}
},
"autoload-dev": {
"files": [

View File

@ -71,7 +71,7 @@ want to write code destined for Wikipedia.
It's often the case that the best algorithm to use for a given task
depends on whether or not replication is in use. Due to our unabashed
Wikipedia-centrism, we often just use the replication-friendly version,
but if you like, you can use wfGetLB()->getServerCount() > 1 to
but if you like, you can use LoadBalancer::getServerCount() > 1 to
check to see if replication is in use.
=== Lag ===
@ -107,7 +107,7 @@ in the session, and then at the start of each request, waiting for the
slave to catch up to that position before doing any reads from it. If
this wait times out, reads are allowed anyway, but the request is
considered to be in "lagged slave mode". Lagged slave mode can be
checked by calling wfGetLB()->getLaggedSlaveMode(). The only
checked by calling LoadBalancer::getLaggedReplicaMode(). The only
practical consequence at present is a warning displayed in the page
footer.

View File

@ -1,106 +0,0 @@
design.txt
This is a brief overview of the new design.
More thorough and up-to-date information is available on the documentation
wiki at https://www.mediawiki.org/
Primary classes:
User
Encapsulates the state of the user viewing/using the site. Can be queried
for things like the user's settings, name, etc. Handles the details of
getting and saving to the "user" table of the database, and dealing with
sessions and cookies.
OutputPage
Encapsulates the entire HTML page that will be sent in response to any
server request. It is used by calling its functions to add text, headers,
etc., in any order, and then calling output() to send it all. It could be
easily changed to send incrementally if that becomes useful, but I prefer
the flexibility. This should also do the output encoding. The system
allocates a global one in $wgOut.
Title
Represents the title of an article, and does all the work of translating
among various forms such as plain text, URL, database key, etc. For
convenience, and for historical reasons, it also represents a few features
of articles that don't involve their text, such as access rights.
See also title.txt.
Article
Encapsulates access to the "page" table of the database. The object
represents a an article, and maintains state such as text (in Wikitext
format), flags, etc.
Revision
Encapsulates individual page revision data and access to the
revision/text/blobs storage system. Higher-level code should never touch
text storage directly; this class mediates it.
Skin
Encapsulates a "look and feel" for the wiki. All of the functions that
render HTML, and make choices about how to render it, are here, and are
called from various other places when needed (most notably,
OutputPage::addWikiText()). The StandardSkin object is a complete
implementation, and is meant to be subclassed with other skins that may
override some of its functions. The User object contains a reference to a
skin (according to that user's preference), and so rather than having a
global skin object we just rely on the global User and get the skin with
$wgUser->getSkin().
See also skin.txt.
Language
Represents the language used for incidental text, and also has some
character encoding functions and other locale stuff. The current user
interface language is instantiated as $wgLang, and the local content
language as $wgContLang; be sure to use the *correct* language object
depending upon the circumstances.
See also language.txt.
Parser
Class used to transform wikitext to html.
LinkCache
Keeps information on existence of articles. See linkcache.txt.
Naming/coding conventions:
These are meant to be descriptive, not dictatorial; I won't presume to tell
you how to program, I'm just describing the methods I chose to use for myself.
If you do choose to follow these guidelines, it will probably be easier for
you to collaborate with others on the project, but if you want to contribute
without bothering, by all means do so (and don't be surprised if I reformat
your code).
- I have the code indented with tabs to save file size and so that users can
set their tab stops to any depth they like. I use 4-space tab stops, which
work well. I also use K&R brace matching style. I know that's a religious
issue for some, so if you want to use a style that puts opening braces on
the next line, that's OK too, but please don't use a style where closing
braces don't align with either the opening brace on its own line or the
statement that opened the block--that's confusing as hell.
- Certain functions and class members are marked with /* private */, rather
than being marked as such. This is a hold-over from PHP 4, which didn't
support proper visibilities. You should not access things marked in this
manner outside the class/inheritance line as this code is subjected to be
updated in a manner that enforces this at some time in the near future, and
things will break. New code should use the standard method of setting
visibilities as normal.
- Globals are particularly evil in PHP; it sets a lot of them automatically
from cookies, query strings, and such, leading to namespace conflicts; when
a variable name is used in a function, it is silently declared as a new
local masking the global, so you'll get weird error because you forgot the
global declaration; lack of static class member variables means you have to
use globals for them, etc. Evil, evil.
I think I've managed to pare down the number of globals we use to a scant
few dozen or so, and I've prefixed them all with "wg" so you can spot errors
better (odds are, if you see a "wg" variable being used in a function that
doesn't declare it global, that's probably an error).
Other conventions: Top-level functions are wfFuncname(), names of session
variables are wsName, cookies wcName, and form field values wpName ("p" for
"POST").

View File

@ -174,8 +174,6 @@ perhaps configure it to use them (see Configuration section of this document):
"$wgAntivirus = 'clamav';".
* DjVuLibre: Allows processing of DjVu files. To enable this, set
"$wgDjvuDump = 'djvudump'; $wgDjvuRenderer = 'ddjvu'; $wgDjvuTxt = 'djvutxt';".
* HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with
"$wgUseTidy = true;".
* ImageMagick: For resizing images. "$wgUseImageMagick = true;" will enable
it. PHP's GD can also be used, but ImageMagick is preferable.
* HTTP cache such as Varnish or Squid: can provide a drastic speedup and a

View File

@ -27,7 +27,7 @@
<namespace key="2" case="first-letter">User</namespace>
<namespace key="3" case="first-letter">User talk</namespace>
<namespace key="4" case="first-letter">DemoWiki</namespace>
<namespace key="5" case="first-letter">DemoWIki talk</namespace>
<namespace key="5" case="first-letter">DemoWiki talk</namespace>
<namespace key="6" case="first-letter">File</namespace>
<namespace key="7" case="first-letter">File talk</namespace>
<namespace key="8" case="first-letter">MediaWiki</namespace>

View File

@ -55,13 +55,31 @@
},
"requires": {
"type": "object",
"description": "Indicates what versions of MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
"description": "Indicates what versions of PHP, MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
"additionalProperties": false,
"properties": {
"MediaWiki": {
"type": "string",
"description": "Version constraint string against MediaWiki core."
},
"platform": {
"type": "object",
"description": "Indicates version constraints against platform services.",
"additionalProperties": false,
"properties": {
"php": {
"type": "string",
"description": "Version constraint string against PHP."
}
},
"patternProprties": {
"^ext-": {
"type": "string",
"description": "Required PHP extension.",
"const": "*"
}
}
},
"extensions": {
"type": "object",
"description": "Set of version constraint strings against specific extensions."
@ -285,6 +303,9 @@
"class": {
"enum": ["ResourceLoaderImageModule"]
},
"defaultColor": {
"type": "string"
},
"data": {
"type": "string"
},
@ -300,6 +321,9 @@
"selectorWithVariant": {
"type": "string"
},
"useDataURI": {
"type": "boolean"
},
"variants": {
"type": "object"
},
@ -336,10 +360,6 @@
"type": "object",
"description": "ResourceLoader sources to register"
},
"ResourceLoaderLESSVars": {
"type": "object",
"description": "ResourceLoader LESS variables"
},
"ConfigRegistry": {
"type": "object",
"description": "Registry of factory functions to create Config objects"
@ -569,7 +589,13 @@
},
"AutoloadNamespaces": {
"type": "object",
"description": "Mapping of PSR-4 compliant namespace to directory for autoloading"
"description": "Mapping of PSR-4 compliant namespace to directory for autoloading",
"patternProperties": {
"^[A-Za-z0-9\\\\]+\\\\$": {
"type": "string"
}
},
"additionalProperties": false
},
"AutoloadClasses": {
"type": "object"
@ -660,6 +686,13 @@
"type": "string"
}
},
"RawHtmlMessages": {
"type": "array",
"description": "Messages which are rendered as raw HTML",
"items": {
"type": "string"
}
},
"callback": {
"type": [
"array",

View File

@ -56,13 +56,31 @@
},
"requires": {
"type": "object",
"description": "Indicates what versions of MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
"description": "Indicates what versions of PHP, MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
"additionalProperties": false,
"properties": {
"MediaWiki": {
"type": "string",
"description": "Version constraint string against MediaWiki core."
},
"platform": {
"type": "object",
"description": "Indicates version constraints against platform services.",
"additionalProperties": false,
"properties": {
"php": {
"type": "string",
"description": "Version constraint string against PHP."
}
},
"patternProprties": {
"^ext-": {
"type": "string",
"description": "Required PHP extension.",
"const": "*"
}
}
},
"extensions": {
"type": "object",
"description": "Set of version constraint strings against specific extensions."
@ -288,6 +306,9 @@
"class": {
"enum": ["ResourceLoaderImageModule"]
},
"defaultColor": {
"type": "string"
},
"data": {
"type": "string"
},
@ -303,6 +324,9 @@
"selectorWithVariant": {
"type": "string"
},
"useDataURI": {
"type": "boolean"
},
"variants": {
"type": "object"
},
@ -349,10 +373,6 @@
"type": "object",
"description": "ResourceLoader sources to register"
},
"ResourceLoaderLESSVars": {
"type": "object",
"description": "ResourceLoader LESS variables"
},
"ConfigRegistry": {
"type": "object",
"description": "Registry of factory functions to create Config objects"
@ -590,7 +610,13 @@
},
"AutoloadNamespaces": {
"type": "object",
"description": "Mapping of PSR-4 compliant namespace to directory for autoloading"
"description": "Mapping of PSR-4 compliant namespace to directory for autoloading",
"patternProperties": {
"^[A-Za-z0-9\\\\]+\\\\$": {
"type": "string"
}
},
"additionalProperties": false
},
"AutoloadClasses": {
"type": "object"
@ -682,6 +708,13 @@
"type": "string"
}
},
"RawHtmlMessages": {
"type": "array",
"description": "Messages which are rendered as raw HTML",
"items": {
"type": "string"
}
},
"callback": {
"type": [
"array",

View File

@ -40,8 +40,6 @@ documentation for the remaining 114 globals, however some of the most important
ones are listed below. They are typically initialised either in index.php or in
Setup.php.
For a description of the classes, see design.txt.
$wgTitle
Title object created from the request URL.
@ -63,5 +61,5 @@ $wgParser
$wgRequest
WebRequest object, to get request data
$wgMemc, $messageMemc, $parserMemc
$wgMemc, $messageMemc
Object caches

File diff suppressed because it is too large Load Diff

View File

@ -80,18 +80,15 @@ usage evenly), make its entry a subarray:
MediaWiki uses a fork of Ryan T. Dean's pure-PHP memcached client.
It also supports the PECL PHP extension for memcached.
MediaWiki uses three object for object caching:
* $wgMemc, controlled by $wgMainCacheType
* $parserMemc, controlled by $wgParserCacheType
* $messageMemc, controlled by $wgMessageCacheType
If you set CACHE_NONE to one of the three control variable, (default
value for $wgMainCacheType), MediaWiki still create a MemCacheClient,
but requests to it are no-ops and we always fall through to the
database. If the cache daemon can't be contacted, it should also
disable itself fairly smoothly.
MediaWiki uses the ObjectCache class to retrieve instances of
BagOStuff by purpose, controlled by the following variables:
* $wgMainCacheType
* $wgParserCacheType
* $wgMessageCacheType
By default, $wgMemc is used but when it is $parserMemc or $messageMemc
this is mentioned below.
If you set one of these to CACHE_NONE, MediaWiki still creates a
BagOStuff object, but calls it to it are no-ops. If the cache daemon
can't be contacted, it should also disable itself fairly smoothly.
== Keys used ==
@ -134,7 +131,7 @@ Localisation:
cleared by: Language::loadLocalisation()
Message Cache:
stored in: $messageMemc
backend: $wgMessageCacheType
key: $wgDBname:messages, $wgDBname:messages-hash, $wgDBname:messages-status
ex: wikidb:messages, wikidb:messages-hash, wikidb:messages-status
stores: an array where the keys are DB keys and the values are messages
@ -151,7 +148,8 @@ Newtalk:
expiry: 30 minutes
Parser Cache:
stored in: $parserMemc
access: ParserCache
backend: $wgParserCacheType
key: $wgDBname:pcache:idhash:$pageid-$renderkey!$hash
$pageid: id of the page
$renderkey: 1 if action=render, 0 otherwise
@ -205,7 +203,7 @@ Sessions:
cleared by: session_destroy()
Sidebar:
stored in: $parserMemc
access: WANObjectCache
controlled by: $wgEnableSidebarCache
key: $wgDBname:sidebar
ex: wikidb:sidebar
@ -221,7 +219,7 @@ Special:Allpages:
cleared by: nothing
Special:Recentchanges (feed):
stored in: $messageMemc
backend: $wgMessageCacheType
key: $wgDBname:rcfeed:$format:$limit:$hideminor:$target and
rcfeed:$format:timestamp
ex: wikidb:rcfeed:rss:50:: and rcfeed:rss:timestamp

191
docs/pageupdater.txt Normal file
View File

@ -0,0 +1,191 @@
This document provides an overview of the usage of PageUpdater and DerivedPageDataUpdater.
== PageUpdater ==
PageUpdater is the canonical way to create page revisions, that is, to perform edits.
PageUpdater is a stateful, handle-like object that allows new revisions to be created
on a given wiki page using the saveRevision() method. PageUpdater provides setters for
defining the new revision's content as well as meta-data such as change tags. saveRevision()
stores the new revision's primary content and metadata, and triggers the necessary
updates to derived secondary data and cached artifacts e.g. in the ParserCache and the
CDN layer, using a DerivedPageDataUpdater.
PageUpdater instances follow the below life cycle, defined by a number of
methods:
+----------------------------+
| |
| new |
| |
+------|--------------|------+
| |
grabParentRevision()-| |
or hasEditConflict()-| |
| |
+--------v-------+ |
| | |
| parent known | |
| | |
Enables---------------+--------|-------+ |
safe operations based on | |-saveRevision()
the parent revision, e.g. | |
section replacement or | |
edit conflict resolution. | |
| |
saveRevision()-| |
| |
+------v--------------v------+
| |
| creation committed |
| |
Enables-----------------+----------------------------+
wasSuccess()
isUnchanged()
isNew()
getState()
getNewRevision()
etc.
The stateful nature of PageUpdater allows it to be used to safely perform
transformations that depend on the new revision's parent revision, such as replacing
sections or applying 3-way conflict resolution, while protecting against race
conditions using a compare-and-swap (CAS) mechanism: after calling code used the
grabParentRevision() method to access the edit's logical parent, PageUpdater
remembers that revision, and ensure that that revision is still the page's current
revision when performing the atomic database update for the revision's primary
meta-data when saveRevision() is called. If another revision was created concurrently,
saveRevision() will fail, indicating the problem with the "edit-conflict" code in the status
object.
Typical usage for programmatic revision creation (with $page being a WikiPage as of 1.32, to be
replaced by a repository service later):
$updater = $page->newPageUpdater( $user );
$updater->setContent( SlotRecord::MAIN, $content );
$updater->setRcPatrolStatus( RecentChange::PRC_PATROLLED );
$newRev = $updater->saveRevision( $comment );
Usage with content depending on the parent revision
$updater = $page->newPageUpdater( $user );
$parent = $updater->grabParentRevision();
$content = $parent->getContent( SlotRecord::MAIN )->replaceSection( $section, $sectionContent );
$updater->setContent( SlotRecord::MAIN, $content );
$newRev = $updater->saveRevision( $comment, EDIT_UPDATE );
In both cases, all secondary updates will be triggered automatically.
== DerivedPageDataUpdater ==
DerivedPageDataUpdater is a stateful, handle-like object that caches derived data representing
a revision, and can trigger updates of cached copies of that data, e.g. in the links tables,
page_props, the ParserCache, and the CDN layer.
DerivedPageDataUpdater is used by PageUpdater when creating new revisions, but can also
be used independently when performing meta data updates during undeletion, import, or
when puring a page. It's a stepping stone on the way to a more complete refactoring of WikiPage.
NOTE: Avoid direct usage of DerivedPageDataUpdater. In the future, we want to define interfaces
for the different use cases of DerivedPageDataUpdater, particularly providing access to post-PST
content and ParserOutput to callbacks during revision creation, which currently use
WikiPage::prepareContentForEdit, and allowing updates to be triggered on purge, import, and
undeletion, which currently use WikiPage::doEditUpdates() and Content::getSecondaryDataUpdates().
The primary reason for DerivedPageDataUpdater to be stateful is internal caching of state
that avoids the re-generation of ParserOutput and re-application of pre-save-
transformations (PST).
DerivedPageDataUpdater instances follow the below life cycle, defined by a number of
methods:
+---------------------------------------------------------------------+
| |
| new |
| |
+---------------|------------------|------------------|---------------+
| | |
grabCurrentRevision()-| | |
| | |
+-----------v----------+ | |
| | |-prepareContent() |
| knows current | | |
| | | |
Enables------------------+-----|-----|----------+ | |
pageExisted() | | | |
wasRedirect() | |-prepareContent() | |-prepareUpdate()
| | | |
| | +-------------v------------+ |
| | | | |
| +----> has content | |
| | | |
Enables------------------------|----------+--------------------------+ |
isChange() | | |
isCreation() |-prepareUpdate() | |
getSlots() | prepareUpdate()-| |
getTouchedSlotRoles() | | |
getCanonicalParserOutput() | +-----------v------------v-----------------+
| | |
+------------------> has revision |
| |
Enables-------------------------------------------+------------------------|-----------------+
updateParserCache() |
runSecondaryDataUpdates() |-doUpdates()
|
+-----------v---------+
| |
| updates done |
| |
+---------------------+
- grabCurrentRevision() returns the logical parent revision of the target revision. It is
guaranteed to always return the same revision for a given DerivedPageDataUpdater instance.
If called before prepareUpdate(), this fixates the logical parent to be the page's current
revision. If called for the first time after prepareUpdate(), it returns the revision
passed as the 'oldrevision' option to prepareUpdate(), or, if that wasn't given, the
parent of $revision parameter passed to prepareUpdate().
- prepareContent() is called before the new revision is created, to apply pre-save-
transformation (PST) and allow subsequent access to the canonical ParserOutput of the
revision. getSlots() and getCanonicalParserOutput() as well as getSecondaryDataUpdates()
may be used after prepareContent() was called. Calling prepareContent() with the same
parameters again has no effect. Calling it again with mismatching paramters, or calling
it after prepareUpdate() was called, triggers a LogicException.
- prepareUpdate() is called after the new revision has been created. This may happen
right after the revision was created, on the same instance on which prepareContent() was
called, or later (possibly much later), on a fresh instance in a different process,
due to deferred or asynchronous updates, or during import, undeletion, purging, etc.
prepareUpdate() is required before a call to doUpdates(), and it also enables calls to
getSlots() and getCanonicalParserOutput() as well as getSecondaryDataUpdates().
Calling prepareUpdate() with the same parameters again has no effect.
Calling it again with mismatching parameters, or calling it with parameters mismatching
the ones prepareContent() was called with, triggers a LogicException.
- getSecondaryDataUpdtes() returns DataUpdates that represent derived data for the revision.
These may be used to update such data, e.g. in ApiPurge, RefreshLinksJob, and the refreshLinks
script.
- doUpdates() triggers the updates defined by getSecondaryDataUpdtes(), and also causes
updates to cached artifacts in the ParserCache, the CDN layer, etc. This is primarily
used by PageUpdater, but also by PageArchive during undeletion, and when importing
revisions from XML. doUpdates() can only be called after prepareUpdate() was used to
initialize the DerivedPageDataUpdater instance for a specific revision. Calling it before
prepareUpdate() is called raises a LogicException.
A DerivedPageDataUpdater instance is intended to be re-used during different stages
of complex update operations that often involve callbacks to extension code via
MediaWiki's hook mechanism, or deferred or even asynchronous execution of Jobs and
DeferredUpdates. Since these mechanisms typically do not provide a way to pass a
DerivedPageDataUpdater directly, WikiPage::getDerivedPageDataUpdater() has to be used to
obtain a DerivedPageDataUpdater for the update currently in progress - re-using the
same DerivedPageDataUpdater if possible avoids re-generation of ParserOutput objects
and other expensively derived artifacts.
This mechanism for re-using a DerivedPageDataUpdater instance without passing it directly
requires a way to ensure that a given DerivedPageDataUpdater instance can actually be used
in the calling code's context. For this purpose, WikiPage::getDerivedPageDataUpdater()
calls the isReusableFor() method on DerivedPageDataUpdater, which ensures that the given
instance is applicable to the given parameters. In other words, isReusableFor() predicts
whether calling prepareContent() or prepareUpdate() with a given set of parameters will
trigger a LogicException. In that case, WikiPage::getDerivedPageDataUpdater() creates a
fresh DerivedPageDataUpdater instance.

View File

@ -130,7 +130,7 @@ MemCachedClient::set_debug($do_debug);
MemCachedClient::forget_dead_hosts();
// When a function returns FALSE, an error code is set.
// This funtion will return the error code.
// This function will return the error code.
// See error_string()
// returns last error code set
MemCachedClient::error()

View File

@ -28,19 +28,9 @@ Primary scripts:
that points to the search engines of the wiki.
profileinfo.php
Allow users to see the profiling information that are stored in the
database.
To save the profiling information in the database (required to use this
script), you have to modify StartProfiler.php to use the Profiler class and
not the stub profiler which is enabled by default.
You will also need to set $wgProfiler['output'] to 'db' in LocalSettings.php
to force the profiler to save the informations in the database and apply the
maintenance/archives/patch-profiling.sql patch to the database.
To enable the profileinfo.php itself, you'll need to set $wgDBadminuser
and $wgDBadminpassword in your LocalSettings.php, as well as $wgEnableProfileInfo
See also https://www.mediawiki.org/wiki/Manual:Profiling .
Simple interface for displaying request profiles that were stored in the
database. For more information, see the documentation in that file, and at
https://www.mediawiki.org/wiki/Manual:Profiling.
thumb.php
Script used to resize images if it is configured to be done when the web

View File

@ -58,7 +58,7 @@ These can also be customised on a per-user basis, by editing
Several custom skins are available as of 2014.
https://www.mediawiki.org/wiki/Category:All_skins
https://www.mediawiki.org/wiki/Special:MyLanguage/Category:All_skins
Installing a skin requires adding its files in a subdirectory under skins/ and
adding an appropriate require_once line to LocalSettings.php, similarly to how

View File

@ -2,7 +2,7 @@
<html lang="en" dir="ltr">
<head>
<link rel="stylesheet" href="../../resources/src/mediawiki.legacy/shared.css">
<link rel="stylesheet" href="../../resources/src/mediawiki/mediawiki.feedlink.css">
<link rel="stylesheet" href="../../resources/src/mediawiki.feedlink/feedlink.css">
</head>
<body style="font-size: small;">

View File

@ -2,8 +2,8 @@
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../../resources/src/mediawiki/mediawiki.diff.styles.css">
<link rel="stylesheet" media="print" href="../../resources/src/mediawiki/mediawiki.diff.styles.print.css">
<link rel="stylesheet" href="../../resources/src/mediawiki.diff.styles/diff.css">
<link rel="stylesheet" media="print" href="../../resources/src/mediawiki.diff.styles/print.css">
</head>
<body>

View File

@ -1,59 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<style>
/** This is just for coloring: */
table { border: 1px solid #CC0; }
td { border: 1px solid #CCC; }
table {
width: 100%;
table-layout: fixed;
}
#first {
width: 300px;
}
</style>
</head>
<body>
<p>
This play with table-layout:fixed; and applying the width to colgroup or col element. Firefox only recongize the width if it is applied on col element!</p>
<p>
On a perfect browser, both tables should look the same</p>
<dl>
<dt>colgroup</dt>
<dd>300 px width is applied to the first colgroup element</dd>
</dl>
<div style="width: 400px;">
<table>
<colgroup id="first" /></colgroup>
<colgroup id="second"/></colgroup>
<colgroup id="third" /></colgroup>
<tr>
<td>Very long?</td>
<td>#</td>
<td>$</td>
</tr>
</table>
</div>
<dl>
<dt>col</dt>
<dd>Each colgroup has an additional col element. The first col element is applied the 300 px width</dd>
</dl>
<div style="width: 400px;">
<table>
<colgroup><col id="first" /></colgroup>
<colgroup><col id="second"/></colgroup>
<colgroup><col id="third" /></colgroup>
<tr>
<td>Very long?</td>
<td>#</td>
<td>$</td>
</tr>
</table>
</div>

@ -1 +1 @@
Subproject commit 9fc6235372d4bfe385324f007939469fc90d481d
Subproject commit b61bd351347a0d9e4b9975909e0da7baf77388e4

@ -1 +1 @@
Subproject commit 008326926a2f8858f72f621963831d19dd8a0464
Subproject commit 2432d8099cbe673f37ce05aad0b756320f1cbe2e

View File

@ -1 +1 @@
The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).

View File

@ -1,48 +0,0 @@
<?php
/**
* CategoryTree extension, an AJAX based gadget
* to display the category structure of a wiki
*
* @file
* @ingroup Extensions
* @author Daniel Kinzler, brightbyte.de
* @copyright © 2006-2008 Daniel Kinzler and others
* @license GPL-2.0-or-later
*/
if ( function_exists( 'wfLoadExtension' ) ) {
wfLoadExtension( 'CategoryTree' );
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['CategoryTree'] = __DIR__ . '/i18n';
/* wfWarn(
'Deprecated PHP entry point used for CategoryTree extension. ' .
'Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
); */
return true;
} else {
die( 'This version of the CategoryTree extension requires MediaWiki 1.25+' );
}
// To maintain compatibility with configuration we currently keep
// the defines, but there are deprecated, and we'll be removed in
// a future MediaWiki release, in addition to this file.
/**
* Constants for use with the mode,
* defining what should be shown in the tree
*/
define( 'CT_MODE_CATEGORIES', 0 );
define( 'CT_MODE_PAGES', 10 );
define( 'CT_MODE_ALL', 20 );
define( 'CT_MODE_PARENTS', 100 );
/**
* Constants for use with the hideprefix option,
* defining when the namespace prefix should be hidden
*/
define( 'CT_HIDEPREFIX_NEVER', 0 );
define( 'CT_HIDEPREFIX_ALWAYS', 10 );
define( 'CT_HIDEPREFIX_CATEGORIES', 20 );
define( 'CT_HIDEPREFIX_AUTO', 30 );

View File

@ -2,9 +2,9 @@
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"jakub-onderka/php-console-highlighter": "0.3.2",
"mediawiki/mediawiki-codesniffer": "18.0.0",
"mediawiki/mediawiki-codesniffer": "22.0.0",
"mediawiki/minus-x": "0.3.1",
"mediawiki/mediawiki-phan-config": "0.2.0"
"mediawiki/mediawiki-phan-config": "0.3.0"
},
"scripts": {
"fix": [
@ -16,5 +16,8 @@
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "1.5.0"
}
}

View File

@ -0,0 +1,11 @@
{
"@metadata": {
"authors": [
"Anok kutai jang"
]
},
"categorytree-expand": "kas lebar",
"categorytree-member-counts": "punya{{PLURAL:$1|$1 subkategori}}, {{PLURAL:$2|$2 kintal}}, deng {{PLURAL:$3|$3 berkas}}",
"categorytree-num-categories": "$1 K",
"categorytree-num-pages": "$1 K"
}

View File

@ -0,0 +1,14 @@
{
"@metadata": {
"authors": [
"Vickylin77s"
]
},
"categorytree-portlet": " pisakilac",
"categorytree-mode-all": "O po:long no felih",
"categorytree-expand": " misatapang",
"categorytree-member-counts": "Maparo I laloma no $1 ko …I kalaenoay a silsil 、$2 …ay ko felih ato $3 ko tang^an",
"categorytree-num-categories": "$1 kasakilac",
"categorytree-num-pages": "$1 o felih",
"categorytree-num-files": "$1 tang^an"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Reda Benkhadra"
]
},
"categorytree-expand": "وسع"
}

View File

@ -4,7 +4,8 @@
"Тест",
"Чаховіч Уладзіслаў",
"Mikalai Udodau",
"Mechanizatar"
"Mechanizatar",
"Artsiom91"
]
},
"categorytree": "Дрэва катэгорый",
@ -36,7 +37,7 @@
"categorytree-error": "Памылка загрузкі даных.",
"categorytree-retry": "Калі ласка, пачакайце і паспрабуйце яшчэ раз.",
"apihelp-categorytree-description": "Унутраны модуль пашырэння CategoryTree.",
"apihelp-categorytree-param-category": "Назва ў прасторы імёнаў катэгорыяў. Прэфікс, калі будзе пададзены, будзе ігнаравацца.",
"apihelp-categorytree-param-options": "Налады для канструктару CategoryTree як JSON-аб’екту. Параметр глыбіні (<var>depth</var>) па змоўчанні роўны <kbd>1</kbd>.",
"apihelp-categorytree-param-category": "Назва ў прасторы назваў катэгорый. Прэфікс, калі будзе пададзены, будзе ігнаравацца.",
"apihelp-categorytree-param-options": "Настройкі для канструктара CategoryTree як JSON-аб’екта. Параметр глыбіні (<var>depth</var>) па змоўчванні роўны <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "Опцыі павінны быць дапушчальнымі JSON-аб’ектамі."
}

View File

@ -8,7 +8,8 @@
"Aftab1995",
"Aftabuzzaman",
"আজিজ",
"Bodhisattwa"
"Bodhisattwa",
"আফতাবুজ্জামান"
]
},
"categorytree": "বিষয়শ্রেণীবৃক্ষ",

View File

@ -0,0 +1,12 @@
{
"@metadata": {
"authors": [
"Simartampua"
]
},
"categorytree-expand": "Pabolak",
"categorytree-member-counts": "Marisi {{PLURAL:$1|1 subcategory|$1 subcategories}}, {{PLURAL:$2|1 page|$2 alaman}}, dot {{PLURAL:$3|1 file|$3 berkas}}",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 P"
}

View File

@ -0,0 +1,12 @@
{
"@metadata": {
"authors": [
"Chocoj"
]
},
"categorytree-expand": "tinimirisäx",
"categorytree-member-counts": "Ruk'wan {{K'IYILAL:$1|1 ral na'oj samaj|$1 ral na'oj samaj}}, {{K'IYILAL:$2|1 ruxaq samaj|$2 ruxaq samaj}}, chuqa' {{K'IYILAL:$3|1 yakb'äl samaj|$3 yakb'äl samaj}}",
"categorytree-num-categories": "$1 R",
"categorytree-num-pages": "$1 R",
"categorytree-num-files": "$1 R"
}

View File

@ -2,17 +2,22 @@
"@metadata": {
"authors": [
"GnuDoyng",
"Yejianfei"
"Yejianfei",
"Davidzdh"
]
},
"categorytree": "類別樹",
"categorytree-header": "Sṳ̆-ĭk lôi-biék mng-chĭng, káng ĭ gì chéu-hìng giék-gáiu. Chiāng cé̤ṳ-é, ciā hiĕk-miêng sāi-ê̤ṳng siŏh cṳ̄ng gŏ̤-gék JavaScript gé-sŭk, giéu lō̤ AJAX. Nṳ̄ nâ sāi-ê̤ṳng guó-sì gì báuk-lāng-ké, hĕ̤k-ciā cĕk lâi JavaScript, cêu mâ̤ ciáng-siòng gĕ̤ng-cáuk.",
"categorytree-header": "Sṳ̆-ĭk lôi-biék mìng-chĭng, káng ĭ gì chéu-hìng giék-gáiu. Chiāng cé̤ṳ-é, ciā hiĕk-miêng sāi-ê̤ṳng siŏh cṳ̄ng gŏ̤-gék JavaScript gé-sŭk, giéu lō̤ AJAX. Nṳ̄ nâ sāi-ê̤ṳng guó-sì gì báuk-lāng-ké, hĕ̤k-ciā cĕk lâi JavaScript, cêu mâ̤ ciáng-siòng gĕ̤ng-cáuk.",
"categorytree-category": "分類:",
"categorytree-go": "顯示樹",
"categorytree-mode-categories": "囇有類別",
"categorytree-mode-pages": "無文件其頁面",
"categorytree-mode-all": "全部頁面",
"categorytree-num-pages": "$1頁",
"categorytree-expand": "Kŭi",
"categorytree-member-counts": "Bău-guák $1 bĭh cṳ̄-hŭng-lôi,$2 bĭh hiĕk-miêng, $3 bĭh ùng-giông",
"categorytree-num-categories": "$1 lôi",
"categorytree-num-pages": "$1 hiĕk",
"categorytree-num-files": "$1 dáung",
"categorytree-loading": "載入…",
"categorytree-no-subcategories": "無子類別",
"categorytree-no-pages": "無頁面或者子類別",

View File

@ -1,8 +1,10 @@
{
"@metadata": {
"authors": [
"ⲁϩⲙⲉⲧ"
"ⲁϩⲙⲉⲧ",
"Ⲁϩⲙⲉⲧ"
]
},
"categorytree-expand": "ⲟⲩⲱϣⲥ",
"categorytree-num-pages": "$1 `ⲛⲥ"
}

View File

@ -5,7 +5,8 @@
"Li-sung",
"Mormegil",
"LordMsz",
"Matěj Suchánek"
"Matěj Suchánek",
"Ilimanaq29"
]
},
"categorytree": "Strom kategorií",
@ -36,5 +37,6 @@
"categorytree-not-found": "Kategorie <em>$1</em> nenalezena",
"categorytree-error": "Chyba při načítání dat.",
"categorytree-retry": "Počkejte chvilku a zkuste to znova.",
"apihelp-categorytree-description": "Interní modul pro rozšíření CategoryTree."
"apihelp-categorytree-description": "Interní modul pro rozšíření CategoryTree.",
"apierror-categorytree-invalidjson": "Nastavení musí být platný objekt JSON."
}

View File

@ -8,6 +8,7 @@
"categorytree-portlet": "катигорїѩ",
"categorytree-category": "катигорїꙗ :",
"categorytree-mode-all": "вьсѩ страницѧ",
"categorytree-expand": "отврьꙁи",
"categorytree-num-categories": "$1 К҃",
"categorytree-num-pages": "$1 С҃",
"categorytree-num-files": "$1 Д҃"

View File

@ -7,14 +7,15 @@
"Dead3y3",
"Protnet",
"ZaDiak",
"SucreRouge"
"SucreRouge",
"Nikosgranturismogt"
]
},
"categorytree": "Δέντρο κατηγορίας",
"categorytree-portlet": "Κατηγορίες",
"categorytree-legend": "Εμφάνιση δέντρου κατηγορίας",
"categorytree-desc": "Πλοηγηθείτε δυναμικά στη [[Special:CategoryTree|δομή της κατηγορίας]]",
"categorytree-header": "Εισαγάγετε όνομα κατηγορίας για να δείτε τα περιεχόμενά της ως δεντρική δομή.\nΣημειώστε ότι αυτό απαιτεί προηγμένη λειτουργικότητα JavaScript γνωστή ως AJAX.\nΑν έχετε πολύ παλιό περιηγητή, ή αν έχετε απενεργοποιημένο το JavaScript, δεν θα δουλέψει.",
"categorytree-header": "Εισαγάγετε όνομα κατηγορίας για να δείτε τα περιεχόμενά της ως δεντρική δομή. (απαιτεί JavaScript).",
"categorytree-category": "Κατηγορία:",
"categorytree-go": "Εμφάνιση δέντρου",
"categorytree-parents": "Γονείς",
@ -37,5 +38,10 @@
"categorytree-no-pages": "καμία σελίδα ή υποκατηγορία",
"categorytree-not-found": "Η κατηγορία <i>$1</i> δεν βρέθηκε",
"categorytree-error": "Πρόβλημα φόρτωσης δεδομένων.",
"categorytree-retry": "Παρακαλούμε περιμένετε μια στιγμή και προσπαθήστε ξανά."
"categorytree-retry": "Παρακαλούμε περιμένετε μια στιγμή και προσπαθήστε ξανά.",
"apihelp-categorytree-description": "Εσωτερικό δομοστοιχείο για την επέκταση CategoryTree.",
"apihelp-categorytree-summary": "Εσωτερικό δομοστοιχείο για την επέκταση CategoryTree.",
"apihelp-categorytree-param-category": "Τίτλος στον ονοματοχώρο κατηγορίας, το πρόθεμα θα αγνοηθεί εάν δοθεί.",
"apihelp-categorytree-param-options": "Επιλογές για τον κατασκευαστή CategoryTree ως αντικείμενο JSON. Η επιλογή <var>depth</var> είναι προεπιλεγμένη στο <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "Οι επιλογές πρέπει να είναι έγκυρο αντικείμενο JSON."
}

View File

@ -41,5 +41,5 @@
"apihelp-categorytree-summary": "Internal module for the CategoryTree extension.",
"apihelp-categorytree-param-category": "Title in the category namespace, prefix will be ignored if given.",
"apihelp-categorytree-param-options": "Options for the CategoryTree constructor as a JSON object. The <var>depth</var> option defaults to <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "Options must be valid a JSON object."
"apierror-categorytree-invalidjson": "Options must be a valid JSON object."
}

View File

@ -2,7 +2,8 @@
"@metadata": {
"authors": [
"An13sa",
"Theklan"
"Theklan",
"Matěj Suchánek"
]
},
"categorytree": "Kategoria Zuhaitza",
@ -19,7 +20,7 @@
"categorytree-mode-all": "orrialde guztiak",
"categorytree-collapse": "itxi",
"categorytree-expand": "zabaldu",
"categorytree-member-counts": "{{PLURAL:$1|azpikategoria 1|$1 azpikategoria}}, {{PLURAL:$2|orrialde 1|$2 orrialde}} eta {{PLURALK:$3|fitxategi 1|$3 fitxategi}} ditu",
"categorytree-member-counts": "{{PLURAL:$1|azpikategoria 1|$1 azpikategoria}}, {{PLURAL:$2|orrialde 1|$2 orrialde}} eta {{PLURAL:$3|fitxategi 1|$3 fitxategi}} ditu",
"categorytree-num-categories": "$1 K",
"categorytree-num-pages": "$1 O",
"categorytree-num-files": "$1 F",

View File

@ -7,14 +7,15 @@
"Mjbmr",
"ZxxZxxZ",
"Alirezaaa",
"Rtemis"
"Rtemis",
"Fatemi127"
]
},
"categorytree": "درخت رده",
"categorytree-portlet": "رده‌ها",
"categorytree-legend": "نمایش درخت رده",
"categorytree-desc": "ناوبری فعال [[Special:CategoryTree|ساختار رده‌ای]]",
"categorytree-header": "نام رده‌ای را وارد کنید تا محتویات آن به صورت درختی نمایش یابد. (نیازمندم جاوااسکریپت)",
"categorytree-header": "نام رده‌ای را وارد کنید تا محتویات آن به صورت درختی نمایش یابد. (نیازمند جاوااسکریپت)",
"categorytree-category": "رده:",
"categorytree-go": "نمایش درخت",
"categorytree-parents": "والدین",

View File

@ -0,0 +1,11 @@
{
"@metadata": {
"authors": [
"Mybluberet"
]
},
"categorytree-expand": "Gblamɔ mli",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 F"
}

View File

@ -10,7 +10,7 @@
},
"categorytree": "Árbore de categorías",
"categorytree-portlet": "Categorías",
"categorytree-legend": "Mostrar a árbore de categorías",
"categorytree-legend": "Amosar a árbore de categorías",
"categorytree-desc": "Navegación dinámica a través da [[Special:CategoryTree|estrutura de categorías]]",
"categorytree-header": "Introduza o nome dunha categoría para ver o seu contido nunha estrutura de árbore. (Require JavaScript.)",
"categorytree-category": "Categoría:",

View File

@ -35,7 +35,7 @@
"categorytree-nothing-found": "nije pronađena ijedna stavka",
"categorytree-no-subcategories": "nema potkategorija",
"categorytree-no-parent-categories": "nema viših kategorija",
"categorytree-no-pages": "Nema članaka ili podkategorija.",
"categorytree-no-pages": "Nema članaka ili potkategorija.",
"categorytree-not-found": "Kategorija <i>$1</i> nije pronađena",
"categorytree-error": "Problem s učitavanjem podataka.",
"categorytree-retry": "Pričekajte trenutak pa pokušajte opet.",

View File

@ -5,9 +5,9 @@
]
},
"categorytree": "Egbü nke ébéanọr",
"categorytree-portlet": "Ébéanọr",
"categorytree-portlet": "Ụdàkọ",
"categorytree-legend": "Zi egbü nke ébéanọr",
"categorytree-category": "Ébéonọr:",
"categorytree-category": "Ụdàkọ:",
"categorytree-go": "Zí oshíshí",
"categorytree-parents": "Ndi mụrụ",
"categorytree-mode-categories": "Náni ébéanọr",
@ -16,6 +16,6 @@
"categorytree-expand": "Sá àsáá",
"categorytree-load": "mmẹ̀wẹ́òbú",
"categorytree-loading": "ọ byáwálá...",
"categorytree-no-subcategories": "ébéonọr-ime àdíghị",
"categorytree-no-pages": "ihü ma ébéonọr-ímé àdíghị"
"categorytree-no-subcategories": "ụdàkọòkpurù adịghị̀",
"categorytree-no-pages": "ihu mà ụdàkọòkpurù adịghị̀"
}

View File

@ -33,6 +33,7 @@
"categorytree-error": "Parikut ti panagikarga ti linaon.",
"categorytree-retry": "Pangngaasi nga aguray intono madamdama ken ipadas manen.",
"apihelp-categorytree-description": "Akin-uneg a modulo para iti pagpaatiddog ti CategoryTree.",
"apihelp-categorytree-summary": "Akin-uneg a modulo para iti pagpaatiddog ti CategoryTree.",
"apihelp-categorytree-param-category": "Titulo iti nagan ti espasio ti kategoria, saanto a maikaskaso ti pasakbay no maited.",
"apihelp-categorytree-param-options": "Dagiti pagpilian ti konstruktor ti CategoryTree a kas maysa a banag ti JSON. Ti pagpilian ti <var>depth</var> ket kasisigud iti <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "Dagiti pagpilian ket nasken nga umiso a banag ti JSON."

View File

@ -7,25 +7,25 @@
"Adam-Yourist"
]
},
"categorytree": "Категорий га",
"categorytree-portlet": "Категореш",
"categorytree-legend": "Категорий га хьахьокха",
"categorytree-category": "Категори:",
"categorytree-go": "Га хьахьокха",
"categorytree-parents": "Хьалхара категореш",
"categorytree": "ОагӀатий га",
"categorytree-portlet": "ОагӀаташ",
"categorytree-legend": "Хьахьокха оагӀатий га",
"categorytree-category": "ОагӀат:",
"categorytree-go": "Хьахьокха оагӀаташ",
"categorytree-parents": "Ларда оагӀаташ",
"categorytree-mode-label": "Раж:",
"categorytree-mode-categories": "алхха категореш",
"categorytree-mode-categories": "алхха оагӀаташ",
"categorytree-mode-all": "еррига оагIонаш",
"categorytree-expand": "хьадоаржаде",
"categorytree-member-counts": "Укхунах йоалл $1 {{PLURAL:$1|1=кIалоагIат}} а, $2 {{PLURAL:$2|1=оагӀув}} а, $3 {{PLURAL:$3|1=файл}} а",
"categorytree-member-counts": "Укхо чулоац: $1 {{PLURAL:$1|1=кӀалоагӀат}}, $2 {{PLURAL:$2|1=оагӀув}}, $3 {{PLURAL:$3|1=файл}}",
"categorytree-num-categories": "$1 К",
"categorytree-num-pages": "$1 Оа",
"categorytree-num-files": "$1 Ф",
"categorytree-num-empty": "яьсса",
"categorytree-load": "чуяккха",
"categorytree-load": "хьачуяккха",
"categorytree-loading": "доттар...",
"categorytree-nothing-found": "Укх категори чу кIалкатегореш яц.",
"categorytree-no-subcategories": "кIалкатегореш яц",
"categorytree-no-parent-categories": "хьалхара категореш яц",
"categorytree-no-pages": "оагӀонаш а кIалкатегореш а яц"
"categorytree-nothing-found": "Укх оагӀата чу кIалоагӀаташ яц.",
"categorytree-no-subcategories": "кIалоагӀаташ яц",
"categorytree-no-parent-categories": "ларда оагӀаташ яц",
"categorytree-no-pages": "оагӀонаш а яц кIалоагӀаташ а яц"
}

View File

@ -18,6 +18,7 @@
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 P",
"categorytree-num-empty": "vakua",
"categorytree-load": "kargar",
"categorytree-nothing-found": "nulo trovita",
"categorytree-no-subcategories": "nula subkategorii",

View File

@ -0,0 +1,12 @@
{
"@metadata": {
"authors": [
"राम प्रसाद जोशी"
]
},
"categorytree-expand": "घेओ पारिने",
"categorytree-member-counts": "ला {{PLURAL:$1|1 श्रेणी लिजे|$1 श्रेणीहरू लिज्य}}, {{PLURAL:$2|1 पाल लिजे|$2 पालहरू लिज्या}}, तथा {{PLURAL:$3|1 फाइल लिजे|$3 फाइलहरू लिज्य}}",
"categorytree-num-categories": "$1 C (श्रे)",
"categorytree-num-pages": "$1 P (पा)",
"categorytree-num-files": "$1 C (श्रे)"
}

View File

@ -0,0 +1,30 @@
{
"@metadata": {
"authors": [
"Rul1902"
]
},
"categorytree": "ကၞါင့်ထုင်း",
"categorytree-portlet": "ကၞါင့်လ်ုဖး",
"categorytree-category": "ကၞါင့်:",
"categorytree-go": "မ်ုၮဲဆ်ုထုင်း",
"categorytree-parents": "မေဝ်ႋဖါလ်ုဖး",
"categorytree-mode-label": "မုဂ်:",
"categorytree-mode-categories": "ကၞါင့်လ်ုဖးလှ်",
"categorytree-mode-pages": "ဖိုင်ႋလ်ုမွာဲၜး လိက်မေံၜၠာ်လုက်ဆိင့်",
"categorytree-mode-all": "လိက်မေံၜၠာ်လုက်ဆိင့်",
"categorytree-collapse": "မ်ုပေဝ်ႋက္ဍာ",
"categorytree-expand": "လဝ်လဲာ",
"categorytree-member-counts": "{{PLURAL:$1|အ်ုဆုဂ်ကါင်ဖါ ၁ ၮါင်း|$1 အ်ုဆုဂ်ကါင်ဖါလ်ုဖး}}၊ {{PLURAL:$2|လိက်မေံသး ၁ ၮါင်း| လိက်မေံသး $2 ၮါင်း}}၊ လ်ု {{PLURAL:$3|ဖိုင်ႋ ၁ ၮါင်း| ဖိုင်ႋ $3 ၮါင်း }} အွးလင်ထဆေဝ်ႋ",
"categorytree-num-categories": "$1 ကဏ္ဍ",
"categorytree-num-pages": "$1 လိက်မေံသး",
"categorytree-num-files": "$1 ဖိုင်",
"categorytree-num-empty": "ပၠဝ်ပြေ",
"categorytree-load": "ဆောဝ်ႋ",
"categorytree-loading": "ဆ်ုကျုဂ်ထုင်းထာင်",
"categorytree-nothing-found": "ဍးၮင်ႋမိင်ၜး",
"categorytree-no-subcategories": "ကၞါင့်ကါင်ဖါလ်ုအှ်ၜး",
"categorytree-no-parent-categories": "မေဝ်ႋဖါကၞါင့်လ်ုအှ်ၜး",
"categorytree-no-pages": "လိက်မေံၜၠာ်လ်ု ကၞါင့်ကါင်ဖါလ်ုဖးသယ် လ်ုအှ်ၮင်ႋမိင်ၜး",
"categorytree-not-found": "ကၞါင့် <i>$1</i> လ်ုဍးၜး"
}

View File

@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
"Purodha"
"Purodha",
"Als-Holder"
]
},
"categorytree": "Saachjroppe als Boum",
@ -18,7 +19,7 @@
"categorytree-mode-all": "alles: nomahl Sigge, Saachjroppe, un Mehdije",
"categorytree-collapse": "zosammefallde",
"categorytree-expand": "opfallde",
"categorytree-empty-bullet": "►<!-- https://phabricator.wikimedia.org/T141238 -->",
"categorytree-empty-bullet": "►",
"categorytree-member-counts": "do dren {{PLURAL:$1|{{PLURAL:$4|sin|es|es}} ein Ungerjrupp|sin $1 Ungerjruppe|es kein Ungerjrupp}}, {{PLURAL:$2|ein Sigg|$2 Sigge|kein Sigg}}, un {{PLURAL:$3|ein Datei|$3 Dateie|kein Dateie}}, zosamme {{PLURAL:$4|ein Saach|$4 Saache|och nix}}",
"categorytree-num-categories": "$1&nbsp;J",
"categorytree-num-pages": "$1&nbsp;S",

View File

@ -18,6 +18,7 @@
"categorytree-mode-all": "hemû rûpel",
"categorytree-collapse": "bigre",
"categorytree-expand": "veke",
"categorytree-member-counts": "{{PLURAL:$1|1 binkategorî|$1 binkategoriyan}}, {{PLURAL:$2|1 rûpek|$2 rûpelan}} û {{PLURAL:$3|1 dosye|$3 dosyeyan}} dihewîne.",
"categorytree-num-categories": "$1 K",
"categorytree-num-pages": "$1 R",
"categorytree-num-files": "$1 D",

View File

@ -0,0 +1,14 @@
{
"@metadata": {
"authors": [
"Peter57770",
"R12ntech"
]
},
"categorytree-category": "Očháže:",
"categorytree-expand": "Yutȟáŋka yo/ye",
"categorytree-member-counts": "{{PLURAL:$1|1 subcategory|$1 subcategories}}, {{PLURAL:$2|1 page|$2 pages}}, na {{PLURAL:$3|1 file|$3 files}} yukȟé",
"categorytree-num-categories": "$1 O",
"categorytree-num-pages": "$1 Oy",
"categorytree-num-files": "$1 O"
}

View File

@ -0,0 +1,12 @@
{
"@metadata": {
"authors": [
"Asenoner"
]
},
"categorytree-expand": "slergia",
"categorytree-member-counts": "À dedit {{PLURAL:$1|1 subcategoria|$1 subcategories}}, {{PLURAL:$2|1 plata|$2 plates}}, y {{PLURAL:$3|1 documënt|$3 documënc}}",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 F"
}

View File

@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Awangba Mangang"
]
},
"categorytree-portlet": "ꯃꯆꯥꯈꯥꯏꯕꯁꯤꯡ",
"categorytree-category": "ꯃꯆꯥꯈꯥꯏꯕ:",
"categorytree-mode-all": "ꯂꯃꯥꯏꯁꯤꯡ ꯂꯣꯏꯅꯥ",
"categorytree-collapse": "ꯁꯨꯞꯆꯤꯟꯕ",
"categorytree-expand": "ꯄꯥꯛꯊꯣꯛꯄꯥ",
"categorytree-member-counts": "Contains {{PLURAL:$1|1 subcategory|$1 subcategories}}, {{PLURAL:$2|1 page|$2 pages}}, and {{PLURAL:$3|1 file|$3 files}}",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 F",
"categorytree-num-empty": "ꯌꯥꯎꯗꯕ",
"categorytree-load": "ꯆꯤꯡꯕ/ꯎꯨꯡꯂꯤꯕ",
"categorytree-loading": "ꯆꯤꯡꯂꯤ/ꯎꯪꯂꯤ",
"categorytree-nothing-found": "ꯀꯔꯤꯝꯇꯥ ꯄꯪꯗꯦ",
"categorytree-no-subcategories": "ꯄꯤꯛꯊꯕ ꯃꯆꯥꯈꯥꯏꯕꯁꯤꯡ ꯂꯩꯇꯩ"
}

View File

@ -0,0 +1,30 @@
{
"@metadata": {
"authors": [
"Htawmonzel",
"Aue Nai"
]
},
"categorytree": "တၞဆု ကဏ္ဍ",
"categorytree-portlet": "ကဏ္ဍဂမၠိုင်",
"categorytree-legend": "ထ္ၜး ကဏ္ဍမတၞံဆု",
"categorytree-category": "ကဏ္ဍ:",
"categorytree-go": "ထ္ၜးတၞံဆု",
"categorytree-parents": "မိမ",
"categorytree-mode-label": "အရီု:",
"categorytree-mode-categories": "ကဏ္ဍဂမၠိုၚ်ဟေၚ်",
"categorytree-mode-all": "မုက်လိက် သီုဖအိုတ်",
"categorytree-collapse": "ဒေါမ်",
"categorytree-expand": "သၠဲ",
"categorytree-member-counts": "အရာမပါလုပ်ဂမၠိုင် {{PLURAL:$1|1 ကဏ္ဍလစှ်ေ|$1 ကဏ္ဍလစှ်ေဂမၠိုင်}}, {{PLURAL:$2|1 မုက်လိက်|$2 မုက်လိက်ဂမၠိုင်}}, ကေုာံ {{PLURAL:$3|1 ဝှာင်|$3 ဝှာင်ဂမၠိုင်}}",
"categorytree-num-categories": "$1 ကဏ္ဍ",
"categorytree-num-pages": "$1 မုက်လိက်",
"categorytree-num-files": "$1 ဝှာင်",
"categorytree-num-empty": "မုဟွံမွဲ",
"categorytree-load": "ပတိုန်",
"categorytree-loading": "ပတိုန်ဒၟံၚ်...",
"categorytree-nothing-found": "မုမွဲမှဟွံဆဵု",
"categorytree-no-subcategories": "ကဏ္ဍလစှ်ေဂမၠိုင် ဟွံမွဲ",
"categorytree-no-parent-categories": "ကဏ္ဍမိဂမၠိုၚ်ဟွံသေၚ်",
"categorytree-not-found": "ကဏ္ဍ <i>$1</i> ဟွံဆဵု"
}

View File

@ -4,8 +4,9 @@
"Jawadywn"
]
},
"categorytree-expand": "selék",
"categorytree-expand": "jéjérke",
"categorytree-member-counts": "punyo {{PLURAL:$1|$1 sub-bangso}}, {{PLURAL:$2|$2 karangan}}, samo {{PLURAL:$3|$3 berkas}}",
"categorytree-num-categories": "$1 B",
"categorytree-num-pages": "$1 L",
"categorytree-num-pages": "$1 K",
"categorytree-num-files": "$1 B"
}

View File

@ -2,14 +2,28 @@
"@metadata": {
"authors": [
"Ninjastrikers",
"9.sinistra"
"9.sinistra",
"Dr Lotus Black"
]
},
"categorytree": "ကဏ္ဍ ဖွဲ့စည်းပုံ",
"categorytree-portlet": "ကဏ္ဍများ",
"categorytree-legend": "ကဏ္ဍ ဖွဲ့စည်းပုံကို ပြရန်",
"categorytree-category": "ကဏ္ဍ:",
"categorytree-mode-categories": "ကဏ္ဍများသာ",
"categorytree-mode-pages": "ဖိုင်များကလွဲ၍ စာမျက်နှာများ",
"categorytree-mode-all": "စာမျက်နှာအားလုံး",
"categorytree-collapse": "ချုံ့ရန်",
"categorytree-expand": "ချဲ့ကား",
"categorytree-member-counts": "{{PLURAL:$1|ကဏ္ဍခွဲ ၁ ခု|$1 ကဏ္ဍခွဲများ}}၊ {{PLURAL:$2|စာမျက်နှာ ၁ ခု| စာမျက်နှာ $2 ခု}}၊ နှင့် {{PLURAL:$3|ဖိုင် ၁ ခု| ဖိုင် $3 ခု }} ပါဝင်သည်",
"categorytree-num-categories": "$1 ကဏ္ဍ",
"categorytree-num-pages": "$1 စာမျက်နှာ",
"categorytree-num-files": "$1 ဖိုင်",
"categorytree-num-empty": "ဘာမှမရှိ"
"categorytree-num-empty": "ဘာမှမရှိ",
"categorytree-loading": "ဝန်ဆွဲတင်နေသည်...",
"categorytree-nothing-found": "ဘာတစ်ခုမှ မတွေ့ပါ",
"categorytree-no-subcategories": "ကဏ္ဍခွဲများ မရှိပါ",
"categorytree-no-parent-categories": "မိခင်ကဏ္ဍများ မတွေ့ပါ",
"categorytree-not-found": "ကဏ္ဍ <i>$1</i> မတွေ့ပါ",
"categorytree-retry": "ခေတ္တခဏစောင့်ဆိုင်းပြီး ထပ်မံကြိုးစားကြည့်ပါ။"
}

View File

@ -11,17 +11,21 @@
"categorytree-portlet": "Neneuhcayomeh",
"categorytree-legend": "Monexti in Neneuhcayocuammayotl",
"categorytree-desc": "Iciuhca mopanoltiz ipan in [[Special:CategoryTree|Neneuhcayocuammayotl]]",
"categorytree-header": "Xikîkuilo sè tlaìxmatkàtlàlilòtòkâtli, ìka tikỉtílìs in ìtlamàmàyòtekpànalpialòl.\nXikmauhtie, molwi yankuik JavaScript tekitìliskàyòtl tètech moneki, ìxmatkàyö kèn AJAX.\nIntlà molwi yi wêkàuhkáyòtl in monetzànìltzòwîkàuh, nòso tiksewîtok in JavaScript, awel tlen monèxtis.",
"categorytree-header": "Xiquihcuilo ce neneuhcayotocaitl ica tiquitiliz in ìtlamamayotecpanalpialol.\nXicmauhtie, molhui yancuic JavaScript tequitilizcayotl tetech monequi, ixmatkayo quen AJAX.\nIntla molhui yi huehcauhcayotl in monetzanilohuicauh, nozo ticcehuitoc in JavaScript, ahuel tlen monextiz.",
"categorytree-category": "Neneuhcayotl:",
"categorytree-go": "Monextiz cuammayotl",
"categorytree-parents": "Achcauhcaneneuhcayotl",
"categorytree-mode-label": "Quenamihcan",
"categorytree-mode-categories": "Zan neneuhcayomeh monextizqueh",
"categorytree-mode-pages": "zan tlahcuilolamameh ahmo ixiptin",
"categorytree-mode-all": "Nochtin in tlahcuilolamameh",
"categorytree-collapse": "motepitonoz",
"categorytree-expand": "mohueyiyaliz",
"categorytree-member-counts": "quipiya {{PLURAL:$1|ce tlani-neneuhcayotl|$1 tlani-neneuhcayomeh}}, {{PLURAL:$2|tlahcuilolamatl|$2 tlahcuilolamameh}}, ihuan {{PLURAL:$3|ce tlapiyaliztecpanaliztli|$3 tlapiyaliztecpanaliztin}}",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 Ihcu",
"categorytree-num-empty": "Cacti",
"categorytree-load": "motemohuiz",
"categorytree-loading": "hualtemohticah...",
"categorytree-nothing-found": "ahmo tlen omahcic",
@ -30,5 +34,10 @@
"categorytree-no-pages": "ahtle oncateh tlahcuilolamameh nozo tlani-neneuhcayomeh",
"categorytree-not-found": "Neneuhcayotl <i>$1</i> ahmo omahxilih",
"categorytree-error": "Ahhuel temo in tlamatilicehualli",
"categorytree-retry": "Timitztlatlauhtiah, ximochiya chihton niman occepa xicyehyeco."
"categorytree-retry": "Timitztlatlauhtiah, ximochiya chihton niman occepa xicyehyeco.",
"apihelp-categorytree-description": "Tlahtic inoncuahquizaliz itech ixeliuhca CategoryTree.",
"apihelp-categorytree-summary": "Tlahtic inoncuahquizaliz itech ixeliuhca CategoryTree.",
"apihelp-categorytree-param-category": "Itoca ipan tocatlacauhtli ihtic neneuhcayotl; in tepiton tlamantli, intla motenehua, ahmo motequitiz.",
"apihelp-categorytree-param-options": "In pehpenaliztli itlocpa quichihuani CategoryTree iuhqui tlamantli itlocpa JSON. In pehpenaliztli <var>depth</var> zan icel quicui in machiyotl <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "In pehpenaliztli monequi ce yectli machiyotl JSON."
}

View File

@ -2,7 +2,8 @@
"@metadata": {
"authors": [
"Chelin",
"C.R."
"C.R.",
"Ruthven"
]
},
"categorytree": "Arvero d' 'e categurìe",
@ -16,7 +17,7 @@
"categorytree-mode-label": "Modalità:",
"categorytree-mode-categories": "mostra solo 'e categurìe",
"categorytree-mode-pages": "tutte 'e paggene accettuanno l'immaggene",
"categorytree-mode-all": "Tutte 'e paggene",
"categorytree-mode-all": "Tutte 'e ppaggene",
"categorytree-collapse": "annascunne",
"categorytree-expand": "fa vede",
"categorytree-member-counts": "Cuntene {{PLURAL:$1|1 sottocategurìa|$1 sottocategurìe}}, {{PLURAL:$2|1 paggena|$2 paggene}} e {{PLURAL:$3|1 file|$3 file}}",
@ -34,6 +35,8 @@
"categorytree-error": "Probblema c' 'o caricamento d' 'e date.",
"categorytree-retry": "Aspetta nu mumento e prova n'ata vota.",
"apihelp-categorytree-description": "Modulo nterno pe' ne ffà n'estensione CategoryTree",
"apihelp-categorytree-summary": "Modulo nterno pe' ne ffà n'estensione CategoryTree",
"apihelp-categorytree-param-category": "Titolo dint' 'o namespace categurìa, 'o prefisso sarrà gnurato si dato.",
"apihelp-categorytree-param-options": "Opziune p' 'o costruttore comm'a n'uggetto JSON.\nL'opziona <var>depth</var> è determinata a <kbd>1</kbd>."
"apihelp-categorytree-param-options": "Opziune p' 'o costruttore comm'a n'uggetto JSON.\nL'opziona <var>depth</var> è determinata a <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "L'opziune hann'a essere valide pe' n'oggetto JSON."
}

View File

@ -5,7 +5,8 @@
"Event",
"SuperPotato",
"Jon Harald Søby",
"Kingu"
"Kingu",
"Jeblad"
]
},
"categorytree": "Kategoritre",
@ -22,7 +23,7 @@
"categorytree-mode-all": "alle sider",
"categorytree-collapse": "skjul",
"categorytree-expand": "utvid",
"categorytree-member-counts": "Inneholder {{PLURAL:$1|én underkategori|$1 underkategorier}}, {{PLURAL:$2|én side|$2 sider}} og {{PLURAL:$3|én fil|$3 filer}}",
"categorytree-member-counts": "Inneholder {{PLURAL:$1|én underkategori|$1 underkategorier}}, {{PLURAL:$2|én side|$2 sider}}, og {{PLURAL:$3|én fil|$3 filer}}",
"categorytree-num-categories": "$1 K",
"categorytree-num-pages": "$1 S",
"categorytree-num-files": "$1 F",

View File

@ -1,10 +1,17 @@
{
"@metadata": [],
"@metadata": {
"authors": [
"Lam-ang"
]
},
"categorytree-mode-pages": "Saray bolobolong ya aga kaibay picture",
"categorytree-mode-all": "Amin ya bolobolong",
"categorytree-collapse": "isara",
"categorytree-expand": "lukasan",
"categorytree-num-categories": "$1 K",
"categorytree-num-pages": "$1 B",
"categorytree-load": "I-lugan",
"categorytree-loading": "ilulugan…",
"categorytree-nothing-found": "anggapoy naanap",
"categorytree-no-pages": "Anggapoy bolong odino subcategory"
}

View File

@ -6,7 +6,8 @@
"Matma Rex",
"Sp5uhe",
"Chrumps",
"Woytecr"
"Woytecr",
"Railfail536"
]
},
"categorytree": "Drzewo kategorii",
@ -38,6 +39,7 @@
"categorytree-error": "Problem z ładowaniem danych.",
"categorytree-retry": "Poczekaj chwilę i spróbuj ponownie kliknij ten napis.",
"apihelp-categorytree-description": "Wewnętrzny moduł rozszerzenia CategoryTree.",
"apihelp-categorytree-summary": "Wewnętrzny moduł rozszerzenia CategoryTree.",
"apihelp-categorytree-param-category": "Tytuł w przestrzeni nazw kategorii, prefiks będzie ignorowany jeżeli podany.",
"apihelp-categorytree-param-options": "Opcje dla konstruktora CategoryTree w postaci obiektu JSON. Opcja <var>depth</var> domyślnie wynosi <kbd>1</kbd>.",
"apierror-categorytree-invalidjson": "Opcje powinny być prawidłowymi obiektami JSON."

View File

@ -37,8 +37,8 @@
"categorytree-collapse": "Tooltip for the \"collapse\" button.\n{{Identical|Collapse}}",
"categorytree-expand": "Tooltip for the \"expand\" button.\n{{Identical|Expand}}",
"categorytree-collapse-bullet": "{{notranslate}}",
"categorytree-expand-bullet": "For right-to-left scripts, set this message to the single character ◄ . Otherwise, do not translate this message.\n{{optional}}",
"categorytree-empty-bullet": "Prefix used before category names in category pages when the number of subcategories (or something) is 0, to indicate that there is no sub-tree of items to expand.",
"categorytree-expand-bullet": "For right-to-left scripts, set this message to the single character ◄ . Otherwise, do not translate this message. Does not support wiki-syntax, html or entity references. \n{{optional}}",
"categorytree-empty-bullet": "Prefix used before category names in category pages when the number of subcategories (or something) is 0, to indicate that there is no sub-tree of items to expand. Does not support wiki-syntax, html or entity references.",
"categorytree-page-bullet": "{{notranslate}}",
"categorytree-member-counts": "Tooltip showing a detailed summary of subcategory member counts. Parameters:\n* $1 - number of subcategories\n* $2 - number of pages (without subcategories and files)\n* $3 - number of files\n* $4 - (Unused) total number of members\n* $5 - (Unused) members to be shown in the tree, depending on mode\nUse with <nowiki>{{PLURAL}}</nowiki>",
"categorytree-member-num": "{{notranslate}}\nHowever, if needed, you can localise the parentheses.\n\n(From https://www.mediawiki.org/wiki/Extension:CategoryTree#categorytree-member-num):\nBy default, when listing subcategories on a category page, each subcategory is followed by an integer indicating how many subcategories lie beneath it:\n<pre>\nMy category name (5)\n</pre>\nYou can change this behavior by overriding this system message. Parameters:\n* $1 - (Unused) number of subcategories\n* $2 - (Unused) number of articles (not including category pages or file pages)\n* $3 - (Unused) number of uploaded files\n* $4 - (Unused) total number of member pages, including category pages and file pages\n* $5 - (Varies depending on CategoryTree mode....Can someone describe it?)\n\nTip: Use the ParserFunctions extension (https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions) to provide if/then/else logic to display different parts conditionally. For example:\n<pre>\n{{#ifeq:$1|0||$1 categories}}\n</pre>",

View File

@ -4,5 +4,6 @@
"Michaelobregon"
]
},
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P"
}

View File

@ -3,27 +3,33 @@
"authors": [
"Albinus",
"Manik Soren",
"Ramjit Tudu"
"Ramjit Tudu",
"Fagunkoyel Hansdah",
"Amire80"
]
},
"categorytree": "ᱫᱟᱨᱮ ᱛᱷᱚᱠ",
"categorytree-portlet": "ᱛᱷᱚᱠ ᱠᱚ",
"categorytree-legend": "ᱥᱚᱫᱚᱨᱢᱮ ᱫᱟᱨᱮ ᱛᱷᱚᱠ",
"categorytree-category": "ᱛᱷᱚᱠ:",
"categorytree-go": "Dare uduḱme",
"categorytree-parents": "Gogo baba",
"categorytree-mode-label": "ᱰᱷᱚᱝ",
"categorytree-go": "ᱫᱟᱨᱮ ᱩᱫᱩᱜᱽᱢᱮ",
"categorytree-parents": "ᱜᱚᱜᱚ ᱵᱟᱵᱟ",
"categorytree-mode-label": "ᱰᱷᱚᱝ:",
"categorytree-mode-categories": "ᱛᱷᱚᱠ ᱠᱚ ᱥᱩᱢᱩᱝ",
"categorytree-mode-all": "Sanam sakamko",
"categorytree-collapse": "Murchạo caba",
"categorytree-mode-pages": "ᱵᱮᱜᱚᱨ ᱨᱮᱫ ᱥᱟᱦᱴᱟᱠᱚ",
"categorytree-mode-all": "ᱡᱚᱛᱚ ᱥᱟᱦᱴᱟᱠᱳ",
"categorytree-collapse": "ᱢᱩᱨᱪᱷᱟᱹᱣ ᱪᱟᱵᱟ",
"categorytree-expand": "ᱯᱷᱟᱭᱞᱟᱣ",
"categorytree-member-counts": "Contains {{PLURAL:$1|1 ᱥᱟᱵ ᱠᱮᱴᱟᱜᱳᱨᱤ|$1 ᱥᱟᱵ ᱠᱮᱴᱟᱜᱳᱨᱤᱥ}}, {{PLURAL:$2|1 ᱥᱟᱦᱴᱟ|$2 ᱥᱟᱦᱴᱟᱠᱩ}}, and {{PLURAL:$3|1 ᱯᱷᱟᱭᱤᱞ|$3 ᱯᱷᱟᱭᱤᱞᱥ}}",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 ᱮᱯᱷ",
"categorytree-num-empty": "Khạligea",
"categorytree-load": "Rakaṕ",
"categorytree-loading": "Rakaṕkana",
"categorytree-nothing-found": "Cet́ hõ baṅ ńamlena",
"categorytree-num-empty": "ᱠᱷᱟᱹᱞᱤᱜᱮᱭᱟ",
"categorytree-load": "ᱞᱟᱫᱮ",
"categorytree-loading": "ᱞᱟᱫᱮᱜᱠᱟᱱᱟ...",
"categorytree-nothing-found": "ᱪᱮᱫ ᱦᱚ ᱵᱟᱝ ᱧᱟᱢᱞᱮᱱᱟ",
"categorytree-no-subcategories": "ᱡᱚᱜᱚᱼᱛᱷᱚᱠ ᱠᱚ ᱵᱟᱹᱱᱩᱜᱼᱟ",
"categorytree-no-parent-categories": "ᱢᱩᱬ ᱛᱷᱚᱠ ᱵᱟᱹᱱᱩᱜᱼᱟ",
"categorytree-no-pages": "ᱥᱟᱦᱴᱟᱠᱚ ᱟᱨᱵᱟᱝ ᱡᱚᱜᱚᱼᱛᱷᱚᱠ ᱠᱚ ᱵᱟᱹᱱᱩᱜᱼᱟ",
"categorytree-not-found": "ᱛᱷᱚᱠ <i>$1</i> ᱵᱟᱭ ᱧᱟᱢᱞᱮᱱᱟ"
}

View File

@ -1,10 +1,15 @@
{
"@metadata": {
"authors": [
"Marzedu"
"Marzedu",
"L2212"
]
},
"categorytree-portlet": "Categorias",
"categorytree-category": "Categoria:",
"categorytree-mode-all": "totu is pàginas"
"categorytree-mode-all": "totu is pàginas",
"categorytree-expand": "ismànnia",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 F"
}

View File

@ -2,9 +2,11 @@
"@metadata": {
"authors": [
"Sindhu",
"Mehtab ahmed"
"Mehtab ahmed",
"Tweety"
]
},
"categorytree": "زمرا شجرو",
"categorytree-mode-all": "سڀ صفحا",
"categorytree-expand": "ڦھلايو",
"categorytree-member-counts": "مشتمل آھي {{PLURAL:$1|ذيلي زمرو|$1 ذيلي زمرا}}، {{PLURAL:$2|صفحو|$2 صفحا}}، ۽ {{PLURAL:$3|هڪ فائيل| $3 فائيلَ}}",

View File

@ -4,6 +4,7 @@
"Amara-Amaziɣ"
]
},
"categorytree-expand": "ⵙⵙⵉⵎⵖⵓⵔ",
"categorytree-num-categories": "$1 ⴳⵢ",
"categorytree-num-pages": "$1 ⵙⵏ",
"categorytree-num-files": "$1 ⴼ"

View File

@ -4,6 +4,9 @@
"Vikoula5"
]
},
"categorytree-expand": "snefli",
"categorytree-member-counts": "Yegber $1 {{PLURAL:$1|taggayt tasnawant|taggayin tisnawanin}}, $2 {{PLURAL:$2|aebter|isebtar}} akked $3 {{PLURAL:$3|ufaylu|ifayla}}",
"categorytree-num-categories": "$1 C",
"categorytree-num-pages": "$1 P"
"categorytree-num-pages": "$1 P",
"categorytree-num-files": "$1 F"
}

View File

@ -4,27 +4,27 @@
"Saraiki"
]
},
"categorytree": "قسماں دا شجرہ",
"categorytree-portlet": "قسماں، زمرے",
"categorytree-legend": "قسماں دا شجرہ ݙکھاؤ",
"categorytree-category": "قسم",
"categorytree": "ونکیاں دا شجرہ",
"categorytree-portlet": "ونکیاں",
"categorytree-legend": "ونکیاں دا شجرہ ݙکھاؤ",
"categorytree-category": "ونکی",
"categorytree-go": "لین ݙکھاؤ",
"categorytree-parents": "والدین",
"categorytree-mode-label": "طور:",
"categorytree-mode-categories": "صرف زمرہ جات",
"categorytree-mode-categories": "صرف ونکیاں",
"categorytree-mode-pages": "فائلاں دے علاوہ ورقے",
"categorytree-mode-all": "سارے مقالے",
"categorytree-collapse": "لکاؤ",
"categorytree-expand": "ودھاؤ",
"categorytree-member-counts": "ایندے وچ {{PLURAL:$1|1 ذیلی زمرہ|$1 ذیلی زمرہ جات}}، {{PLURAL:$2|1 ورقہ|$2 ورقے}} تے {{PLURAL:$3|1 فائل|$3 فائلیں}} موجود ہن/ہے۔",
"categorytree-num-categories": "$1 ز",
"categorytree-num-pages": "$1 پی",
"categorytree-member-counts": "ایندے وچ {{PLURAL:$1|1 ذیلی ونکی|$1 ذیلی ونکیاں}}، {{PLURAL:$2|1 ورقہ|$2 ورقے}} تے {{PLURAL:$3|1 فائل|$3 فائلیں}} موجود ہن/ہے۔",
"categorytree-num-categories": "$1 ونک",
"categorytree-num-pages": "$1 ورق",
"categorytree-num-files": "$1 ایف",
"categorytree-num-empty": "خالی",
"categorytree-load": "چڑھاؤ",
"categorytree-loading": "لوڈ تھیدا پئے",
"categorytree-nothing-found": "کجھ نی لبھیا",
"categorytree-no-subcategories": "کوئی ذیلی زمرہ کائنی",
"categorytree-no-subcategories": "کوئی ذیلی ونکی کائنی",
"categorytree-no-parent-categories": "کوئی پیرنٹ کیٹیگریاں کائنی",
"categorytree-no-pages": "کوئی ورقہ یا ذیلی زمرے کائنی",
"categorytree-error": "ڈیٹا لوڈ کرݨ وچ رپھڑ۔"

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Ghiutun"
]
},
"categorytree-num-categories": "$1&nbsp;Kat."
}

View File

@ -8,7 +8,8 @@
"Slaven Kosanovic",
"Михајло Анђелковић",
"Сербијана",
"BadDog"
"BadDog",
"Obsuser"
]
},
"categorytree": "Стабло категорија",
@ -23,9 +24,9 @@
"categorytree-mode-categories": "само категорије",
"categorytree-mode-pages": "странице изузевши датотеке",
"categorytree-mode-all": "све странице",
"categorytree-collapse": "скупи",
"categorytree-expand": "прикажи",
"categorytree-member-counts": "садржи {{PLURAL:$1|једну поткатегорију|$1 поткатегорије|$1 поткатегорија}}, {{PLURAL:$2|једну страницу|$2 странице|$2 страница}} и {{PLURAL:$3|једну датотеку|$3 датотеке|$3 датотека}}",
"categorytree-collapse": "сакриј",
"categorytree-expand": "проширите",
"categorytree-member-counts": "Садржи {{PLURAL:$1|једну поткатегорију|$1 поткатегорије|$1 поткатегорија}}, {{PLURAL:$2|једну страницу|$2 странице|$2 страница}} и {{PLURAL:$3|једну датотеку|$3 датотеке|$3 датотека}}",
"categorytree-num-categories": "$1 К",
"categorytree-num-pages": "$1 С",
"categorytree-num-files": "$1 Д",

View File

@ -3,7 +3,8 @@
"authors": [
"Michaello",
"Milicevic01",
"Rancher"
"Rancher",
"Zoranzoki21"
]
},
"categorytree": "Stablo kategorija",
@ -19,8 +20,8 @@
"categorytree-mode-pages": "stranice izuzevši datoteke",
"categorytree-mode-all": "sve stranice",
"categorytree-collapse": "sakrij",
"categorytree-expand": "prikaži",
"categorytree-member-counts": "sadrži {{PLURAL:$1|jednu potkategoriju|$1 potkategorije|$1 potkategorija}}, {{PLURAL:$2|jednu stranicu|$2 stranice|$2 stranica}} i {{PLURAL:$3|jednu datoteku|$3 datoteke|$3 datoteka}}",
"categorytree-expand": "proširite",
"categorytree-member-counts": "Sadrži {{PLURAL:$1|jednu potkategoriju|$1 potkategorije|$1 potkategorija}}, {{PLURAL:$2|jednu stranicu|$2 stranice|$2 stranica}} i {{PLURAL:$3|jednu datoteku|$3 datoteke|$3 datoteka}}",
"categorytree-num-categories": "$1 K",
"categorytree-num-pages": "$1 S",
"categorytree-num-files": "$1 D",

View File

@ -1,10 +1,15 @@
{
"@metadata": [],
"@metadata": {
"authors": [
"Mapoza2"
]
},
"categorytree": "Lenane le Mekga",
"categorytree-category": "Mokga:",
"categorytree-go": "Mpontshe lenane",
"categorytree-mode-categories": "mekga feela",
"categorytree-mode-pages": "maqephe ntle le ditshwantsho",
"categorytree-mode-all": "maqephe ohle",
"categorytree-collapse": "Nyenyefatsa",
"categorytree-expand": "Hodisa",
"categorytree-load": "jara",

View File

@ -8,14 +8,15 @@
"Runningfridgesrule",
"Stultiwikia",
"Vito Genovese",
"Superyetkin"
"Superyetkin",
"Hedda"
]
},
"categorytree": "Kategori hiyerarşisi",
"categorytree-portlet": "Kategoriler",
"categorytree-legend": "Kategori ağacını göster",
"categorytree-desc": "[[Special:CategoryTree|Kategori yapısını]] dinamik olarak idare et",
"categorytree-header": "Kategori ismini girip, içeriğini hiyerarşik şekilde görebilirsiniz. Bu özellik AJAX adıyla bilinen gelişmiş JavaScript ile çalışabilir. Eğer tarayıcınız eski ise ya da JavaScript kullanımı kapalı ise, çalışmaz.",
"categorytree-header": "İçeriği bir ağaç yapısı olarak görmek için bir kategori adı girin. (JavaScript gerektirir.)",
"categorytree-category": "Kategori",
"categorytree-go": "Ağacı göster",
"categorytree-parents": "Üst kategoriler",
@ -38,5 +39,10 @@
"categorytree-no-pages": "alt kategori veya madde yok.",
"categorytree-not-found": "<i>\"$1\"</i> isimli kategori bulunamadı",
"categorytree-error": "Bilgi yüklenmesi ile bir problem var.",
"categorytree-retry": "Lütfen kısa süre için bekleyin, sonra bir kere daha deneyin."
"categorytree-retry": "Lütfen kısa süre için bekleyin, sonra bir kere daha deneyin.",
"apihelp-categorytree-description": "CategoryTree uzantısı için iç modül.",
"apihelp-categorytree-summary": "CategoryTree uzantısı için iç modül.",
"apihelp-categorytree-param-category": "Kategori ad alanındaki başlık, verilen varsa önek dikkate alınmaz.",
"apihelp-categorytree-param-options": "JSON nesnesi olarak CategoryTree yapıcısı için seçenekler. <var>Derinlik</var> seçeneği varsayılan <kbd>1</kbd>",
"apierror-categorytree-invalidjson": "Seçenekler bir JSON nesnesi için geçerli olmalıdır."
}

View File

@ -8,7 +8,7 @@
"Don Alessandro"
]
},
"categorytree": "Төркемнәр \"агачы\".",
"categorytree": "Төркемнәр шәҗәрәсе",
"categorytree-portlet": "Төркемнәр",
"categorytree-legend": "Төркемнәрнең шәҗәрәсен ачарга",
"categorytree-desc": "[[Special:CategoryTree|Төркемнәрнең асылы]]н аңлату өчен төзелгән AJAX-бит",
@ -37,6 +37,7 @@
"categorytree-error": "Хата",
"categorytree-retry": "Зинһар бераз көтеп торыгыз һәм тагын бер кат йөкләүне башкарып карагыз.",
"apihelp-categorytree-description": "CategoryTree кушымтасы өчен эчке модуль.",
"apihelp-categorytree-summary": "CategoryTree кушымтасы өчен эчке модуль.",
"apihelp-categorytree-param-category": "Төркемнәр мәйданы исемлеге, куелган очракта префикс кулланылмый.",
"apihelp-categorytree-param-options": "JSON-җисемнәр сыман CategoryTree төзүчесе төрләре. <var>depth</var> (тирәнлек) параметры <kbd>1</kbd> итеп куелган.",
"apierror-categorytree-invalidjson": "Юрамалар JSON-җисемнәре белән валид булырга тиеш."

View File

@ -32,11 +32,20 @@ class ApiCategoryTree extends ApiBase {
}
$options = get_object_vars( $options );
}
$title = CategoryTree::makeTitle( $params['category'] );
if ( !$title || $title->isExternal() ) {
if ( is_callable( [ $this, 'dieWithError' ] ) ) {
$this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['category'] ) ] );
} else {
$this->dieUsageMsg( [ 'invalidtitle', wfEscapeWikiText( $params['category'] ) ] );
}
}
$depth = isset( $options['depth'] ) ? (int)$options['depth'] : 1;
$ct = new CategoryTree( $options );
$depth = CategoryTree::capDepth( $ct->getOption( 'mode' ), $depth );
$title = CategoryTree::makeTitle( $params['category'] );
$config = $this->getConfig();
$ctConfig = ConfigFactory::getDefaultInstance()->makeConfig( 'categorytree' );
$html = $this->getHTML( $ct, $title, $depth, $ctConfig );

View File

@ -381,7 +381,6 @@ class CategoryTree {
}
$html .= Xml::closeElement( 'div' );
$html .= "\n\t\t";
return $html;
}
@ -474,7 +473,6 @@ class CategoryTree {
}
$s = $this->renderNodeInfo( $t, $cat, $depth - 1 );
$s .= "\n\t\t";
if ( $row->page_namespace == NS_CATEGORY ) {
$categories .= $s;
@ -517,7 +515,7 @@ class CategoryTree {
foreach ( $res as $row ) {
$t = Title::newFromRow( $row );
$label = htmlspecialchars( $t->getText() );
$label = $t->getText();
$wikiLink = $special->getLocalURL( 'target=' . $t->getPartialURL() .
'&' . $this->getOptionsAsUrlParameters() );
@ -527,11 +525,8 @@ class CategoryTree {
}
$s .= Xml::openElement( 'span', [ 'class' => 'CategoryTreeItem' ] );
$s .= Xml::openElement( 'a', [ 'class' => 'CategoryTreeLabel', 'href' => $wikiLink ] )
. $label . Xml::closeElement( 'a' );
$s .= Xml::element( 'a', [ 'class' => 'CategoryTreeLabel', 'href' => $wikiLink ], $label );
$s .= Xml::closeElement( 'span' );
$s .= "\n\t\t";
}
return $s;
@ -587,9 +582,9 @@ class CategoryTree {
// configuration setting
// patch contributed by Manuel Schneider <manuel.schneider@wikimedia.ch>, Bug 8011
if ( $hideprefix ) {
$label = htmlspecialchars( $title->getText() );
$label = $title->getText();
} else {
$label = htmlspecialchars( $title->getPrefixedText() );
$label = $title->getPrefixedText();
}
$labelClass = 'CategoryTreeLabel ' . ' CategoryTreeLabelNs' . $ns;
@ -634,7 +629,7 @@ class CategoryTree {
}
}
if ( $count === 0 ) {
$bullet = wfMessage( 'categorytree-empty-bullet' )->plain() . ' ';
$bullet = wfMessage( 'categorytree-empty-bullet' )->escaped() . ' ';
$attr['class'] = 'CategoryTreeEmptyBullet';
} else {
$linkattr = [];
@ -644,10 +639,13 @@ class CategoryTree {
$tag = 'span';
if ( $children == 0 ) {
$txt = wfMessage( 'categorytree-expand-bullet' )->plain();
// Use ->plain() and htmlspecialchars() to ensure
// identical to what is done by JS, which does:
// $link.text( mw.msg( 'categorytree-expand-bullet' ) )
$txt = htmlspecialchars( wfMessage( 'categorytree-expand-bullet' )->plain() );
$linkattr[ 'data-ct-state' ] = 'collapsed';
} else {
$txt = wfMessage( 'categorytree-collapse-bullet' )->plain();
$txt = htmlspecialchars( wfMessage( 'categorytree-collapse-bullet' )->plain() );
$linkattr[ 'data-ct-loaded' ] = true;
$linkattr[ 'data-ct-state' ] = 'expanded';
}
@ -655,19 +653,17 @@ class CategoryTree {
$bullet = Xml::openElement( $tag, $linkattr ) . $txt . Xml::closeElement( $tag ) . ' ';
}
} else {
$bullet = wfMessage( 'categorytree-page-bullet' )->plain();
$bullet = wfMessage( 'categorytree-page-bullet' )->escaped();
}
$s .= Xml::tags( 'span', $attr, $bullet ) . ' ';
$s .= Xml::openElement( 'a', [ 'class' => $labelClass, 'href' => $wikiLink ] )
. $label . Xml::closeElement( 'a' );
$s .= Xml::element( 'a', [ 'class' => $labelClass, 'href' => $wikiLink ], $label );
if ( $count !== false && $this->getOption( 'showcount' ) ) {
$s .= self::createCountString( RequestContext::getMain(), $cat, $count );
}
$s .= Xml::closeElement( 'div' );
$s .= "\n\t\t";
$s .= Xml::openElement(
'div',
[
@ -681,13 +677,13 @@ class CategoryTree {
if ( $children == '' ) {
$s .= Xml::openElement( 'i', [ 'class' => 'CategoryTreeNotice' ] );
if ( $mode == CategoryTreeMode::CATEGORIES ) {
$s .= wfMessage( 'categorytree-no-subcategories' )->text();
$s .= wfMessage( 'categorytree-no-subcategories' )->escaped();
} elseif ( $mode == CategoryTreeMode::PAGES ) {
$s .= wfMessage( 'categorytree-no-pages' )->text();
$s .= wfMessage( 'categorytree-no-pages' )->escaped();
} elseif ( $mode == CategoryTreeMode::PARENTS ) {
$s .= wfMessage( 'categorytree-no-parent-categories' )->text();
$s .= wfMessage( 'categorytree-no-parent-categories' )->escaped();
} else {
$s .= wfMessage( 'categorytree-nothing-found' )->text();
$s .= wfMessage( 'categorytree-nothing-found' )->escaped();
}
$s .= Xml::closeElement( 'i' );
} else {
@ -698,8 +694,6 @@ class CategoryTree {
$s .= Xml::closeElement( 'div' );
$s .= Xml::closeElement( 'div' );
$s .= "\n\t\t";
return $s;
}

View File

@ -137,7 +137,7 @@ class CategoryTreeHooks {
* This loads CategoryTreeFunctions.php and calls CategoryTree::getTag()
* @param string $cat
* @param array $argv
* @param Parser $parser
* @param Parser|null $parser
* @param bool $allowMissing
* @return bool|string
*/

View File

@ -132,7 +132,7 @@
$link.data( 'ct-loaded', true );
$children.append(
$children.empty().append(
$( '<i class="CategoryTreeNotice"></i>' )
.text( mw.msg( 'categorytree-loading' ) )
);
@ -141,7 +141,7 @@
// Element may not have a .CategoryTreeTag parent, fallback to defauls
// Probably a CategoryPage (@todo: based on what?)
ctTitle = $link.data( 'ct-title' );
ctTitle = $link.attr( 'data-ct-title' );
ctMode = $linkParentCTTag.data( 'ct-mode' );
ctMode = typeof ctMode === 'number' ? ctMode : undefined;
ctOptions = $linkParentCTTag.attr( 'data-ct-options' );
@ -151,7 +151,7 @@
// Mode and options have defaults or fallbacks, title does not.
// Don't make a request if there is no title.
if ( typeof ctTitle !== 'string' ) {
if ( !ctTitle ) {
error();
return;
}
@ -163,6 +163,8 @@
uselang: mw.config.get( 'wgUserLanguage' ),
formatversion: 2
} ).done( function ( data ) {
var $data;
data = data.categorytree.html;
if ( data === '' ) {
@ -184,12 +186,13 @@
data = mw.msg( 'categorytree-nothing-found' );
}
data = $( '<i class="CategoryTreeNotice"></i>' ).text( data );
$data = $( '<i class="CategoryTreeNotice"></i>' ).text( data );
} else {
$data = $( $.parseHTML( data ) );
attachHandler( $data );
}
$children.html( data );
attachHandler( $children );
$children.empty().append( $data );
} )
.fail( error );
};

View File

@ -3,7 +3,5 @@
$cfg = require __DIR__ . '/../../vendor/mediawiki/mediawiki-phan-config/src/config.php';
// SpecialPage->categoryTreeCategories
$cfg['suppress_issue_types'][] = 'PhanUndeclaredProperty';
// TitlePrefixSearch
$cfg['suppress_issue_types'][] = 'PhanDeprecatedClass';
return $cfg;

@ -1 +1 @@
Subproject commit b98e6a483c3840b52ffb79eda666496a48ae5dfc
Subproject commit 27be3bc174bd036f4218bdac592c85d59819369c

View File

@ -1 +1 @@
The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).

View File

@ -1,14 +0,0 @@
<?php
if ( function_exists( 'wfLoadExtension' ) ) {
wfLoadExtension( 'Cite' );
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['Cite'] = __DIR__ . '/i18n';
/* wfWarn(
'Deprecated PHP entry point used for Cite extension. Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
); */
return true;
} else {
die( 'This version of the Cite extension requires MediaWiki 1.25+' );
}

View File

@ -1,10 +1,10 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"mediawiki/mediawiki-codesniffer": "18.0.0",
"mediawiki/mediawiki-codesniffer": "22.0.0",
"jakub-onderka/php-console-highlighter": "0.3.2",
"mediawiki/minus-x": "0.3.1",
"mediawiki/mediawiki-phan-config": "0.2.0"
"mediawiki/mediawiki-phan-config": "0.3.0"
},
"scripts": {
"test": [
@ -18,6 +18,6 @@
]
},
"extra": {
"phan-taint-check-plugin": "1.1.0"
"phan-taint-check-plugin": "1.5.0"
}
}

View File

@ -1,5 +1,6 @@
{
"name": "Cite",
"version": "1.0.0",
"author": [
"Ævar Arnfjörð Bjarmason",
"Andrew Garrett",
@ -15,11 +16,13 @@
"license-name": "GPL-2.0-or-later",
"type": "parserhook",
"requires": {
"MediaWiki": ">= 1.30.0"
"MediaWiki": ">= 1.32.0"
},
"MessagesDirs": {
"cite": "i18n",
"ve-cite": "modules/ve-cite/i18n"
"Cite": [
"i18n",
"modules/ve-cite/i18n"
]
},
"APIPropModules": {
"references": {

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Anok kutai jang"
]
},
"cite_error": "Salah waktu kutip: $1"
}

View File

@ -6,7 +6,7 @@
"Fwolff"
]
},
"cite-desc": "Maak <nowiki><ref[ name=id]></nowiki> en <nowiki><references/></nowiki> etikette beskikbaar vir sitasie.",
"cite-desc": "Maak <code><nowiki><ref[ name=id]></nowiki></code> en <code><nowiki><references/></nowiki></code> etikette beskikbaar vir sitasie.",
"cite_error": "Verwysingfout: $1",
"cite_error_ref_numeric_key": "Ongeldige etiket <code>&lt;ref&gt;</code>;\ndie naam kan nie 'n eenvoudige heelgetal wees nie.\nGebruik 'n beskrywende titel",
"cite_error_ref_no_key": "Ongeldige etiket <code>&lt;ref&gt;</code>;\n\"refs\" sonder inhoud moet 'n naam hê",

View File

@ -6,7 +6,7 @@
"Tokoabibi"
]
},
"cite-desc": "midama <nowiki><ref[ name=id]></nowiki> atu <nowiki><references/></nowiki> aazihen-paya, kapah pabacuen miazih tu tatengaay nasulitan",
"cite-desc": "midama <code><nowiki><ref[ name=id]></nowiki></code> atu <code><nowiki><references/></nowiki></code> aazihen-paya, kapah pabacuen miazih tu tatengaay nasulitan",
"cite_error": "nicaliwan mungangaw: $1",
"cite_error_ref_numeric_key": "lacus <code>&lt;ref&gt;</code> aazihen-paya, kya susin amama pisaungay asip-bacu, pisaungay taneng misapuelac lacul a satangahan",
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> aazihen-paya angangan a kese mungangaw saca kalungangan caay kalucek.",

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Vickylin77s"
]
},
"cite_error": "Moraraway ko picaliw$1"
}

View File

@ -4,7 +4,7 @@
"Juanpabl"
]
},
"cite-desc": "Adibe as etiquetas <nowiki><ref[ name=id]></nowiki> y <nowiki><references/></nowiki> ta fer citas",
"cite-desc": "Adibe as etiquetas <code><nowiki><ref[ name=id]></nowiki></code> y <code><nowiki><references/></nowiki></code> ta fer citas",
"cite_error": "Error en a cita: $1",
"cite_error_ref_numeric_key": "Etiqueta <code>&lt;ref&gt;</code> incorreuta; o nombre d'a etiqueta no puede estar un numero entero, faiga servir un títol descriptivo",
"cite_error_ref_no_key": "Etiqueta <code>&lt;ref&gt;</code> incorreuta; as referencias sin de conteniu han de tener un nombre",

Some files were not shown because too many files have changed in this diff Show More