lhc/web/wiklou.git
7 years agoMerge "RestbaseVirtualRESTService: Support production URL layout"
jenkins-bot [Thu, 25 Aug 2016 15:04:33 +0000 (15:04 +0000)]
Merge "RestbaseVirtualRESTService: Support production URL layout"

7 years agoMerge "Remove redundant UNIQUE from rev_page_id"
jenkins-bot [Thu, 25 Aug 2016 07:23:34 +0000 (07:23 +0000)]
Merge "Remove redundant UNIQUE from rev_page_id"

7 years agoRemove redundant UNIQUE from rev_page_id
Aaron Schulz [Mon, 11 Apr 2016 21:01:43 +0000 (14:01 -0700)]
Remove redundant UNIQUE from rev_page_id

The PRIMARY KEY is rev_id, so this is a waste and
makes the index slower to maintain (e.g. no change
buffering).

Bug: T142725
Change-Id: I63f817656ff5e62aa27caf607d70353cc99eb349

7 years agoMerge "PreprocessorTest: test both implementations"
jenkins-bot [Thu, 25 Aug 2016 03:54:58 +0000 (03:54 +0000)]
Merge "PreprocessorTest: test both implementations"

7 years agoPreprocessorTest: test both implementations
Tim Starling [Thu, 25 Aug 2016 03:17:13 +0000 (13:17 +1000)]
PreprocessorTest: test both implementations

* Instead of only testing the configured preprocessor, test each in turn.
* Fix a test error when testing Preprocessor_Hash by removing <equals>
  tags -- only Preprocessor_Hash emits them, but they have no effect on
  the expansion.

Change-Id: I596f6b66fc636b767c447af3450556bfebe28241

7 years agoMerge "Cleanups to SqlBagOStuff"
jenkins-bot [Thu, 25 Aug 2016 03:04:29 +0000 (03:04 +0000)]
Merge "Cleanups to SqlBagOStuff"

7 years agoMerge "Optimize ChronologyProtector writes for multi-DC case"
jenkins-bot [Thu, 25 Aug 2016 03:00:39 +0000 (03:00 +0000)]
Merge "Optimize ChronologyProtector writes for multi-DC case"

7 years agoMerge "Fix AuthManagerSpecialPage submit button logic"
jenkins-bot [Thu, 25 Aug 2016 02:59:09 +0000 (02:59 +0000)]
Merge "Fix AuthManagerSpecialPage submit button logic"

7 years agoFix AuthManagerSpecialPage submit button logic
Gergő Tisza [Thu, 25 Aug 2016 02:24:51 +0000 (19:24 -0700)]
Fix AuthManagerSpecialPage submit button logic

Bug: T143840
Change-Id: I7fe442f5044c3dce27f89d83b8003dc6e4170296

7 years agoCleanups to SqlBagOStuff
Aaron Schulz [Wed, 24 Aug 2016 21:02:15 +0000 (14:02 -0700)]
Cleanups to SqlBagOStuff

* Keep track of the custom LoadBalancer when it makes one.
* Use the custom LoadBalancer to wait for slaves if one
  was used, rather than the main singleton.
* Only wait on the slaves in the LoadBalancer if the
  main DBs are being used.

Change-Id: I11de814306c44f27e0c33b08b5921c0fd4cdc24f

7 years agoMerge "resourceloader: Improve coverage in ResourceLoaderTest.php"
jenkins-bot [Thu, 25 Aug 2016 02:13:06 +0000 (02:13 +0000)]
Merge "resourceloader: Improve coverage in ResourceLoaderTest.php"

7 years agoresourceloader: Improve coverage in ResourceLoaderTest.php
Timo Tijhof [Thu, 25 Aug 2016 01:50:30 +0000 (18:50 -0700)]
resourceloader: Improve coverage in ResourceLoaderTest.php

* Fix signature of makeLoaderSourcesScript() to match
  the change in behaviour since e103ba265.

* Consistently order providers before the test.

* Simplify testRegisterValid() and remove needless @depends.

* Remove unused private method stripNoflip().

Coverage:

* Expand test coverage for register().

* Add tests for getModuleNames().

* Add tests for getModule().

* Expand test coverage for addSource().
  (case of invalid array)

* Expand test coverage for makeLoaderImplementScript().
  (case of unwrapped user script, and case of invalid scripts)

* Add tests for makeLoaderSourcesScript().

Change-Id: Ibca3e486fcd3664f171f135327a0f340ee6da9ee

7 years agoClear SiteStats process cache after DB update
Tim Starling [Thu, 25 Aug 2016 01:37:38 +0000 (11:37 +1000)]
Clear SiteStats process cache after DB update

This fixes a phpunit test error, wherein {{NUMBEROFFILES}} would give
the number of files in the host wiki, not in the temporary database,
when Scribunto was installed, due to a Scribunto phpunit data provider
calling SiteStats::pages().

