2 years agofilebackend: use self:: instead of FileBackend:: for some constant uses
Aaron Schulz [Sun, 8 Sep 2019 06:33:49 +0000 (23:33 -0700)]
filebackend: use self:: instead of FileBackend:: for some constant uses

Change-Id: Iae82a074ef9da3c36b34713d31ec65407d2a90b7

2 years agoMerge "Simplify some code by changing single-scope properties to local variables"
jenkins-bot [Sat, 7 Sep 2019 17:42:09 +0000 (17:42 +0000)]
Merge "Simplify some code by changing single-scope properties to local variables"

2 years agoMerge "Better docs to make phan happy"
jenkins-bot [Sat, 7 Sep 2019 17:35:52 +0000 (17:35 +0000)]
Merge "Better docs to make phan happy"

2 years agoMerge "mediawiki.util: Remove redundant file closures"
jenkins-bot [Sat, 7 Sep 2019 17:19:54 +0000 (17:19 +0000)]
Merge "mediawiki.util: Remove redundant file closures"

2 years agoSimplify some code by changing single-scope properties to local variables
Daimona Eaytoy [Sat, 7 Sep 2019 15:46:11 +0000 (17:46 +0200)]
Simplify some code by changing single-scope properties to local variables

When they're not used outside of the scope where they're defined.

Change-Id: I5ca1de8420c1180bf7f5d9f28f2a7402a256adf8

2 years agomediawiki.util: Remove redundant file closures
Fomafix [Fri, 6 Sep 2019 07:48:58 +0000 (09:48 +0200)]
mediawiki.util: Remove redundant file closures

Modules loaded with packageFiles are always executed in module scope
(with a closure), even in debug mode.

The behaviour of non-packageFiles debug mode is the only reason files
have closures.

Bug: T50886
Change-Id: I4c553961eab0f665e4ae123e11c92b255367fcfb

2 years agoBetter docs to make phan happy
Daimona Eaytoy [Sat, 7 Sep 2019 14:38:07 +0000 (16:38 +0200)]
Better docs to make phan happy

Change-Id: I8a9a6330cf1f889cbb77dfc28c93774204767323

2 years agoSimplify maintenance/dumpUploads
Daimona Eaytoy [Sat, 7 Sep 2019 13:54:20 +0000 (15:54 +0200)]
Simplify maintenance/dumpUploads

Avoid lots of unneeded properties and dynamic names.

Change-Id: I428d0c8a5409558e51bc136463d46192478194fb

2 years agoRemove dead properties
Daimona Eaytoy [Sat, 7 Sep 2019 13:44:01 +0000 (15:44 +0200)]
Remove dead properties

*LogPage::timestamp was introduced with r4919 back in 2004, and is unused
since then.
*ApiMain::mCommit was introduced in r33133, then removed in r33381 but that
line was forgotten.
*SpecialRecentChangesLinked::mResultEmpty was introduced in r36682, then
removed at some point with this leftover.
*SpecialStatistics::hook, introduced in r54511 and unused since then.
*MergeMessageFileList::hasError introduced in Id4b16083435ef7f4fce31861c72889e664d07236
and removed in I3d9cf1d614dacaa91fb2092019ccf1d14d61ccab with a leftover

Change-Id: Ie15c148a3217ee8da62874840f3ef7739893f69e

2 years agoDeprecate mediawiki.RegExp; move only function to mw.util
James D. Forrester [Thu, 5 Sep 2019 22:20:46 +0000 (15:20 -0700)]
Deprecate mediawiki.RegExp; move only function to mw.util

Bug: T218339
Change-Id: I1079e99fc22ed7f3159e7fe45581db799ae7259d

2 years agoMerge "docs: Fix Doxygen parsing of @var descriptions with $var names"
jenkins-bot [Fri, 6 Sep 2019 18:05:51 +0000 (18:05 +0000)]
Merge "docs: Fix Doxygen parsing of @var descriptions with $var names"

2 years agoMerge "docs: Factor out MWDoxygenFilter from mwdoc-filter.php with tests"
jenkins-bot [Fri, 6 Sep 2019 18:05:39 +0000 (18:05 +0000)]
Merge "docs: Factor out MWDoxygenFilter from mwdoc-filter.php with tests"

2 years agoMerge "Fix installation failure due to unexpected dbpath under CLI installation"
jenkins-bot [Fri, 6 Sep 2019 17:38:36 +0000 (17:38 +0000)]
Merge "Fix installation failure due to unexpected dbpath under CLI installation"

2 years agoMerge "Stop mangling $_GET and provide WebRequest::getQueryValuesOnly()"
jenkins-bot [Fri, 6 Sep 2019 17:38:26 +0000 (17:38 +0000)]
Merge "Stop mangling $_GET and provide WebRequest::getQueryValuesOnly()"

2 years agoMerge "mediawiki.util: Merge 'jquery.accessKeyLabel' into this module"
jenkins-bot [Fri, 6 Sep 2019 17:08:04 +0000 (17:08 +0000)]
Merge "mediawiki.util: Merge 'jquery.accessKeyLabel' into this module"