Change-Id: Ic0d021a72addaa2a13a6b94fd34dccc423de3a8f

7 years agoMerge "API: Log when too many values are passed for a multi-valued parameter"
jenkins-bot [Wed, 24 Aug 2016 23:34:04 +0000 (23:34 +0000)]
Merge "API: Log when too many values are passed for a multi-valued parameter"

7 years agoMerge "Add LBFactory::beginMasterChanges() for doing DBO_TRX rounds"
jenkins-bot [Wed, 24 Aug 2016 20:21:14 +0000 (20:21 +0000)]
Merge "Add LBFactory::beginMasterChanges() for doing DBO_TRX rounds"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 24 Aug 2016 19:55:28 +0000 (21:55 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: If5f82b2d32ab93592dd54cf21cb5d36c52315936

7 years agoOptimize ChronologyProtector writes for multi-DC case
Aaron Schulz [Mon, 22 Aug 2016 02:14:54 +0000 (19:14 -0700)]
Optimize ChronologyProtector writes for multi-DC case

Change-Id: Iecd218043814ac0963c67b16d043e697a6933741

7 years agoMerge "Call ssl_set() in DatabaseMysqli if DBO_SSL is set"
jenkins-bot [Wed, 24 Aug 2016 19:46:02 +0000 (19:46 +0000)]
Merge "Call ssl_set() in DatabaseMysqli if DBO_SSL is set"

7 years agoMerge "Move Article checkLastModified() up to MediaWiki::performRequest"
jenkins-bot [Wed, 24 Aug 2016 18:55:15 +0000 (18:55 +0000)]
Merge "Move Article checkLastModified() up to MediaWiki::performRequest"

7 years agoMerge "Make Special:CreateAccount respect ?returnto parameter"
jenkins-bot [Wed, 24 Aug 2016 17:55:41 +0000 (17:55 +0000)]
Merge "Make Special:CreateAccount respect ?returnto parameter"

7 years agoMake Special:CreateAccount respect ?returnto parameter
Aaron Schulz [Sat, 20 Aug 2016 22:43:57 +0000 (15:43 -0700)]
Make Special:CreateAccount respect ?returnto parameter

Change-Id: I074ee184ad1fec84ef2e93eea8397d932e96e0cd

7 years agoMerge "Sync up with Parsoid parserTests."
jenkins-bot [Wed, 24 Aug 2016 17:14:35 +0000 (17:14 +0000)]
Merge "Sync up with Parsoid parserTests."

7 years agoSync up with Parsoid parserTests.
Subramanya Sastry [Wed, 24 Aug 2016 16:40:58 +0000 (11:40 -0500)]
Sync up with Parsoid parserTests.

This now aligns with Parsoid commit 47e085881094299aa652320aba1dfb5b99855690

Change-Id: I2da551dc9d8568c56decbabcad8bcf8d57680b47

7 years agoAPI: Log when too many values are passed for a multi-valued parameter
Brad Jorsch [Wed, 24 Aug 2016 16:10:05 +0000 (12:10 -0400)]
API: Log when too many values are passed for a multi-valued parameter

Currently the API just throws away the excess values, no continuation.
This is probably not the best behavior. There is a warning, but clients
are notorious for just ignoring warnings.

We could improve the situation:
* Turn it into an error.
* Turn it into an error for most cases, but allow some to override if
  necessary.
* Allow some cases to make it an error, while keeping it a warning by
  default.

Before we can decide which option to pick, we should get an idea of how
often this is being hit and which things it's being hit for.

Bug: T41936
Change-Id: I52926f410c30d1cd7e7fcd86465b16519fb5cbd2

7 years agoHTMLFormField: Move 'flatlist' handling to fields that use it and document
Bartosz Dziewoński [Mon, 8 Aug 2016 20:55:25 +0000 (22:55 +0200)]
HTMLFormField: Move 'flatlist' handling to fields that use it and document

Change-Id: I5dc6ad71880a741c41757bc64d236971edfbabfa

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 24 Aug 2016 07:51:59 +0000 (09:51 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ib1a471eb8e9692fab1e5d66cf6711388ea2e20cc

7 years agoMove Article checkLastModified() up to MediaWiki::performRequest
Aaron Schulz [Wed, 24 Aug 2016 06:53:31 +0000 (23:53 -0700)]
Move Article checkLastModified() up to MediaWiki::performRequest

This lets revalidations via IMS headers run a bit faster.

Change-Id: I1f61086dea4c6bc460f6249ed7fda78316117a8d

7 years agoMerge "VirtualRESTServiceClient management cleanups"
jenkins-bot [Wed, 24 Aug 2016 03:30:55 +0000 (03:30 +0000)]
Merge "VirtualRESTServiceClient management cleanups"

7 years agoMerge "Avoid INSERT..SELECT in LocalFileDeleteBatch"
jenkins-bot [Wed, 24 Aug 2016 03:25:26 +0000 (03:25 +0000)]
Merge "Avoid INSERT..SELECT in LocalFileDeleteBatch"

7 years agoVirtualRESTServiceClient management cleanups
Aaron Schulz [Mon, 22 Aug 2016 00:14:57 +0000 (17:14 -0700)]
VirtualRESTServiceClient management cleanups

* Add getVirtualRESTServiceClient() to MediaWikiServices.
* Support auto-mounting services that are usable by the
  main MediaWikiServices instance.
* Support lazy-loading in mount(), where only class/args
  are set until the service is needed. This avoids excess
  overhead.

Change-Id: I5c22be59664b3f5716c957e2c3d7c8e70d5fdc6c

7 years agoMerge "A few more DBLockManager fixes and cleanups"
jenkins-bot [Wed, 24 Aug 2016 03:15:31 +0000 (03:15 +0000)]
Merge "A few more DBLockManager fixes and cleanups"

7 years agoMerge "Remove some unused hooks from hooks.txt"
jenkins-bot [Wed, 24 Aug 2016 02:53:59 +0000 (02:53 +0000)]
Merge "Remove some unused hooks from hooks.txt"

7 years agoRemove some unused hooks from hooks.txt
Gergő Tisza [Wed, 24 Aug 2016 02:35:17 +0000 (19:35 -0700)]
Remove some unused hooks from hooks.txt

These were removed in I2b2c9693a.

Change-Id: I31c2ff3ce9d734fab94695bd3e8eb85cbf65803f

7 years agoEditPage: Use context instead of globals (4/4)
Kunal Mehta [Wed, 24 Aug 2016 01:55:56 +0000 (18:55 -0700)]
EditPage: Use context instead of globals (4/4)

Change-Id: Ie84bceb0ac0940a7d14b9790eb8ab81321b20629

7 years agoEditPage: Use context instead of globals (3/4)
Kunal Mehta [Wed, 24 Aug 2016 01:39:38 +0000 (18:39 -0700)]
EditPage: Use context instead of globals (3/4)

Change-Id: Id4f905c8db35d5c64375f55e2040d40b04f18dee

7 years agoEditPage: Use context instead of globals (2/4)
Kunal Mehta [Wed, 24 Aug 2016 01:23:20 +0000 (18:23 -0700)]
EditPage: Use context instead of globals (2/4)

Change-Id: I3b727fa5cb42ca2a7abf1a54fe4f2b4996f5150c

7 years agoEditPage: Use context instead of globals (1/4)
Kunal Mehta [Wed, 24 Aug 2016 00:56:38 +0000 (17:56 -0700)]
EditPage: Use context instead of globals (1/4)

Change-Id: Ie4e9c492679a75d753b69fb09f510564b9e7f0a8

7 years agoEditPage: Fix some doc blocks
Kunal Mehta [Wed, 24 Aug 2016 00:48:55 +0000 (17:48 -0700)]
EditPage: Fix some doc blocks

Change-Id: I0399df658b3b9c000b72dacbdc4ea18678a32db4

7 years agoEditPage: Add getContext() function
Kunal Mehta [Wed, 24 Aug 2016 00:48:43 +0000 (17:48 -0700)]
EditPage: Add getContext() function

EditPage already has access to a IContextSource object via
$this->mArticle->getContext(), but no code ever uses it. Add a
$this->getContext() helper function and $this->context member variable
so developers are aware that RequestContext is available and should be
used instead of globals. This is the first step to de-globalifying
EditPage.

Change-Id: I17130bdaf214e9bbe0577a0ee5564ca4760c99e1

7 years agoAdd LBFactory::beginMasterChanges() for doing DBO_TRX rounds
Aaron Schulz [Mon, 22 Aug 2016 05:35:12 +0000 (22:35 -0700)]
Add LBFactory::beginMasterChanges() for doing DBO_TRX rounds

This is in intended to replace the DataUpdate transaction round logic.
It could also be useful for doing transaction rounds in maintenance
scripts.

Also renamed $db => $conn in a few LB methods for consistency.

Change-Id: If21c2ba5e8bac48c250b96137279e7edaa8289f7

7 years agoMerge "EditPage: Allow the 'save' button's label to be 'publish' for public wikis"
jenkins-bot [Wed, 24 Aug 2016 00:17:38 +0000 (00:17 +0000)]
Merge "EditPage: Allow the 'save' button's label to be 'publish' for public wikis"

7 years agoMerge "EditPage: Show a different label for the button on create vs. modify"
jenkins-bot [Wed, 24 Aug 2016 00:14:38 +0000 (00:14 +0000)]
Merge "EditPage: Show a different label for the button on create vs. modify"

7 years agoMerge "HTMLMultiSelectField: Add 'dropdown' option for 'mw-chosen' behavior and document"
Krinkle [Tue, 23 Aug 2016 22:16:27 +0000 (22:16 +0000)]
Merge "HTMLMultiSelectField: Add 'dropdown' option for 'mw-chosen' behavior and document"

7 years agoMerge "Upgrade justinrainbow/json-schema to ~3.0"
jenkins-bot [Tue, 23 Aug 2016 21:33:56 +0000 (21:33 +0000)]
Merge "Upgrade justinrainbow/json-schema to ~3.0"

7 years agoUpgrade justinrainbow/json-schema to ~3.0
Florian Schmidt [Mon, 15 Aug 2016 17:36:00 +0000 (19:36 +0200)]
Upgrade justinrainbow/json-schema to ~3.0

The release between 1.6.1 and 3.0.0 has a huge amount of code
maintenance changes, as well as internal optimization and some
"visible" changes (as well as the one mentioned in the linked
task).

However, it's a version jump over 2 major versions, which is,
by it's definition a major change ;). Nonetheless, the (for us)
important api has changed marginally: Instead of using the
JsonSchema\Uri\UriRetriever class to retrieve the schema, we now use
the $ref keyword to reference the json schema file (which also is
an internal optimization). In this way, we let the json-schema library
decide, how to resolve a ref (and the schema) instead of relying
on the UriRetriever api to be public and stable.

The versions also include various bug fixes (which, as far as I know,
doesn't apply to us).

I tested this change with various combinations of valid and invalid
extension.json schemas (version 2 as well as version 3). Given that
there were no major changes to the schema interpretation itself, and
the good test coverage of the library, there shouldn't be a high risk
because of this change.

The full list of changes can be found at:
https://github.com/justinrainbow/json-schema/compare/1.6.1...3.0.0

as well as the changelogs of the single versions:
https://github.com/justinrainbow/json-schema/releases

Bug: T141281
Depends-On: I5687286da9f7fa2bb2b84699fa43ab3c2547fe03
Change-Id: Ie37e2ebc48684783abf8d99d2f775ee6a5988da7

7 years agoCloneDatabase: Simplify callback structure
Chad Horohoe [Tue, 23 Aug 2016 19:16:01 +0000 (12:16 -0700)]
CloneDatabase: Simplify callback structure

Change-Id: I4d5184fd7417e61e9a111bd414f8c62539229ef9

7 years agoImplement NumericUppercaseCollation
Bartosz Dziewoński [Wed, 27 Jul 2016 14:43:01 +0000 (16:43 +0200)]
Implement NumericUppercaseCollation

This collation orders text with numbers "naturally", so that
'Foo 1' < 'Foo 2' < 'Foo 12'.

Note that this only works in terms of sequences of digits, and the
behavior for decimal fractions or pretty-formatted numbers may be
unexpected.

This is only expected to work mostly correctly for English-language
text. Consider it a proof of concept. You probably want to use
an UCA collation with '-u-kn' suffix rather than this.

Bug: T8948
Change-Id: Ie268f2d92c5c75d0aaecf54ede2bdda1af3b309d

7 years agoMerge "content: Refactor normalization of line endings code"
jenkins-bot [Tue, 23 Aug 2016 18:33:34 +0000 (18:33 +0000)]
Merge "content: Refactor normalization of line endings code"

7 years agocontent: Refactor normalization of line endings code
Kunal Mehta [Tue, 16 Aug 2016 21:58:15 +0000 (14:58 -0700)]
content: Refactor normalization of line endings code

The code that normalizes line endings ("\r\n" and "\r" to "\n") and
trims trailing whitespace is buried in Parser::preSaveTransform(), and
was duplicated to TextContent in 96b6afb31dfcff, as non-wikitext content
models should still be normalizing line endings.

This splits the duplicated code into
TextContent::normalizeLineEndings(), and utilize it in the Parser.
Additionally, expand the documentation of
TextContent::preSaveTransform() to document that subclasses should make
sure they normalize line endings during the PST stage.

And remove a useless rtrim() call from WikitextContent that did nothing.

Change-Id: I9094c671d4bbd23d75436f8f1d682d6dd6e6d2fc

7 years agoMerge "Avoid INSERT..SELECT in doArticleDeleteReal()"
jenkins-bot [Tue, 23 Aug 2016 18:09:35 +0000 (18:09 +0000)]
Merge "Avoid INSERT..SELECT in doArticleDeleteReal()"

7 years agoRemove commit() calls from JobQueueDB
Aaron Schulz [Tue, 23 Aug 2016 05:23:58 +0000 (22:23 -0700)]
Remove commit() calls from JobQueueDB

These are not safe for the common case where the local DB
handle is used for the queue (and other table writes).

Change-Id: Ic24a05c18bf31e49bf7e9a3c058deb5d35271511

7 years agoAvoid INSERT..SELECT in LocalFileDeleteBatch
Aaron Schulz [Tue, 23 Aug 2016 17:10:48 +0000 (10:10 -0700)]
Avoid INSERT..SELECT in LocalFileDeleteBatch

That construct has poor locking characteristics in terms of
auto-inc columns as well as not allowing such inserts concurrently
for statement-based replication. Also, the INSERT..SELECT did not
have an ORDER BY, which could lead to fa_id drift with statement
based replication.

Change-Id: Iaacb75d9931b4cd24b70bdcaadd0e3979c7e9c90

7 years agoAvoid INSERT..SELECT in doArticleDeleteReal()
Aaron Schulz [Fri, 19 Aug 2016 09:06:11 +0000 (02:06 -0700)]
Avoid INSERT..SELECT in doArticleDeleteReal()

That construct has poor locking characteristics in terms of
auto-inc columns as well as not allowing such inserts concurrently
for statement-based replication. Also, the INSERT..SELECT did not
have an ORDER BY, which could lead to ar_id drift with statement
based replication.

Change-Id: I9396869e474bc082fa6161b60afa3a5247df773b

7 years agoMerge "Tell users that js/css subpages are public"
Dpatrick [Tue, 23 Aug 2016 16:38:53 +0000 (16:38 +0000)]
Merge "Tell users that js/css subpages are public"

7 years agoMerge "Reduce problems caused by $wgRunJobsAsync"
jenkins-bot [Tue, 23 Aug 2016 16:25:23 +0000 (16:25 +0000)]
Merge "Reduce problems caused by $wgRunJobsAsync"

7 years agoFix broken lockmanager-fail-releaselock status messages
Aaron Schulz [Tue, 23 Aug 2016 15:57:28 +0000 (08:57 -0700)]
Fix broken lockmanager-fail-releaselock status messages

Change-Id: Icb0cfa6e38bc81c35430023afe50dd94ef3b2013

7 years agoMerge "Expose form field objects in HTMLForm"
jenkins-bot [Tue, 23 Aug 2016 15:52:26 +0000 (15:52 +0000)]
Merge "Expose form field objects in HTMLForm"

7 years agoMerge "Make login/signup footer available to AuthChangeFormFields hook"
jenkins-bot [Tue, 23 Aug 2016 15:25:13 +0000 (15:25 +0000)]
Merge "Make login/signup footer available to AuthChangeFormFields hook"

7 years agoMerge "Improve default behavior for HTMLForm::canDisplayErrors"
jenkins-bot [Tue, 23 Aug 2016 15:12:24 +0000 (15:12 +0000)]
Merge "Improve default behavior for HTMLForm::canDisplayErrors"

7 years agoMerge "mw.widgets.CategoryCapsuleItemWidget: Debug logging for "queue[title] is undef...
jenkins-bot [Tue, 23 Aug 2016 14:18:39 +0000 (14:18 +0000)]
Merge "mw.widgets.CategoryCapsuleItemWidget: Debug logging for "queue[title] is undefined""

7 years agomw.widgets.CategoryCapsuleItemWidget: Debug logging for "queue[title] is undefined"
Bartosz Dziewoński [Tue, 23 Aug 2016 13:50:13 +0000 (15:50 +0200)]
mw.widgets.CategoryCapsuleItemWidget: Debug logging for "queue[title] is undefined"

Bug: T139130
Change-Id: Icd852a0b0d5cc42863965e303c410d1be50ff364

7 years agoMerge "SpecialMyLanguage: Use page language instead of wiki language for redirect...
jenkins-bot [Tue, 23 Aug 2016 13:28:12 +0000 (13:28 +0000)]
Merge "SpecialMyLanguage: Use page language instead of wiki language for redirect target check"

7 years agoSpecialMyLanguage: Use page language instead of wiki language for redirect target...
Florian [Fri, 18 Dec 2015 02:26:23 +0000 (03:26 +0100)]
SpecialMyLanguage: Use page language instead of wiki language for redirect target check

With the change, named in Follow up, it's possible for site owners to
allow to change the language of a page using a special page.
Theoretically, any page can have another or a different page language,
depending on, if the language was changed using the special page or not.
For Special:MyLanguage it isn't enough anymore to check, if the current
user language is the same as the default content language. It has to
check, if the page language (which can potentionally differ from the
default content language) is the same as the user language.

The problem:
If content language is the same as the user language, Special:MyLanguage
currently redirects to the "base page" of a page ("Testpage" instead of
"Testpage/de"), no matter, if the page language of the base part is
another one as the default content language. This can result in the
problem, that Special:MyLanguage redirects to a page, that has a
different language as the user language, even if a subpage with the user
language code exists. This is fixed with this change.

Follow up: I0f82b146fbe948f917c1

Bug: T121834
Change-Id: Ic9fc9049813c153111829d37a2c248dc0768e0fb

7 years agoMerge "Introduce {{#time: xit}} for days in the month in Iranian calendar"
jenkins-bot [Tue, 23 Aug 2016 12:54:48 +0000 (12:54 +0000)]
Merge "Introduce {{#time: xit}} for days in the month in Iranian calendar"

7 years agoMerge "User namespace localisation update for Slovak"
jenkins-bot [Tue, 23 Aug 2016 12:49:43 +0000 (12:49 +0000)]
Merge "User namespace localisation update for Slovak"

7 years agoOutputPage.php: Reuse existing variable $user
Fomafix [Tue, 23 Aug 2016 07:12:35 +0000 (07:12 +0000)]
OutputPage.php: Reuse existing variable $user

Follows-up to 81c291f2

Change-Id: Id32daf74549c8af886a46119b30ff29ab2a6ac94

7 years agoMerge "objectcache: Add missing @covers to unit tests"
jenkins-bot [Tue, 23 Aug 2016 07:00:55 +0000 (07:00 +0000)]
Merge "objectcache: Add missing @covers to unit tests"

7 years agoobjectcache: Add missing @covers to unit tests
Timo Tijhof [Tue, 23 Aug 2016 06:20:42 +0000 (23:20 -0700)]
objectcache: Add missing @covers to unit tests

* HashBagOStuff: 100%
* CachedBagOStuff: 64%
* MultiWriteBagOStuff: 33%

Change-Id: I50bb8f5eda7eabadb5fd4b841af42b3bbcaf9611

7 years agoReduce problems caused by $wgRunJobsAsync
Aaron Schulz [Tue, 23 Aug 2016 06:04:36 +0000 (23:04 -0700)]
Reduce problems caused by $wgRunJobsAsync

* Use getCanonicalURL() to avoid links with the wrong host (e.g.
  when it is virtual) and to avoid getting redirects.
* Also disable this setting when post-send execution is already
  available, by default.
* Bump the socket timeout slightly.

Bug: T107290
Bug: T68485
Change-Id: I56c43193fa6583cc0c8209ff59cf20c986a799a3

7 years agoCode cleanups to SqlBagOStuff
Aaron Schulz [Tue, 23 Aug 2016 01:41:05 +0000 (18:41 -0700)]
Code cleanups to SqlBagOStuff

* Refactor local DB usage check into usesMainDB() method.
* Avoid using the db member of DBError instances.

Change-Id: I7350f5a471c551492094bfaf545ebc222eb6f7dd

7 years agoMerge "Pingback: Tweak docs a tiny bit to point to mw.org better"
jenkins-bot [Tue, 23 Aug 2016 05:09:43 +0000 (05:09 +0000)]
Merge "Pingback: Tweak docs a tiny bit to point to mw.org better"

7 years agoA few more DBLockManager fixes and cleanups
Aaron Schulz [Tue, 23 Aug 2016 05:04:43 +0000 (22:04 -0700)]
A few more DBLockManager fixes and cleanups

* Do not do the connection init step if the same DB handle as
  wfGetDB( DB_MASTER ) is being used to avoid clobbering it.
* Remove begin(), since only one of the subclasses wants
  transactions. That one now uses startAtomic() now.
* Make getConnection() throw an error for bad config instead
  of return null, which was not documented or expected.

Change-Id: Ib09a7972d6569c29e83e329a8f7f9f47a393b896

7 years agoMerge "Move EnqueueableDataUpdate to a separate file"
jenkins-bot [Tue, 23 Aug 2016 04:57:41 +0000 (04:57 +0000)]
Merge "Move EnqueueableDataUpdate to a separate file"

7 years agoMerge "Release notes for all the previous security patches"
jenkins-bot [Tue, 23 Aug 2016 04:48:17 +0000 (04:48 +0000)]
Merge "Release notes for all the previous security patches"

7 years agoMerge "Remove redundant isLoggedIn() call"
jenkins-bot [Tue, 23 Aug 2016 04:39:59 +0000 (04:39 +0000)]
Merge "Remove redundant isLoggedIn() call"

7 years agoRelease notes for all the previous security patches
Chad Horohoe [Mon, 22 Aug 2016 19:39:05 +0000 (12:39 -0700)]
Release notes for all the previous security patches

Change-Id: Ie93338b7d41a90f3ffdfa1b41891994935c965c7

7 years agoMerge "SECURITY: Move 'UserGetRights' call before application of Session::getAllowedU...
jenkins-bot [Tue, 23 Aug 2016 04:34:38 +0000 (04:34 +0000)]
Merge "SECURITY: Move 'UserGetRights' call before application of Session::getAllowedUserRights()"

7 years agoMerge "Remove commit() hack from User::addToDatabase()"
jenkins-bot [Tue, 23 Aug 2016 04:29:20 +0000 (04:29 +0000)]
Merge "Remove commit() hack from User::addToDatabase()"

7 years agoMerge "Various database class cleanups"
jenkins-bot [Tue, 23 Aug 2016 04:23:26 +0000 (04:23 +0000)]
Merge "Various database class cleanups"

7 years agoMove EnqueueableDataUpdate to a separate file
Aaron Schulz [Tue, 23 Aug 2016 04:20:49 +0000 (21:20 -0700)]
Move EnqueueableDataUpdate to a separate file

Change-Id: Iabc291cd1f3c5390ca8bcc5da64a0ff01a082575

7 years agoRemove redundant isLoggedIn() call
Timo Tijhof [Tue, 23 Aug 2016 04:08:23 +0000 (21:08 -0700)]
Remove redundant isLoggedIn() call

Follows-up 3e7a50d581c291f26.

Change-Id: I76f71f92ed8f2f57b871fa359c469f83357d8025

7 years agoSECURITY: Move 'UserGetRights' call before application of Session::getAllowedUserRights()
Brad Jorsch [Thu, 7 Jul 2016 21:24:50 +0000 (17:24 -0400)]
SECURITY: Move 'UserGetRights' call before application of Session::getAllowedUserRights()

This prevents hook functions from accidentally adding rights that should
be denied based on the session grants.

If some extension really needs to be able to override session grants,
add a new hook where the old call was, with documentation explicitly
warning about the security implications.

Bug: T139670
Change-Id: I6392cf4d7cc9d3ea96554b25bb5f8abb66e9031b

7 years agoMerge "SECURITY: XSS in unclosed internal links"
jenkins-bot [Tue, 23 Aug 2016 03:53:06 +0000 (03:53 +0000)]
Merge "SECURITY: XSS in unclosed internal links"

7 years agoMerge "SECURITY: Escape '<' and ']]>' in inline <style> blocks"
jenkins-bot [Tue, 23 Aug 2016 03:51:49 +0000 (03:51 +0000)]
Merge "SECURITY: Escape '<' and ']]>' in inline <style> blocks"

7 years agoMerge "Run LinksDeletionUpdate after commit() in namespaceDupes.php"
jenkins-bot [Tue, 23 Aug 2016 03:46:00 +0000 (03:46 +0000)]
Merge "Run LinksDeletionUpdate after commit() in namespaceDupes.php"

7 years agoMerge "resourceloader: Move batch fetch logic out of mw.loader.work()"
jenkins-bot [Tue, 23 Aug 2016 03:39:48 +0000 (03:39 +0000)]
Merge "resourceloader: Move batch fetch logic out of mw.loader.work()"

7 years agoSECURITY: XSS in unclosed internal links
Brian Wolff [Wed, 8 Jun 2016 02:35:15 +0000 (22:35 -0400)]
SECURITY: XSS in unclosed internal links

rawurldecode was being run on unclosed internal links
which could allow an attacker to insert arbitrary
html into the page.

See also related: r13302

Bug: T137264
Change-Id: I4e112a9e918df9fe78b62c311939239b483a21f5

7 years agoSECURITY: Escape '<' and ']]>' in inline <style> blocks
Brian Wolff [Wed, 20 Apr 2016 17:41:20 +0000 (13:41 -0400)]
SECURITY: Escape '<' and ']]>' in inline <style> blocks

This is to prevent people from closing the <style> tag, and
then doing arbitrary js-y things. In particular, this is needed
for when previewing user css pages.

This does not escape '>' since its used as the child selector
in css, and generally speaking, '>' is safe inside the contents
of elements.

Bug: T133147
Change-Id: If024398d7bd4b578ad7f8c74367787f5b19eb9d7

7 years agoresourceloader: Move batch fetch logic out of mw.loader.work()
Timo Tijhof [Tue, 9 Aug 2016 01:16:41 +0000 (18:16 -0700)]
resourceloader: Move batch fetch logic out of mw.loader.work()

Changes:

* Move batch fetch logic out of work() into a new private method
  called batchRequest().

* Avoid confusion between request as 'network fetch' and request as
  'need a module'. Renamed 'request()' to 'enqueue()' to avoid
  confusion with doRequest.
  Changed most other instances of 'request' to 'require', 'need', or
  more specific request details such as 'url' and  'query string'.

* Keep comment about important of clearing the queue in work()
  and move it to be about 'queue' instead of 'batch'.
  Variable 'batch' is now local to work() and no longer shared
  through scope. I don't know why this wasn't local before.

* Remove bad early return in work() when batch is empty. This was before
  the clearing of the queue. This could cause cached modules to remain in
  the queue for the next time work() is called.

This commit is in preparation for T142129, which will make the cache-eval
logic asynchronous in mw.loader.work().

Change-Id: I91e50232637e01822b03d77d1add3a2275e18027

7 years agoSECURITY: Require login to preview user CSS pages
Chad Horohoe [Fri, 19 Aug 2016 20:53:52 +0000 (13:53 -0700)]
SECURITY: Require login to preview user CSS pages

Anon users have predictable edit tokens, hence someone could
force an anon to execute arbitrary CSS by means of a CSRF.

Bug: T133147
Change-Id: I442b2b46cadb967aaa1f35648eff183fc7eaa475

7 years agoVarious database class cleanups
Aaron Schulz [Sat, 20 Aug 2016 06:51:46 +0000 (23:51 -0700)]
Various database class cleanups

* Refactor out some code duplication in query() into a
  separate private method.
* Remove the total master/slave query profiling, which is not
  necessary and redundant.
* Provide a default implementation for reconnect().
* Make reconnect() catch errors so it can match the docs that say
  it returns true/false to indicate failure. Likewise for ping().
* Optimize ping() to no-op if there was obvious recent activity.
* Move the ping() round in JobRunner to approveMasterChanges.
  This way, all commit rounds benefit from this logic.
* Add more doc comments for DatabaseBase fields.

Change-Id: Ic90ce2be4187244a0e8d44854c39d4b78be8e642

7 years agoMerge "SECURITY: Do not allow undeleting a revdel'd file if its top file"
jenkins-bot [Tue, 23 Aug 2016 03:05:53 +0000 (03:05 +0000)]
Merge "SECURITY: Do not allow undeleting a revdel'd file if its top file"

7 years agoMerge "SECURITY: Make $wgBlockDisablesLogin also restrict logged in permissions"
jenkins-bot [Tue, 23 Aug 2016 02:28:32 +0000 (02:28 +0000)]
Merge "SECURITY: Make $wgBlockDisablesLogin also restrict logged in permissions"

7 years agoSECURITY: Do not allow undeleting a revdel'd file if its top file
Brian Wolff [Mon, 18 Apr 2016 16:45:56 +0000 (12:45 -0400)]
SECURITY: Do not allow undeleting a revdel'd file if its top file

This prevents admins being able to view suppressed files, by simply
deleting them, and then undeleting only the file revision that they
want to view.

This dates back to r43288. Unclear if it was intentional.

Bug: T132926
Change-Id: Ib767de853a37099305db20529378fa756ee1bdfe

7 years agoSECURITY: Make $wgBlockDisablesLogin also restrict logged in permissions
Brian Wolff [Wed, 29 Jun 2016 14:45:25 +0000 (10:45 -0400)]
SECURITY: Make $wgBlockDisablesLogin also restrict logged in permissions

Does both Title and user related methods, so it catches things that only
call $wgUser->isAllowed( 'read' ), as well as giving a nicer error message
for things that use $title->userCan().

Otherwise, the user can still do stuff and read pages if they have an
ongoing session.

Issue reported by Multichill

Bug: T129738
Change-Id: Ic929a385fa81c27cbc6ac3a0862f51190d3ae993

7 years agoMerge "SECURITY: Make blocks log users out if $wgBlockDisablesLogin"
jenkins-bot [Tue, 23 Aug 2016 01:34:04 +0000 (01:34 +0000)]
Merge "SECURITY: Make blocks log users out if $wgBlockDisablesLogin"

7 years agoMerge "SECURITY: Check read permission when loading page content in ApiParse."
jenkins-bot [Tue, 23 Aug 2016 01:34:00 +0000 (01:34 +0000)]
Merge "SECURITY: Check read permission when loading page content in ApiParse."

7 years agoRemove direct rollback() calls from some places
Aaron Schulz [Fri, 19 Aug 2016 20:17:33 +0000 (13:17 -0700)]
Remove direct rollback() calls from some places

Rely on the mass-rollback logic in MWExceptionHandler instead.
This results in a better chance of atomicity.

Change-Id: I2eb5661d4acc105a1323d69c5463268c234bd745

7 years agoSECURITY: Make blocks log users out if $wgBlockDisablesLogin
Brian Wolff [Tue, 19 Apr 2016 14:25:43 +0000 (10:25 -0400)]
SECURITY: Make blocks log users out if $wgBlockDisablesLogin

Issue originally reported by Multichill

Bug: T129738
Change-Id: Iddc58e504297c60f6d3ca99f21034fe7c5cf9801

7 years agoSECURITY: Check read permission when loading page content in ApiParse.
Daniel Kinzler [Mon, 13 Jun 2016 08:01:43 +0000 (04:01 -0400)]
SECURITY: Check read permission when loading page content in ApiParse.

Prevents leaking page contents for extensions that deny read rights
to certain pages via a userCan hook, but still allow the user to
have read rights in general.

Issue originally reported by Tobias

Bug: T115333
Change-Id: I19f5c2583393794cff802a70af7ccf43c2fed85c