2 years agoMerge "docs: Remove GENERATE_MAN support from Doxyfile"
jenkins-bot [Fri, 6 Sep 2019 17:05:21 +0000 (17:05 +0000)]
Merge "docs: Remove GENERATE_MAN support from Doxyfile"

2 years agomediawiki.util: Merge 'jquery.accessKeyLabel' into this module
Timo Tijhof [Fri, 6 Sep 2019 15:26:12 +0000 (16:26 +0100)]
mediawiki.util: Merge 'jquery.accessKeyLabel' into this module

Bug: T218339
Change-Id: I7aff1cf5a9526ef54cad33f5333361dba0efb1db

2 years agoMerge "Improve various PHP method doc blocks"
jenkins-bot [Fri, 6 Sep 2019 15:36:20 +0000 (15:36 +0000)]
Merge "Improve various PHP method doc blocks"

2 years agoMerge "Unit tests: Whitelist global so LoggerFactory doesn't explode"
jenkins-bot [Fri, 6 Sep 2019 15:27:14 +0000 (15:27 +0000)]
Merge "Unit tests: Whitelist global so LoggerFactory doesn't explode"

2 years agodocs: Remove GENERATE_MAN support from Doxyfile
Timo Tijhof [Fri, 6 Sep 2019 15:06:11 +0000 (16:06 +0100)]
docs: Remove GENERATE_MAN support from Doxyfile

Also remove redundant sections from the config file that all
relate to features that are unconditionally disabled for us
and by default. They were all no-ops because the corresponding
"GENERATE_"- config is NO by default as well.

Per <http://www.doxygen.nl/manual/config.html>.

Bug: T232104
Change-Id: Ibd81f23922f1994be6579fcd8e1ece5e9f995905

2 years agoMerge "DifferenceEngine: show undo links for non-text content"
jenkins-bot [Fri, 6 Sep 2019 14:56:05 +0000 (14:56 +0000)]
Merge "DifferenceEngine: show undo links for non-text content"

2 years agoDifferenceEngine: show undo links for non-text content
daniel [Fri, 6 Sep 2019 13:58:31 +0000 (15:58 +0200)]
DifferenceEngine: show undo links for non-text content

In Ia94521b78 I introduced code that would suppress undo links in diffs
of non-textual content. However, extensions that define non-textual
content, such as Wikibase, may override action handles to provide undo
functionality. So my reasoning for removing these links was flawed.

Bug: T232214
Change-Id: I0316d8c0683b0782b9940e0e1e8f70d5bcb6b468

2 years agoMerge "Discover unit tests in "Unit" directory"
jenkins-bot [Fri, 6 Sep 2019 11:38:27 +0000 (11:38 +0000)]
Merge "Discover unit tests in "Unit" directory"

2 years agoMerge "Pass Title to IndexPager::buildPrevNextNavigation"
jenkins-bot [Fri, 6 Sep 2019 10:08:18 +0000 (10:08 +0000)]
Merge "Pass Title to IndexPager::buildPrevNextNavigation"

2 years agoMerge "Fix use of argument perfLogFilename in convertLinks.php"
jenkins-bot [Fri, 6 Sep 2019 10:04:38 +0000 (10:04 +0000)]
Merge "Fix use of argument perfLogFilename in convertLinks.php"

2 years agoUnit tests: Whitelist global so LoggerFactory doesn't explode
Kosta Harlan [Fri, 6 Sep 2019 09:43:39 +0000 (11:43 +0200)]
Unit tests: Whitelist global so LoggerFactory doesn't explode

Bug: T87781
Change-Id: I78ef16ac3b9efa7059905c44c234065aa68db680

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 6 Sep 2019 06:49:36 +0000 (08:49 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ib601edd7c66b532d6df30da858be0f7fe85b95c9

2 years agoMerge "rest: Use ParamValidator library, add BodyValidator"
jenkins-bot [Fri, 6 Sep 2019 04:56:06 +0000 (04:56 +0000)]
Merge "rest: Use ParamValidator library, add BodyValidator"

2 years agoMerge "mediawiki.util: Move to its own resources/src/ directory"
jenkins-bot [Fri, 6 Sep 2019 02:00:51 +0000 (02:00 +0000)]
Merge "mediawiki.util: Move to its own resources/src/ directory"

2 years agoMerge "lib/Message: Support MessageValue as a parameter"
jenkins-bot [Fri, 6 Sep 2019 01:51:54 +0000 (01:51 +0000)]
Merge "lib/Message: Support MessageValue as a parameter"

2 years agoMerge "libs/Message: Improve documentation"
jenkins-bot [Fri, 6 Sep 2019 01:45:24 +0000 (01:45 +0000)]
Merge "libs/Message: Improve documentation"

2 years agomediawiki.util: Move to its own resources/src/ directory
Timo Tijhof [Fri, 6 Sep 2019 00:32:38 +0000 (01:32 +0100)]
mediawiki.util: Move to its own resources/src/ directory

It only has one real file right now, but per T193826 modules that are bound
to an explicit directory should have already gotten its own directory.

Anyway, this'll make it easier to add other files in it in a separate

Change-Id: Iae7d270bf08d5a623b0a90c37c7cfc0c8e424a76

2 years agoPrevent all users from having a password in the blacklist
Reedy [Tue, 4 Dec 2018 08:31:11 +0000 (08:31 +0000)]
Prevent all users from having a password in the blacklist

Bug: T151425
Change-Id: I8d8f738176a47ccc5bd0a9eeac3a3385c3809088

2 years agoMerge "Enable $wgCookieSetOnAutoblock and $wgCookieSetOnIpBlock by default"
jenkins-bot [Thu, 5 Sep 2019 22:34:22 +0000 (22:34 +0000)]
Merge "Enable $wgCookieSetOnAutoblock and $wgCookieSetOnIpBlock by default"

2 years agoMerge "mediawiki.htmlform.checker: Remove use of deprecated jquery.throttle-debounce"
jenkins-bot [Thu, 5 Sep 2019 22:16:49 +0000 (22:16 +0000)]
Merge "mediawiki.htmlform.checker: Remove use of deprecated jquery.throttle-debounce"

2 years agoEnable $wgCookieSetOnAutoblock and $wgCookieSetOnIpBlock by default
Dayllan Maza [Thu, 5 Sep 2019 21:41:55 +0000 (17:41 -0400)]
Enable $wgCookieSetOnAutoblock and $wgCookieSetOnIpBlock by default

Bug: T191922
Change-Id: I339f9a23c7f19be97d0b0a1abf0242fdbb6ac891

2 years agomediawiki.htmlform.checker: Remove use of deprecated jquery.throttle-debounce
Timo Tijhof [Thu, 5 Sep 2019 21:14:16 +0000 (22:14 +0100)]
mediawiki.htmlform.checker: Remove use of deprecated jquery.throttle-debounce

Bug: T213426
Change-Id: I21874161dbe258c56376f3761e523dac543db8f4

2 years agoMerge "rcfilters: Use default styling for the overlay"
jenkins-bot [Thu, 5 Sep 2019 21:09:09 +0000 (21:09 +0000)]
Merge "rcfilters: Use default styling for the overlay"

2 years agoMerge "rdbms: expand on LoadBalancer ownership concept"
jenkins-bot [Thu, 5 Sep 2019 20:43:08 +0000 (20:43 +0000)]
Merge "rdbms: expand on LoadBalancer ownership concept"

2 years agorcfilters: Use default styling for the overlay
Bartosz Dziewoński [Thu, 5 Sep 2019 19:09:00 +0000 (21:09 +0200)]
rcfilters: Use default styling for the overlay

The class .oo-ui-defaultOverlay is used by OOUI, and all the skins
already define reasonable font-size and z-index for it, so we can
remove that here.

Keep the existing class .mw-rcfilters-ui-overlay because apparently
`right: 0; left: 0;` is required (that's weird…) and because Minerva
also wants to override it (I221f6c2d637c7d2a843bfc4a2f7cd9877e2a5b12).

Depends-On: I221f6c2d637c7d2a843bfc4a2f7cd9877e2a5b12
Change-Id: I672fdcebbdc586765de2c10f9a9a21796db57cc5

2 years agoMerge "Make some whitespace fixes to importImages maintenance script"
jenkins-bot [Thu, 5 Sep 2019 19:51:23 +0000 (19:51 +0000)]
Merge "Make some whitespace fixes to importImages maintenance script"

2 years agoMerge "Tests: Provide clearer error when config is accessed via unit test"
jenkins-bot [Thu, 5 Sep 2019 19:26:10 +0000 (19:26 +0000)]
Merge "Tests: Provide clearer error when config is accessed via unit test"

2 years agoMerge "Setup: Move wgActionPath logic to PathRouter"
jenkins-bot [Thu, 5 Sep 2019 19:17:28 +0000 (19:17 +0000)]
Merge "Setup: Move wgActionPath logic to PathRouter"

2 years agoMerge "Let Title accept READ_LATEST in $flags fields of methods"
jenkins-bot [Thu, 5 Sep 2019 19:17:18 +0000 (19:17 +0000)]
Merge "Let Title accept READ_LATEST in $flags fields of methods"

2 years agordbms: expand on LoadBalancer ownership concept
Aaron Schulz [Thu, 29 Aug 2019 04:05:10 +0000 (21:05 -0700)]
rdbms: expand on LoadBalancer ownership concept

Enforce this pattern for the remaining LoadBalancer methods.
Carry this over into Database::close() to decide how loud the
error handling should be.

In LBFactory, clean up ownership of newMainLB()/newExternalLB().
The should have a null owner if called from outside the class
since the LBFactory does not track nor care about them anymore
in that case. Disable newMainLB() for LBFactorySingle as it
makes no sense and was broken.

Also remove some redundant abstract LBFactory methods that
just duplciate ILBFactory.

Bug: T231443
Bug: T217819
Depends-On: I7ed5c799320430c196a9a8e81af901999e2de7d0
Change-Id: I90b30a79754cfcc290277d302052e60df4fbc649

2 years agoMerge "rdbms: suppress warnings during DatabaseMysqli::doQuery()"
jenkins-bot [Thu, 5 Sep 2019 18:57:29 +0000 (18:57 +0000)]
Merge "rdbms: suppress warnings during DatabaseMysqli::doQuery()"

2 years agoImprove various PHP method doc blocks
Daimona Eaytoy [Wed, 4 Sep 2019 08:17:08 +0000 (10:17 +0200)]
Improve various PHP method doc blocks

Follows-up 5eac6d131c2a77d0.

Change-Id: I92c9d482fd8693a16b3967e763a4eb40b963c562

2 years agoLet Title accept READ_LATEST in $flags fields of methods
Aaron Schulz [Thu, 4 Jul 2019 21:23:54 +0000 (14:23 -0700)]
Let Title accept READ_LATEST in $flags fields of methods

This is meant as a more standard way of loading fields for update
queries than GAID_FOR_UPDATE. That later indirectly uses a singleton,
LinkCache, and pollutes it with DB master loaded values that affect
run-of-the-mill callers that only want DB_REPLICA data. Some of them
might *need* DB_REPLICA data depending on how they construct cache
keys. For example, including page_latest in a page key is broken if
the value is sometimes populated with DB master fields from a newer

Note that Title::loadRestrictions() is now forwaring $flags.
Also add some missing anotations to avoid IDEA warnings.

Change-Id: I6b21016d38f45f0b44fa1caed9ca9c63db2cee57

2 years agodocs: Fix Doxygen parsing of @var descriptions with $var names
Timo Tijhof [Thu, 5 Sep 2019 18:21:59 +0000 (19:21 +0100)]
docs: Fix Doxygen parsing of @var descriptions with $var names

It was wrongly assuming that if the description started with
a dollar sign, that that first word would be the variable name
it was documenting, thus leading to some oddly documented
class members, such as from:

 > SimpleCallbacks.php:
 > /** @var (string|string[])[] $_GET/$_POST data */

Fix this by capturing the first word and actually comparing
it to the variable name we're about to document.

Keep the overall behaviour the same as before, that is,
if the description does indeed start with the correct variable
name, then don't modify it in any way (already covered by test).

Change-Id: I48ed20cf75f146a30d5976fcad3a72d5a9a4906b

2 years agordbms: suppress warnings during DatabaseMysqli::doQuery()
Aaron Schulz [Thu, 5 Sep 2019 18:22:31 +0000 (11:22 -0700)]
rdbms: suppress warnings during DatabaseMysqli::doQuery()

There is already logging and error handling via SPI and exceptions.
Having warnings just makes redundant log entries, some of which are
for minor things like recoverable disconnections.

Bug: T228092
Change-Id: I582b5e431c80cebeab177bacfb6445f8588e8cdb

2 years agoMerge "docs: Ignore .md from resources/lib in Doxyfile"
jenkins-bot [Thu, 5 Sep 2019 18:12:26 +0000 (18:12 +0000)]
Merge "docs: Ignore .md from resources/lib in Doxyfile"

2 years agoMerge "registration: Avoid redundant LBYL check in ExtensionRegistry::queue()"
jenkins-bot [Thu, 5 Sep 2019 18:07:25 +0000 (18:07 +0000)]
Merge "registration: Avoid redundant LBYL check in ExtensionRegistry::queue()"

2 years agoMerge "Allow partially blocked users to import images"
jenkins-bot [Thu, 5 Sep 2019 18:07:16 +0000 (18:07 +0000)]
Merge "Allow partially blocked users to import images"

2 years agoMerge "Simplify some curl_setopt() calls in MultiHttpClient"
jenkins-bot [Thu, 5 Sep 2019 18:07:08 +0000 (18:07 +0000)]
Merge "Simplify some curl_setopt() calls in MultiHttpClient"

2 years agoMerge "docs: Fix Doxygen warning for invalid `@bar` in WANObjectCache"
jenkins-bot [Thu, 5 Sep 2019 18:07:02 +0000 (18:07 +0000)]
Merge "docs: Fix Doxygen warning for invalid `@bar` in WANObjectCache"

2 years agoMerge "docs: Avoid Doxygen warnings for non-doc related tags"
jenkins-bot [Thu, 5 Sep 2019 17:57:13 +0000 (17:57 +0000)]
Merge "docs: Avoid Doxygen warnings for non-doc related tags"

2 years agoMake some whitespace fixes to importImages maintenance script
Thalia [Thu, 5 Sep 2019 17:38:22 +0000 (18:38 +0100)]
Make some whitespace fixes to importImages maintenance script

Change-Id: I0c3537393767e46642fbe48315618fe0980e4993

2 years agoMerge "docs: Add support for @inheritDoc (alias for @inheritdoc)"
jenkins-bot [Thu, 5 Sep 2019 17:34:39 +0000 (17:34 +0000)]
Merge "docs: Add support for @inheritDoc (alias for @inheritdoc)"

2 years agodocs: Factor out MWDoxygenFilter from mwdoc-filter.php with tests
Timo Tijhof [Thu, 5 Sep 2019 16:58:07 +0000 (17:58 +0100)]
docs: Factor out MWDoxygenFilter from mwdoc-filter.php with tests

Bug: T232104
Change-Id: I591f44678cff4adb8863ce5c6ce231a8d3e162d7

2 years agoSimplify some curl_setopt() calls in MultiHttpClient
Aaron Schulz [Thu, 5 Sep 2019 14:29:31 +0000 (07:29 -0700)]
Simplify some curl_setopt() calls in MultiHttpClient

Change-Id: I47532b71f3f3f04481b4f7d1e446c8f821587a34

2 years agoMerge "Setup: Move MWDebug logic to MWDebug.php"
jenkins-bot [Thu, 5 Sep 2019 16:58:08 +0000 (16:58 +0000)]
Merge "Setup: Move MWDebug logic to MWDebug.php"

2 years agodocs: Fix Doxygen warning for invalid `@bar` in WANObjectCache
Timo Tijhof [Thu, 5 Sep 2019 15:46:55 +0000 (16:46 +0100)]
docs: Fix Doxygen warning for invalid `@bar` in WANObjectCache

Also change a `@private` tag to `@internal` in ResourceLoaderFileModule
for consistency with other RL code.

Change-Id: I8c3a5aa36b643083c0b6d2f3c8d623f344b7c0be

2 years agoMerge "Remove redundant CURLOPT_SAFE_UPLOAD line from MultiHttpClient"
jenkins-bot [Thu, 5 Sep 2019 16:22:06 +0000 (16:22 +0000)]
Merge "Remove redundant CURLOPT_SAFE_UPLOAD line from MultiHttpClient"

2 years agodocs: Avoid Doxygen warnings for non-doc related tags
Timo Tijhof [Thu, 5 Sep 2019 15:28:29 +0000 (16:28 +0100)]
docs: Avoid Doxygen warnings for non-doc related tags

These are not relevant for Doxygen. Disable these so that they
are omitted from the description text, and also don't produce
warning noise in the CI builds.

Bug: T232104
Change-Id: Ieb89677097c60bbdd45c1c187d1c1048cc307e57

2 years agodocs: Add support for @inheritDoc (alias for @inheritdoc)
Timo Tijhof [Thu, 5 Sep 2019 15:22:16 +0000 (16:22 +0100)]
docs: Add support for @inheritDoc (alias for @inheritdoc)

Lots of methods are missing documentation for methods in favour
of an unhelpful description text containing "@inheritDocs", leading
to warnings in CI during the doc building stage:

> mediawiki/includes/resourceloader/ResourceLoaderLessVarFileModule.php:9:
> warning: Found unknown command '\inheritDoc'


> ◆ ResourceLoaderLessVarFileModule::getMessages ( )
> Description
>   @inheritDoc
> Reimplemented from ResourceLoaderFileModule.
> Definition at line 26 of file ResourceLoaderLessVarFileModule.php.


> ◆ ResourceLoaderLessVarFileModule::getMessages ( )
> Description
>   Gets list of message keys used by this module.
> Returns
>   array List of message keys
> Reimplemented from ResourceLoaderFileModule.
> Definition at line 26 of file ResourceLoaderLessVarFileModule.php.

Bug: T219001
Bug: T232104
Change-Id: I7f133c10acca084239a158c63c08b71e709404c3

2 years agodocs: Ignore .md from resources/lib in Doxyfile
Timo Tijhof [Thu, 5 Sep 2019 14:30:03 +0000 (15:30 +0100)]
docs: Ignore .md from resources/lib in Doxyfile

Follows-up b7c5acd41954, which started indexing .md files
anywhere in core. While these are harmless to analyse (they're
not going to find any meaningful doc blocks), it just adds
more noise to the file listing.

Bug: T232104
Change-Id: Ibd2010010872d42dc3d52139305c87fcfc547477

2 years agoRollback change_tag table for tests
Adam Wight [Thu, 5 Sep 2019 14:07:06 +0000 (16:07 +0200)]
Rollback change_tag table for tests

When a change tag row is written during a test, it links to content IDs which
may be reused in future tests.  To maintain test isolation, we should include
this table in the rollback for any tests that touch pages.

Bug: T227849
Change-Id: I98fe17e209f6c685ad87e52886a3526f35645d1e

2 years agoRemove redundant CURLOPT_SAFE_UPLOAD line from MultiHttpClient
Aaron Schulz [Thu, 5 Sep 2019 13:54:46 +0000 (06:54 -0700)]
Remove redundant CURLOPT_SAFE_UPLOAD line from MultiHttpClient

This is true by default since PHP 5.6.
See https://www.php.net/manual/en/function.curl-setopt.php.

Change-Id: I87ad4703d396efe1eef4dced55e0b0042031b73f

2 years agoTests: Provide clearer error when config is accessed via unit test
Kosta Harlan [Thu, 5 Sep 2019 07:14:28 +0000 (09:14 +0200)]
Tests: Provide clearer error when config is accessed via unit test

Bug: T231288
Change-Id: I67622f5ed5e9dc901f5b71a6a2f61cbebe51184b

2 years agoStop mangling $_GET and provide WebRequest::getQueryValuesOnly()
Tim Starling [Tue, 3 Sep 2019 00:25:19 +0000 (10:25 +1000)]
Stop mangling $_GET and provide WebRequest::getQueryValuesOnly()

I doubt there was ever a good reason for mangling $_GET to add the
title, this was just b/c for the sake of b/c. It was formerly used in
core but that was so long ago that I doubt there was any usage in
extensions at the time. Now there is one usage of $_GET['title'] in an
unmaintained extension, but it was only added in 2017.

Also I added WebRequest::getQueryValuesOnly() which is an interface to
the unmodified $_GET. The motivation is allowing OAuth to work with the
REST API, since OAuth needs an unmangled view of $_GET for signature
generation. The Action API gets around the problem with a special hack
in interpolateTitle(), disabling it for the Action API only.

A review of callers of getQueryValues() suggests that many would
benefit from using getQueryValuesOnly() instead. But I only changed it for
callers in api.php and thumb.php since the effect of the change there is
certainly beneficial, whereas callers under index.php may possibly be using
the path parameters to construct self-links.

Rest\RequestFromGlobals uses $_GET directly, which means that this
change causes it to not return PathRouter matches as GET parameters

Change-Id: Ic469577fae17c0b1ac69466df7bc9f03e61c74e3

2 years agoMerge "docs: Remove unused Doxygen custom commands"
jenkins-bot [Thu, 5 Sep 2019 01:22:44 +0000 (01:22 +0000)]
Merge "docs: Remove unused Doxygen custom commands"

2 years agoMerge "resources: Upgrade OOjs from v2.2.2 to v3.0.0"
jenkins-bot [Thu, 5 Sep 2019 01:22:38 +0000 (01:22 +0000)]
Merge "resources: Upgrade OOjs from v2.2.2 to v3.0.0"

2 years agoMerge "docs: Convert doxygen_first_page.php to proper Markdown"
jenkins-bot [Wed, 4 Sep 2019 23:55:11 +0000 (23:55 +0000)]
Merge "docs: Convert doxygen_first_page.php to proper Markdown"

2 years agoMerge "docs: Remove unused PERL_PATH and unused file patterns from Doxyfile"
jenkins-bot [Wed, 4 Sep 2019 23:18:53 +0000 (23:18 +0000)]
Merge "docs: Remove unused PERL_PATH and unused file patterns from Doxyfile"

2 years agoMerge "Update OOUI to v0.34.0"
jenkins-bot [Wed, 4 Sep 2019 23:05:53 +0000 (23:05 +0000)]
Merge "Update OOUI to v0.34.0"

2 years agodocs: Remove unused Doxygen custom commands
Timo Tijhof [Wed, 4 Sep 2019 22:42:27 +0000 (23:42 +0100)]
docs: Remove unused Doxygen custom commands

These have no matches in this repo: `@arrayof`, `@null`, `@boolean`,
`@bool`, `@integer`, `@int`, `@string`, `@str`, `@mixed`, `@public`.

Change-Id: If95ffb679df88656f059e8d94def8aa25459ccbe

2 years agodocs: Convert doxygen_first_page.php to proper Markdown
Timo Tijhof [Wed, 4 Sep 2019 22:19:55 +0000 (23:19 +0100)]
docs: Convert doxygen_first_page.php to proper Markdown

Doxygen has native support for indexing of Markdown pages.
It basically parses them the same way it parses the uglier
methodology of creating a PHP file containing a the markdown
text in a large comment that would start with `@page` or `@mainpage`.

* http://doxygen.nl/manual/commands.html#cmdpage
* http://doxygen.nl/manual/commands.html#cmdmainpage
* http://doxygen.nl/manual/markdown.html#md_page_header

The internal reference name and page title (comparable to the string
passed to `@mainpage` or `@page`) are by default derived from the
file name (without suffix).

The internal reference name (for use in cross-page links) can also
be overidden with an `{#something}` annotation in the first heading.

When using the annotation `{#mainpage}` it changes the page type
from a regular `@page` to the `@mainpage`.

Change-Id: I0c25a49088825744773c4d87dde5688894b2004e

2 years agoresources: Upgrade OOjs from v2.2.2 to v3.0.0
James D. Forrester [Wed, 28 Aug 2019 15:53:23 +0000 (08:53 -0700)]
resources: Upgrade OOjs from v2.2.2 to v3.0.0

Change-Id: I2eaf300015b2954479f5d1d0711ec934a9aa294b

2 years agodocs: Remove unused PERL_PATH and unused file patterns from Doxyfile
Timo Tijhof [Wed, 4 Sep 2019 21:46:31 +0000 (22:46 +0100)]
docs: Remove unused PERL_PATH and unused file patterns from Doxyfile

* File patterns - Keep only ".php" and ".inc". The other file types
  either don't exist in this repo, or exist but have 0 parseable doc
  blocks for Doxygen to find. Also remove README, it leads to various
  pointless attempts for Doxygen to parse files by this name without
  any documentable entity in them. Such as;

  > mediawiki/includes/jobqueue/README:82: warning: Reached end of file
  > while still inside a nested comment. Nesting level 1.

* Remove 'PERL_PATH'. This has been unused since Doxygen 1.8.0,
  the last build on doc.wikimedia.org from Jenkins uses Doxygen 1.8.13.
  As of Doxygen 1.8.16 a deprecation warning was also added,

Change-Id: I99bd80f9cf7bae8d37caf0b9325bd30a16020497

2 years agoMerge "resourceloader: Drop support for low Suhosin 'max_value_length' values"
jenkins-bot [Wed, 4 Sep 2019 21:53:44 +0000 (21:53 +0000)]
Merge "resourceloader: Drop support for low Suhosin 'max_value_length' values"

2 years agoMerge "localisation: Release data from memory in LCStoreStaticArray::finishWrite"
jenkins-bot [Wed, 4 Sep 2019 21:53:34 +0000 (21:53 +0000)]
Merge "localisation: Release data from memory in LCStoreStaticArray::finishWrite"

2 years agoMerge "rdbms: migrate DatabaseMysqlBase::getServerVersion() to using the local server...
jenkins-bot [Wed, 4 Sep 2019 21:28:58 +0000 (21:28 +0000)]
Merge "rdbms: migrate DatabaseMysqlBase::getServerVersion() to using the local server cache"

2 years agoresourceloader: Drop support for low Suhosin 'max_value_length' values
Timo Tijhof [Sat, 31 Aug 2019 22:30:22 +0000 (23:30 +0100)]
resourceloader: Drop support for low Suhosin 'max_value_length' values

Move the default of 2000 to DefaultSettings.php, and promote
the installer warning to a hard value.

Recommend that the setting be disabled, or increased to 5000.

Change-Id: Ifb0aadf8b52fd2d5c2a32f55e38eaa9c2600dfb5

2 years agoMerge "rdbms: assorted LBFactoryMulti/LBFactorySimple cleanups"
jenkins-bot [Wed, 4 Sep 2019 20:47:14 +0000 (20:47 +0000)]
Merge "rdbms: assorted LBFactoryMulti/LBFactorySimple cleanups"

2 years agoMerge "resourceloader: Document encodeJsonForScript() type as mixed"
jenkins-bot [Wed, 4 Sep 2019 20:47:04 +0000 (20:47 +0000)]
Merge "resourceloader: Document encodeJsonForScript() type as mixed"

2 years agoMerge "rdbms: cleanup visibility of Database::makeSelectOptions()"
jenkins-bot [Wed, 4 Sep 2019 20:40:59 +0000 (20:40 +0000)]
Merge "rdbms: cleanup visibility of Database::makeSelectOptions()"

2 years agolocalisation: Release data from memory in LCStoreStaticArray::finishWrite
Timo Tijhof [Wed, 4 Sep 2019 20:35:10 +0000 (21:35 +0100)]
localisation: Release data from memory in LCStoreStaticArray::finishWrite

With this change, the memory behaviour of LCStoreStaticArray
matches the other LCStore implementations. Specifically, that when
mass-rebuilding LocalisationCache entries for all language codes,
the computed data should be released from memory after
calling LCStore::finishWrite().

This doesn't affect user-facing web requests, even in the case
of stock MW where every once in a while a user request can lazy-
regenerate the LCStore, there is a process-cache in front of LCStore
in the LocalisationCache class.

The rebuildLocalisationCache.php clears that via
LocalisationCacheBulkLoad::unload(), but due to LCStoreStaticArray
internally holding on to the data, it was still leaking.

The leak was found by @Nikerabbit as part of testing for T218207.

To test this, amend rebuildLocalisationCache.php and add the
following on line 161, as the first line of the doRebuild/foreach/if

  echo "[$code-start-mem] " . round(memory_get_usage(true)/1024/1024, 2) . " MB\n";

If you then have LocalSettings.php configured like so:

  $wgCacheDirectory = $wgTmpDirectory;
  $wgLocalisationCacheConf['store'] = 'array';

Then before this patch, running rebuildLocalisationCache.php,
shows memory starting at 12 MB and growing 2-3 MB for every language
until the very end, closing with 970 MB memory use.

After this patch, it starts at 12 MB and stops growing at 32 MB.

When configuring as `['store'] = 'files'`, which uses LCStoreCDB,
the memory starts at 12 MB and stops growing at 44 MB, both before
and after this patch.

Bug: T218207
Change-Id: I0d215efee5b31766776a068b16811d52f9879312

2 years agoSetup: Move wgActionPath logic to PathRouter
Timo Tijhof [Sat, 31 Aug 2019 22:05:50 +0000 (23:05 +0100)]
Setup: Move wgActionPath logic to PathRouter

This is only relevant when processing page views or when constructing
Title urls with an 'action' query. Pretty important stuff, and worth
optimising for if we had to choose, but we can defer it in this case
without slowing it down, which is better for everything else.

It also means we don't mutate configuration (beyond setting whole values
as dynamic defaults), which seems desirable, and makes the overall behaviour
easier to test. Handling absence of 'view' should be PathRouter's
responsibility, not Setup.

Bug: T189966
Change-Id: I9c1eea2dcea74be0e283eb2b175268315ced1793

2 years agordbms: assorted LBFactoryMulti/LBFactorySimple cleanups
Aaron Schulz [Tue, 23 Jul 2019 00:07:11 +0000 (17:07 -0700)]
rdbms: assorted LBFactoryMulti/LBFactorySimple cleanups

Ignore "groupLoads" in "serverTemplate" for consistency with "load".
These server config map values should come from "groupLoadsBySection"
and "sectionLoads" only.

Simplify LBFactoryMulti::makeServerArray() to not bother setting values
that LoadBalancer already sets ('flags', 'master', 'replica').

Move down private methods and clean up a various code comments.

Change-Id: I0fe7f913a37236380127bef8d02768a9d1209596

2 years agoresourceloader: Document encodeJsonForScript() type as mixed
Umherirrender [Wed, 4 Sep 2019 17:13:11 +0000 (19:13 +0200)]
resourceloader: Document encodeJsonForScript() type as mixed

Objects passed to it since 23d066618def55361aa32a60ef9
json_encode allows mixed type, so use it also here.

Change-Id: I0897a6a144fd1c90b3ead205cedf21c19682b9df

2 years agoUpdate OOUI to v0.34.0
Volker E [Wed, 4 Sep 2019 19:42:13 +0000 (12:42 -0700)]
Update OOUI to v0.34.0

Release notes:

Bug: T35242
Bug: T225669
Bug: T226872
Bug: T226872
Bug: T230160
Depends-On: Ic50014955550f6c310155f38834ad03cbd77af20
Change-Id: I1520084a0d546279180320d2b03d390be6689d05

2 years agoMerge "filerepo: Use @method LocalRepo::newFile() to document the return type"
jenkins-bot [Wed, 4 Sep 2019 19:40:00 +0000 (19:40 +0000)]
Merge "filerepo: Use @method LocalRepo::newFile() to document the return type"

2 years agoMerge "build: Exclude MemcachedClient from phan"
jenkins-bot [Wed, 4 Sep 2019 19:02:20 +0000 (19:02 +0000)]
Merge "build: Exclude MemcachedClient from phan"

2 years agoPass Title to IndexPager::buildPrevNextNavigation
Umherirrender [Wed, 4 Sep 2019 18:25:59 +0000 (20:25 +0200)]
Pass Title to IndexPager::buildPrevNextNavigation

LinkTarget was changed to Title in
Change-Id: Iba1fe984ecfc08737131a3827198a5b7018d7ec0

2 years agobuild: Exclude MemcachedClient from phan
Umherirrender [Wed, 4 Sep 2019 18:23:25 +0000 (20:23 +0200)]
build: Exclude MemcachedClient from phan

Change-Id: I46557802d10592a53e4ee4f6126a4aeed3f714a4

2 years agoMerge "Introduce RevisionStore::newRevisionsFromBatch"
jenkins-bot [Wed, 4 Sep 2019 18:13:34 +0000 (18:13 +0000)]
Merge "Introduce RevisionStore::newRevisionsFromBatch"

2 years agofilerepo: Use @method LocalRepo::newFile() to document the return type
Aaron Schulz [Thu, 29 Aug 2019 23:03:43 +0000 (16:03 -0700)]
filerepo: Use @method LocalRepo::newFile() to document the return type

This avoids PhpStorm IDE warnings

Change-Id: I521aa1b1243ceabd40e7da18bf73ab95af7039cc

2 years agoMerge "filebackend: improve internal use of FileBackend constants"
jenkins-bot [Wed, 4 Sep 2019 17:39:27 +0000 (17:39 +0000)]
Merge "filebackend: improve internal use of FileBackend constants"

2 years agoMerge "Add NS_MAIN to NamespaceInfo::$canonicalNames"
jenkins-bot [Wed, 4 Sep 2019 17:03:24 +0000 (17:03 +0000)]
Merge "Add NS_MAIN to NamespaceInfo::$canonicalNames"

2 years agoMerge "build: Update wikimedia/ip-set from 2.0.1 to 2.1.0"
jenkins-bot [Wed, 4 Sep 2019 17:03:17 +0000 (17:03 +0000)]
Merge "build: Update wikimedia/ip-set from 2.0.1 to 2.1.0"