lhc/web/wiklou.git
7 years agoMerge "Chinese Conversion Table Update 2016-3"
jenkins-bot [Tue, 7 Jun 2016 08:10:13 +0000 (08:10 +0000)]
Merge "Chinese Conversion Table Update 2016-3"

7 years agoRemove getOptions() checks from getStashKey() entirely
Aaron Schulz [Tue, 7 Jun 2016 00:27:37 +0000 (17:27 -0700)]
Remove getOptions() checks from getStashKey() entirely

It only avoided a tiny edge case of options lag, which is
not worth the complexity.

Change-Id: I94bc35fc89eb46436a23b10aee1b7d339859c7ea

7 years agoMerge "Make edit stash keys less preference sensitive"
jenkins-bot [Mon, 6 Jun 2016 22:13:17 +0000 (22:13 +0000)]
Merge "Make edit stash keys less preference sensitive"

7 years agoMerge "InfoAction: Don't pass non-dbkeys to LinkBatch"
jenkins-bot [Mon, 6 Jun 2016 22:09:12 +0000 (22:09 +0000)]
Merge "InfoAction: Don't pass non-dbkeys to LinkBatch"

7 years agoMake edit stash keys less preference sensitive
Aaron Schulz [Mon, 6 Jun 2016 21:34:14 +0000 (14:34 -0700)]
Make edit stash keys less preference sensitive

Only factor in the user ID/name/sig instead of anything that
might happen to touch the user row.

Bug: T136678
Change-Id: I004790a017c68cfcff6729f6fbfd0f79b6904c20

7 years agoInfoAction: Don't pass non-dbkeys to LinkBatch
Kunal Mehta [Mon, 6 Jun 2016 21:59:23 +0000 (14:59 -0700)]
InfoAction: Don't pass non-dbkeys to LinkBatch

Usernames are stored with spaces instead of underscores, so this was
causing exceptions later on when dbkeys were expected to be provided to
TitleValue.

Let Title take care of normalization from spaces format to underscores
in Title::makeTitle(), and pass that object onto LinkBatch instead.

Bug: T137147
Change-Id: Ia3606d30de61173e4d5526a9d7a77bd4b1710a05

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 6 Jun 2016 20:39:16 +0000 (22:39 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ia8baf1ed8a5cd70ebf65955f95d47f3b73745e43

7 years agoMerge "Avoid rollback and bot flagged edits in edit stash stats"
Aaron Schulz [Mon, 6 Jun 2016 20:17:02 +0000 (20:17 +0000)]
Merge "Avoid rollback and bot flagged edits in edit stash stats"

7 years agoMerge "Follow-up c81ab8ae5f: add forgotten dependency on mediawiki.language"
jenkins-bot [Mon, 6 Jun 2016 19:25:20 +0000 (19:25 +0000)]
Merge "Follow-up c81ab8ae5f: add forgotten dependency on mediawiki.language"

7 years agoAvoid rollback and bot flagged edits in edit stash stats
Aaron Schulz [Fri, 3 Jun 2016 04:34:05 +0000 (21:34 -0700)]
Avoid rollback and bot flagged edits in edit stash stats

This just skews the numbers with cases that could not use
the cache anyway.

Bug: T136678
Change-Id: Iaa90d4f6ee80e886f59bc43a1392e59fe2a8f900

7 years agoMerge "Avoid exceptions for empty titles in addResultToCache() for sanity"
jenkins-bot [Mon, 6 Jun 2016 18:04:06 +0000 (18:04 +0000)]
Merge "Avoid exceptions for empty titles in addResultToCache() for sanity"

7 years agoFollow-up c81ab8ae5f: add forgotten dependency on mediawiki.language
Roan Kattouw [Mon, 6 Jun 2016 17:56:11 +0000 (19:56 +0200)]
Follow-up c81ab8ae5f: add forgotten dependency on mediawiki.language

Bug: T137002
Change-Id: If35416f4bd08f72f53dad26e80f8417ca2a6d7d9

7 years agoAvoid exceptions for empty titles in addResultToCache() for sanity
Aaron Schulz [Mon, 6 Jun 2016 06:04:20 +0000 (23:04 -0700)]
Avoid exceptions for empty titles in addResultToCache() for sanity

Bug: T137083
Change-Id: Ie8aabba30bc0d7a6910a58104ff08ea036ba962d

7 years agoMerge "Password change request should be optional on soft reset"
jenkins-bot [Mon, 6 Jun 2016 16:24:48 +0000 (16:24 +0000)]
Merge "Password change request should be optional on soft reset"

7 years agoPassword change request should be optional on soft reset
Gergő Tisza [Mon, 6 Jun 2016 14:43:03 +0000 (14:43 +0000)]
Password change request should be optional on soft reset

Non-optional fields are required by HTMLForm now so the skip button
would not work properly.

Change-Id: Iad937767f0f7cf6dce43f7882720d1ed730ee28d

7 years agoHTMLForm: Properly support 'flatlist' in OOUI mode
Bartosz Dziewoński [Mon, 6 Jun 2016 15:22:48 +0000 (17:22 +0200)]
HTMLForm: Properly support 'flatlist' in OOUI mode

Previously it worked mostly by chance for multiselect fields (until
2f33194497bd94d1cecb21dcb88e9bf3abf2ddaa broke it), and did not work
at all for radio fields.

Bug: T123935
Change-Id: I94396303bcf16110a505883bec2ce352d833fe2b

7 years agoMerge "Fix float of search input on Special:Search"
jenkins-bot [Mon, 6 Jun 2016 15:02:10 +0000 (15:02 +0000)]
Merge "Fix float of search input on Special:Search"

7 years agoMerge "Don't override action in UI and REDIRECT responses"
jenkins-bot [Mon, 6 Jun 2016 14:25:45 +0000 (14:25 +0000)]
Merge "Don't override action in UI and REDIRECT responses"

7 years agoMerge "Add column alias support in BatchRowIterator"
jenkins-bot [Mon, 6 Jun 2016 12:08:27 +0000 (12:08 +0000)]
Merge "Add column alias support in BatchRowIterator"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sun, 5 Jun 2016 19:52:21 +0000 (21:52 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I961120816132dc1a46f62e25b7223006a727aa32

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sat, 4 Jun 2016 19:52:24 +0000 (21:52 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I66385ba8e6a50980cfc957fd13e58cd5a43ed438

7 years agorevisiondelete: Fix $oldBits/$newBits usage in setVisibility()
Aaron Schulz [Fri, 27 May 2016 21:58:10 +0000 (14:58 -0700)]
revisiondelete: Fix $oldBits/$newBits usage in setVisibility()

This addresses the FIXME comment around updateLog()

Change-Id: Iedb9df0b4cf65308a6b58bd9d9295d1850bc2c28

7 years agoMerge "Avoid DBPerformance warnings in Category::initialize()"
jenkins-bot [Fri, 3 Jun 2016 22:39:07 +0000 (22:39 +0000)]
Merge "Avoid DBPerformance warnings in Category::initialize()"

7 years agoAvoid DBPerformance warnings in Category::initialize()
Aaron Schulz [Fri, 3 Jun 2016 05:07:58 +0000 (22:07 -0700)]
Avoid DBPerformance warnings in Category::initialize()

Use DeferredUpdates and zero-out negative values in the meantime.

Bug: T92357
Change-Id: Ia1339395b70b042edba6dc1d570acb92c90a287b

7 years agologging: Simplify DeleteLogFormatter b/c check
Aaron Schulz [Fri, 27 May 2016 21:15:47 +0000 (14:15 -0700)]
logging: Simplify DeleteLogFormatter b/c check

Change-Id: Iab16663579d2eece4a94f80f7120b231aed0e572

7 years agoClean up setVisibility() log type logic
Aaron Schulz [Fri, 27 May 2016 20:58:34 +0000 (13:58 -0700)]
Clean up setVisibility() log type logic

The log type used should be based on whether any item
was (un)suppressed, not just the last log entry. Otherwise,
unsuppression could end up in the wrong log if the last
item in the list was not unsuppressed but others were.

Change-Id: I7b6af524cc45a1d83b2b719bfa00138531455e35

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 3 Jun 2016 20:47:23 +0000 (22:47 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ib2318bbccf83f08e9f32c97b6fea0c6baa6d1cd7

7 years agoSync up with Parsoid parserTests.
Arlo Breault [Fri, 3 Jun 2016 17:59:52 +0000 (10:59 -0700)]
Sync up with Parsoid parserTests.

This now aligns with Parsoid commit 8fa3996c2656b66789e658c50150f45b19c69ae1

Change-Id: I7f839aaddddf6ac96b7d155989f20a2b386d5622

7 years agoDon't override action in UI and REDIRECT responses
Brad Jorsch [Fri, 3 Jun 2016 15:33:41 +0000 (11:33 -0400)]
Don't override action in UI and REDIRECT responses

In Ic8caf57eb, we changed things so the requests returned in a UI or
REDIRECT response would have the action forced to that appropriate for
the action being peformed. But ResetPasswordSecondaryAuthenticationProvider
has a use case where a mismatch is necessary: it's run during the login
action, but it needs a PasswordAuthenticationResponse for a change
action.

Bug: T136894
Change-Id: I9d109a22c5b2d2064f664f584100ecaab43199c5

7 years agoFix float of search input on Special:Search
Florian [Fri, 3 Jun 2016 15:12:44 +0000 (17:12 +0200)]
Fix float of search input on Special:Search

Follow up: Icc68a8e83fc7037b96a5efec2766ffdf453c5413

Bug: T136945
Change-Id: I698d9728c70cfee5693594f2f1e0513c942aa2cd

7 years agoAdd column alias support in BatchRowIterator
Stephane Bisson [Fri, 3 Jun 2016 13:05:10 +0000 (09:05 -0400)]
Add column alias support in BatchRowIterator

Used by Echo/maintenance/backfillReadBundles

Bug: T136368
Change-Id: Ia8f8aa718713798a81392b5e9751c5c18ab81720

7 years agoMerge "Show ParserOutput warning instead of on the actual page output for ignored...
jenkins-bot [Thu, 2 Jun 2016 21:23:04 +0000 (21:23 +0000)]
Merge "Show ParserOutput warning instead of on the actual page output for ignored display titles"

7 years agoHTMLForm: Don't add a type=reset to links
Florian [Thu, 2 Jun 2016 20:50:55 +0000 (22:50 +0200)]
HTMLForm: Don't add a type=reset to links

Follow up: Ieb80e2ff36751abc6f00e2a02926fe9800666a8b

Change-Id: If88c80a46cba9729a9503b82532584443d6d5ba4

7 years agoDon't lose namespace when searching via api
Erik Bernhardson [Thu, 2 Jun 2016 20:12:16 +0000 (13:12 -0700)]
Don't lose namespace when searching via api

A recent patch, I66be724d, introduced a regression that no longer
applied user selected namespaces to the search engine. Fix that up so we
give the correct responses to api rqeuests.

Change-Id: I8e5e180cb143ae3cddeb12f51bc7aae75b20fe58

7 years agoMerge "Localisation updates from https://translatewiki.net."
Translation updater bot [Thu, 2 Jun 2016 20:02:32 +0000 (20:02 +0000)]
Merge "Localisation updates from https://translatewiki.net."

7 years agoMerge "Improve HTMLForm (and Special:ChangeCredentials) cancel button"
jenkins-bot [Thu, 2 Jun 2016 20:00:37 +0000 (20:00 +0000)]
Merge "Improve HTMLForm (and Special:ChangeCredentials) cancel button"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 2 Jun 2016 19:55:40 +0000 (21:55 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I1dc0bbb38277e8c24ace6b53e835d8d5020de50f

7 years agoImprove HTMLForm (and Special:ChangeCredentials) cancel button
Gergő Tisza [Thu, 2 Jun 2016 14:17:13 +0000 (14:17 +0000)]
Improve HTMLForm (and Special:ChangeCredentials) cancel button

Add two new HTMLForm methods:
* showCancel( [bool] ) to display a cancel button
* setCancelTarget( Title|string ) to set where it should take
  the user.

The cancel button is a simple link formatted as a button.
This is faster than a real button (skips an unnecessary
submit and redirect) and avoids some UX problems:
* when clicking on a real button, HTML5 or JS  validators
  might prevent submission, which does not make sense for cancel
* form field values might get saved by the brower, which again
  does not make sense for cancelling

Use the cancel button for Special:ChangeCredentials.

Bug: T136809
Change-Id: Ieb80e2ff36751abc6f00e2a02926fe9800666a8b

7 years agoAuthManager::setDefaultUserOptions and LoginForm::initUser shouldn't invalidate CA...
Brad Jorsch [Thu, 2 Jun 2016 19:26:14 +0000 (15:26 -0400)]
AuthManager::setDefaultUserOptions and LoginForm::initUser shouldn't invalidate CA tokens

We only want to set the local user_token when we create the local
account. We don't want to invalidate all existing CentralAuth sessions
for the user just because they happened to visit a new wiki and get
an account auto-created.

This might also fix T136853. It looks like what's going on there is that
two jobs are both in this code path calling CentralAuth::resetAuthToken()
at the same time, leading to a race and one fails the CAS check.

Bug: T136834
Change-Id: I61b8253584a11a5b02f7ccb9efa0679cd2a822c6

7 years agoMerge "Make LinksDeletionUpdate use query batching"
jenkins-bot [Thu, 2 Jun 2016 17:54:40 +0000 (17:54 +0000)]
Merge "Make LinksDeletionUpdate use query batching"

7 years agomediawiki.jqueryMsg: Add @since to parseDom
Niklas Laxström [Thu, 2 Jun 2016 05:57:35 +0000 (07:57 +0200)]
mediawiki.jqueryMsg: Add @since to parseDom

Since I keep looking it up from the history.

Change-Id: I541c1f9ca7df291226b9cc1c0d6bdbd71f7ce486

7 years agoRethink diff limits
Max Semenik [Wed, 27 Apr 2016 01:10:26 +0000 (18:10 -0700)]
Rethink diff limits

Now, instead of "if your changed paragraphs are larger than 10Kb, you're
screwed":
* Instead of relying on overall length, estimate complexity after splitting to words
  and taking any equal head and tail out of equation.
* Estimate based on words changed, which better reflects the actual complexity
  of generating a diff.
* New limit is determined scientifically, i.e. "above that number XDebug starts
  complaining about recursion limits reached in Vagrant".

Caveat: if new limits are hit, the consequences are more widespread as all adjacent
changed paragraphs are displayed without word level diffs, as opposed to only the
paragraph that's too long being affected. However, the new limit is much higher and
in wikitext you're supposed to put empty lines between paragraphs anyway, negating
this problem.

Bug: T128697
Change-Id: I4e91c7c40f5afdd116b847a859b8517522302489

7 years agoMerge "AuthManager: Ensure neededRequests have action and username set properly"
jenkins-bot [Wed, 1 Jun 2016 21:26:13 +0000 (21:26 +0000)]
Merge "AuthManager: Ensure neededRequests have action and username set properly"

7 years agoMerge "Fix Special:PrefixIndex paging links"
jenkins-bot [Wed, 1 Jun 2016 21:14:27 +0000 (21:14 +0000)]
Merge "Fix Special:PrefixIndex paging links"

7 years agoFix Special:PrefixIndex paging links
Aaron Schulz [Wed, 1 Jun 2016 20:59:35 +0000 (13:59 -0700)]
Fix Special:PrefixIndex paging links

Capture the last row instead of skipping it and then not
finding anything in the fetchObject() call.

Bug: T136738
Change-Id: Ibcfa6c18c54227fda75298a849717e6ef3418928

7 years agoMerge "Localisation updates from https://translatewiki.net."
Translation updater bot [Wed, 1 Jun 2016 20:43:13 +0000 (20:43 +0000)]
Merge "Localisation updates from https://translatewiki.net."

7 years agoMerge "Expose SearchEngine specific profiles"
jenkins-bot [Wed, 1 Jun 2016 20:36:03 +0000 (20:36 +0000)]
Merge "Expose SearchEngine specific profiles"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 1 Jun 2016 20:34:22 +0000 (22:34 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I58c9f2c935838e27afd48890da19fda98d6c792e

7 years agoLinkBatch: Cast array keys to string when constructing TitleValue
Bartosz Dziewoński [Wed, 1 Jun 2016 20:12:59 +0000 (22:12 +0200)]
LinkBatch: Cast array keys to string when constructing TitleValue

If $dbkey consisted only of numbers (0-9), PHP converts it to an
integer when using it as array key, and then returns it as an integer
when iterating over the array. This is normally fine, but TitleValue
does strict type checking.

Follow-up to 682116760198a7420a809e0b9966ecdc63f1c67d.

Bug: T136615
Change-Id: I894800c3f5aec0c2d0c23f8adfa1b840495f3b16

7 years agoMerge "Make AuthManager::getAuthenticationProvider() public"
jenkins-bot [Wed, 1 Jun 2016 18:54:48 +0000 (18:54 +0000)]
Merge "Make AuthManager::getAuthenticationProvider() public"

7 years agoMake AuthManager::getAuthenticationProvider() public
Brad Jorsch [Wed, 1 Jun 2016 18:16:49 +0000 (14:16 -0400)]
Make AuthManager::getAuthenticationProvider() public

I found a need in CentralAuth to check that
CentralAuthPrimaryAuthenticationProvider is actually in use, so I'm
exposing this.

Change-Id: I40bd3dc4d05db0c3a34b01f550a9a9a1ded8fc61

7 years agoClean-up of MediaWikiTestCase::checkHasGzip()
Ori Livneh [Wed, 1 Jun 2016 17:32:37 +0000 (10:32 -0700)]
Clean-up of MediaWikiTestCase::checkHasGzip()

* Move the method from MediaWikiTestCase to DumpTestCase. Only subclasses of
  DumpTestCase use it, and it is not sufficiently well-designed to be a part
  of MediaWikiTestCase. (I'd want something more generic, like
  "$this->markSkippedUnlessExecutable()", rather than a method dedicated solely
  to establishing the availability of the gzip binary.)
* Fix it so that the result of the check is actually cached. It wasn't,
  previously, because of how 'static' works in PHP.
* Be content with checking that gzip is in $PATH instead of actually executing
  it.

Change-Id: Iec687a6bfe75912e1875afc3abb4fb6197a0b3aa

7 years agoCheck that file is executable in Installer::locateExecutable
Ori Livneh [Wed, 1 Jun 2016 17:42:34 +0000 (10:42 -0700)]
Check that file is executable in Installer::locateExecutable

Just because the file exists doesn't mean that we can run.
Use is_executable(), a one-shot check for both existence and executability.

Change-Id: I705010b01cd3a17c3950eebae3066d7b007f706e

7 years agoAuthManager: Ensure neededRequests have action and username set properly
Brad Jorsch [Wed, 1 Jun 2016 15:58:44 +0000 (11:58 -0400)]
AuthManager: Ensure neededRequests have action and username set properly

They were coming out as null instead, which screws up when requests are
changing their fields based on the action.

Change-Id: Ic8caf57ebad35c3eb17d45f9d96c6de5b559a83a

7 years agoMerge "Remove a test case from PHPSessionHandlerTest::testSessionHandling()"
jenkins-bot [Wed, 1 Jun 2016 13:21:36 +0000 (13:21 +0000)]
Merge "Remove a test case from PHPSessionHandlerTest::testSessionHandling()"

7 years agoMerge "HTMLRadioField: Only add 'mw-ui' classes when needed"
jenkins-bot [Wed, 1 Jun 2016 08:54:01 +0000 (08:54 +0000)]
Merge "HTMLRadioField: Only add 'mw-ui' classes when needed"

7 years agoMerge "Parser: Pass Title onto Linker::makeExternalLink()"
jenkins-bot [Wed, 1 Jun 2016 06:15:29 +0000 (06:15 +0000)]
Merge "Parser: Pass Title onto Linker::makeExternalLink()"

7 years agoParser: Pass Title onto Linker::makeExternalLink()
Kunal Mehta [Wed, 1 Jun 2016 05:47:51 +0000 (22:47 -0700)]
Parser: Pass Title onto Linker::makeExternalLink()

Otherwise $wgNoFollowNsExceptions functionality won't work.

Change-Id: I2e1c5ad41f94568bff7f24a400d555b604cfe22e

7 years agoMerge "Fix key prefix comment after 0a38dbc809c8"
jenkins-bot [Wed, 1 Jun 2016 05:37:48 +0000 (05:37 +0000)]
Merge "Fix key prefix comment after 0a38dbc809c8"

7 years agoMerge "Add a parser test for $wgNoFollowDomainExceptions functionality"
jenkins-bot [Wed, 1 Jun 2016 05:37:04 +0000 (05:37 +0000)]
Merge "Add a parser test for $wgNoFollowDomainExceptions functionality"

7 years agoMerge "Make $url parameter to Parser::getExternalLinkAttribs() required"
jenkins-bot [Wed, 1 Jun 2016 05:30:24 +0000 (05:30 +0000)]
Merge "Make $url parameter to Parser::getExternalLinkAttribs() required"

7 years agoFix key prefix comment after 0a38dbc809c8
Aaron Schulz [Wed, 1 Jun 2016 05:27:46 +0000 (22:27 -0700)]
Fix key prefix comment after 0a38dbc809c8

Change-Id: I9085d1f0020917b431d9ef7afd4de93e54df0abc

7 years agoAdd a parser test for $wgNoFollowDomainExceptions functionality
Kunal Mehta [Wed, 1 Jun 2016 05:20:36 +0000 (22:20 -0700)]
Add a parser test for $wgNoFollowDomainExceptions functionality

Verify that domains on the exception list don't get a "nofollow"
attribute.

Change-Id: I01a7fc0fd9ccd21069beb26dcf3f775c79e00202

7 years agoMerge "User: Simplify process cache by using WANObjectCache::getWithSetCallback"
jenkins-bot [Wed, 1 Jun 2016 04:59:27 +0000 (04:59 +0000)]
Merge "User: Simplify process cache by using WANObjectCache::getWithSetCallback"

7 years agoRemove a test case from PHPSessionHandlerTest::testSessionHandling()
Ori Livneh [Wed, 18 May 2016 06:14:00 +0000 (23:14 -0700)]
Remove a test case from PHPSessionHandlerTest::testSessionHandling()

The test sleeps for nine seconds (3 invocations, 3 seconds per
invocation) which is difficult to sit through.

The test code sets the value of two PHP parameters, session.gc_divisor
and session.gc_probability, to 1. This may be to ensure that PHP will
invoke the session handler's gc() method when the call is made to
session_start() below. But the call to PHPSessionHandler::gc() is
immaterial, for two reasons:

- PHPSessionHandler::gc() evicts items by calling the
  deleteObjectsExpiringBefore() on the BagOStuff instance it uses for
  storage. The only BagOStuff implementation that actually uses that
  method to evict items is SqlBagOStuff, which we're not using here,
  and which would be an odd choice of a storage backend for sessions.
- PHP calls SessionHandler::gc() _after_ opening the new (or resumed)
  session and loading its data, so even if deleteObjectsExpiringBefore()
  actually did anything, it would not influence the result of the test.

Bug: T135576
Change-Id: I6e153ec8bfa5972ed45a0e6b7720832692b952fb

7 years agoMerge "Avoid passing integers to mw.RegExp.escape"
jenkins-bot [Wed, 1 Jun 2016 04:36:27 +0000 (04:36 +0000)]
Merge "Avoid passing integers to mw.RegExp.escape"

7 years agoMake $url parameter to Parser::getExternalLinkAttribs() required
Kunal Mehta [Wed, 1 Jun 2016 04:25:18 +0000 (21:25 -0700)]
Make $url parameter to Parser::getExternalLinkAttribs() required

All callers in Gerrit pass $url in.

Change-Id: I36246f6510db414dcc7023f8779796c060c3eba5

7 years agoUser: Simplify process cache by using WANObjectCache::getWithSetCallback
Timo Tijhof [Sat, 27 Feb 2016 19:35:21 +0000 (19:35 +0000)]
User: Simplify process cache by using WANObjectCache::getWithSetCallback

Follows-up 7d67b4d9199c733318.

* Convert loadFromId() to use getWithSetCallback() and centralise
  cache access logic there instead of spread between loadFromCache()
  and saveToCache().

* Remove process cache from User class (added in 9c733318).
  Instead, tell WANObjectCache to process-cache the key for 30 seconds.

* No need to deal with process cache in purge() because load uses slaves by
  default and may be lagged. Reads that require READ_LATEST already bypass
  the cache.

* Remove saveToCache() and move logic to loadFromCache().
  It was technically a public method, but marked private and no longer used
  in any extensions.

* Remove redundant isAnon() check in loadFromCache().
  This is already done by loadFromId() and loadFromDatabase().

* Remove hasOrMadeRecentMasterChanges() check. It was used to add READ_LATEST
  to the flags. However, this check only occurred if either READ_LATEST was
  already set, or after consulting cache. Which means in general, it never
  does anything. If we want to keep this, we should probably move it higher up.

* Let WANObjectCache handle cache version. That way, there is no longer separate
  logic for "populate cache" and "cache lookup failed". Instead, there is
  just "get data" that tries cache first.

  I've considered moving the version into the cache key (like we do elsewhere)
  but that would be problematic here since User cache must be purgeable
  cross-wiki and other wikis may run a different version (either in general,
  or even just during a deployment). As such, the key must remain unchanged when
  the version changes so that purges from newer wikis affect what older wikis see
  and vice versa.

Change-Id: Icfbc54dfd0ea594dd52fc1cfd403a7f66f1dd0b0

7 years agoMerge "Simplify mediawiki.raggett.css"
jenkins-bot [Tue, 31 May 2016 23:01:05 +0000 (23:01 +0000)]
Merge "Simplify mediawiki.raggett.css"

7 years agoMerge "mw.Title: Correct order of file URL regexes in newFromImg"
jenkins-bot [Tue, 31 May 2016 22:56:44 +0000 (22:56 +0000)]
Merge "mw.Title: Correct order of file URL regexes in newFromImg"

7 years agoMerge "HTMLMultiSelectField: Use CheckboxMultiselectInputWidget"
jenkins-bot [Tue, 31 May 2016 22:56:04 +0000 (22:56 +0000)]
Merge "HTMLMultiSelectField: Use CheckboxMultiselectInputWidget"

7 years agoSimplify mediawiki.raggett.css
Kunal Mehta [Tue, 31 May 2016 22:49:04 +0000 (15:49 -0700)]
Simplify mediawiki.raggett.css

Per code review on cbb2913bb935f.

Change-Id: I8958753a4e643777976fcc6b56edcd7c23568842

7 years agoMerge "objectcache: Support key versioning in WANObjectCache"
jenkins-bot [Tue, 31 May 2016 22:48:24 +0000 (22:48 +0000)]
Merge "objectcache: Support key versioning in WANObjectCache"

7 years agoHTMLMultiSelectField: Use CheckboxMultiselectInputWidget
Bartosz Dziewoński [Mon, 30 May 2016 11:16:51 +0000 (13:16 +0200)]
HTMLMultiSelectField: Use CheckboxMultiselectInputWidget

Depends on I6f9fad0a462b43ac45c117cd3a3e11c36781cf11 in OOjs UI.

Bug: T123935
Change-Id: I62322739b985cc2143b5094d23b3aa5dd1004c25

7 years agomw.Title: Correct order of file URL regexes in newFromImg
Bartosz Dziewoński [Tue, 31 May 2016 22:40:15 +0000 (00:40 +0200)]
mw.Title: Correct order of file URL regexes in newFromImg

The "Thumbnails in non-hashed upload directories" regex can match
non-thumbnailed files in hashed directories if the file name contains
the word "thumbnail" or the first two bytes of the MD5 hash of the
file name. We should check "Full size images" first.

Bug: T134860
Change-Id: I74af47969bf9ba204c24e299f788f5349302e437

7 years agoUpdate OOjs UI to v0.17.4
James D. Forrester [Tue, 31 May 2016 21:55:25 +0000 (14:55 -0700)]
Update OOjs UI to v0.17.4

Release notes:
 https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v0.17.4

Change-Id: I35019c565ec1d72fde0b69f217cab8d73ce441a4

7 years agoMerge "Reset all tokens on login"
jenkins-bot [Tue, 31 May 2016 20:40:57 +0000 (20:40 +0000)]
Merge "Reset all tokens on login"

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 31 May 2016 20:10:00 +0000 (22:10 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I3f77a9f17cd70c9ba120d024b0acb7a4de31a37e

7 years agoMerge "populateRevisionLength: Read from slaves when possible"
jenkins-bot [Tue, 31 May 2016 19:22:44 +0000 (19:22 +0000)]
Merge "populateRevisionLength: Read from slaves when possible"

7 years agoReset all tokens on login
Chad Horohoe [Tue, 31 May 2016 19:20:05 +0000 (12:20 -0700)]
Reset all tokens on login

Bug: T122056
Change-Id: I03739e942b6c182ed9cbcd0d9615dcd799e8baed

7 years agoresourceloader: Strip leading BOM when concatenating files
Derk-Jan Hartman [Wed, 11 May 2016 11:53:59 +0000 (13:53 +0200)]
resourceloader: Strip leading BOM when concatenating files

We read files and concatenate their contents. Files may start with a BOM character.
BOM characters are only allowed at the beginning of a file, not half way.
Stripping it should be safe, since we already assume that everything is UTF-8.

Change-Id: I14ad698a684e78976e873e9ae2c367475550a063

7 years agoMerge "Do not redirect to HTTPS when it's not supported"
jenkins-bot [Tue, 31 May 2016 17:39:48 +0000 (17:39 +0000)]
Merge "Do not redirect to HTTPS when it's not supported"

7 years agoMerge "Return error message in users API cancreate field"
jenkins-bot [Tue, 31 May 2016 17:01:07 +0000 (17:01 +0000)]
Merge "Return error message in users API cancreate field"

7 years agoMerge "AuthManager fixups around the login→RESTART→create flow"
jenkins-bot [Tue, 31 May 2016 16:41:53 +0000 (16:41 +0000)]
Merge "AuthManager fixups around the login→RESTART→create flow"

7 years agoDo not redirect to HTTPS when it's not supported
Gergő Tisza [Thu, 26 May 2016 18:04:02 +0000 (18:04 +0000)]
Do not redirect to HTTPS when it's not supported

Most URL generation happens via wfExpandUrl, which honors $wgServer
(or whatever setting it is told to use): if it has an explicit
protcol, that is always used; if it is a protocol-relative URL,
the protocol is selected based on the parameters given to wfExpandUrl.

One exception is MediaWiki::main() which always uses HTTPS if the
relevant cookie or user option is set, even if the wiki does not
support it. That can lead to annoying problems on Vagrant where it
is not unusual to turn HTTPS support on and off: when that happens,
the user can get locked out of the account.

Change-Id: I06982a26cd808f2aaa26753cd3353ed82473d9e0

7 years agoMerge "Fix encryption code in Session"
jenkins-bot [Tue, 31 May 2016 16:17:32 +0000 (16:17 +0000)]
Merge "Fix encryption code in Session"

7 years agoFix encryption code in Session
Gergő Tisza [Mon, 30 May 2016 22:05:14 +0000 (22:05 +0000)]
Fix encryption code in Session

* verify that the algorithm that's about to be used is available
* fix exception namespace

Bug: T136587
Change-Id: I9f8636bef0e10b4f2b8bfe232a26a8c33376ca04

7 years agoAuthManager fixups around the login→RESTART→create flow
Brad Jorsch [Thu, 26 May 2016 17:09:14 +0000 (13:09 -0400)]
AuthManager fixups around the login→RESTART→create flow

* ApiQueryAuthManagerInfo will differentiate between preserved linking
  data and a preserved createRequest.
* ApiQueryAuthManagerInfo will indicate the preserved username, if any,
  because the client will have to pass that back to action=createaccount.
* ApiClientLogin won't tell about the confusing
  CreateFromLoginAuthenticationRequest returned on RESTART responses.
* Explain how 'preservestate' works in ApiAMCreateAccount's auto-doc.
* ConfirmLinkSecondaryAuthenticationProvider will filter out requests
  that can no longer be used (i.e. if it was for linking the account
  that got used for creation).
* All the complicated code in AuthManager::beginAccountCreation() was
  trying to deal with allowing the client to pass only the
  CreateFromLoginAuthenticationRequest. That was dumb, removed it.
* Added methods to CreateFromLoginAuthenticationRequest to indicate its
  status with respect to different kinds of preserved state.
* Increase accuracy of the AuthenticationResponse::$createRequest doc.

Change-Id: I726d79de18e739d6e60c1eea51453433c21ba207

7 years agoAvoid passing integers to mw.RegExp.escape
Santhosh Thottingal [Tue, 31 May 2016 09:48:14 +0000 (15:18 +0530)]
Avoid passing integers to mw.RegExp.escape

Passing the index value of the loop to mw.RegExp.escape
causes javascript error at str.replace. mw.RegExp.escape
expects string parameters. It is not required to escape
the loop index here.

Follow-up to c81ab8ae5f89056d23a4b0d36066120b9701d07e.

Bug: T135743
Change-Id: I818bc2c671193e79848ae183f509473200c6abf5

7 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 30 May 2016 19:56:25 +0000 (21:56 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Iafc12789c203b6b3d1ce0f81136f139a023ed972

7 years agopngcrush -brute -reduce on mediawiki.skinning
Nemo bis [Thu, 27 Nov 2014 12:52:56 +0000 (13:52 +0100)]
pngcrush -brute -reduce on mediawiki.skinning

About 25 % size reduction. Looks good in my image viewer.

Change-Id: I9e4815a75899a68e30b8c264f3d772c8ceb6301b

7 years agoExpose SearchEngine specific profiles
dcausse [Thu, 31 Mar 2016 09:13:21 +0000 (11:13 +0200)]
Expose SearchEngine specific profiles

This patch introduces a way for SearchEngine implementations to expose
specific search profiles useful to fine-tune the various behaviors related to
search.

A SearchEngine can expose a list of profiles by overriding
SearchEngine::getProfiles( $profileType ), profileType stands for the type of
profile being customized. Two types are added in this patch:
- completion: exposed by ApiQueryPrefixSearch and ApiOpenSearch to control
  the behavior of the algorithm behind "search as you type" suggestions.
- fulltext query independent profiles: exposed by ApiQuerySearch to customize
  query indpendent ranking profiles (e.g. boost by templates/incoming
  links/popularity/...)

This patch allows api consumers that might have been confused by fuzzy
suggestions to switch to stricter profiles and to officialize the behavior
behind the hidden param cirrusUseCompletionSuggester. Or to control the
fulltext ranking behaviors like cirrusBoostLinks=(yes|no).

The list of profiles can be discovered by using ApiSandbox/ApiHelp and is totally
controlled by search engine implementations.

Bug: T132477
Change-Id: I66be724d8975976c98c91badbf421f237e014f89

7 years agoReturn error message in users API cancreate field
Gergő Tisza [Mon, 30 May 2016 18:16:07 +0000 (20:16 +0200)]
Return error message in users API cancreate field

That API field exposes AuthManager::canCreateAccount, where the error
message is important.

Change-Id: Idef441b311b94ff0cb6c4deaed1ac93959ee7ee8

7 years agoFix rvtoken=rollback in ApiQueryRevisions
Timo Tijhof [Mon, 30 May 2016 16:15:09 +0000 (17:15 +0100)]
Fix rvtoken=rollback in ApiQueryRevisions

Follows-up 9af38c0. Token must match ApiRollback, RollbackAction,
Linker, and WikiPage. (This should not be in different 5 places!)

This broke the "PILT" gadget.

Bug: T136375
Change-Id: Ia6b6879a952925ec52fa627ba57991bc87fd947a

7 years agoHTMLRadioField: Only add 'mw-ui' classes when needed
Bartosz Dziewoński [Mon, 30 May 2016 15:00:00 +0000 (17:00 +0200)]
HTMLRadioField: Only add 'mw-ui' classes when needed

Otherwise the field would change if something loaded the deprecated
'mediawiki.ui' style modules.

Bug: T133114
Change-Id: I06ddeade961bdf11eda6572d246333d750cfc2ab

7 years agomediawiki.debug: Use monospaced font for debug toolbar, really
Bartosz Dziewoński [Mon, 30 May 2016 13:09:23 +0000 (15:09 +0200)]
mediawiki.debug: Use monospaced font for debug toolbar, really

It's "monospace", not "monospaced".

Follow-up to 19679b4f which introduced the mistake and 58920c46 which
incorrectly fixed it.

Change-Id: I898486baafebec13f42649ad2da832eb8a8ff1dd

7 years agoAdd single quotes around monospaced in less
Paladox [Mon, 30 May 2016 12:14:51 +0000 (13:14 +0100)]
Add single quotes around monospaced in less

Follow-Up: I3e3a7c110d4ceae8c1b65b35bf17b34fed7f68f8

Failed in

11:45:13 Running "stylelint:src" (stylelint) task
11:45:15 >>
/home/jenkins/workspace/mediawiki-core-npm-node-4.3/src/resources/src/mediawiki/mediawiki.debug.less
failed:
11:45:15 >> Line 98, column 15: Expected single quotes around font-family
name "monospaced" (font-family-name-quotes) (error)
11:45:15

Which this patch fixes.

Caused I278f6ef063d37c1b6325da76edc9f34b01c27087 to fail which this also
fixes.

Change-Id: I10f64ec5517176a43c292599e4bdb1ad7098929d

7 years agoMerge "API: Fixes for AuthManager"
jenkins-bot [Mon, 30 May 2016 12:37:34 +0000 (12:37 +0000)]
Merge "API: Fixes for AuthManager"

7 years agoMerge "Typo fix for AuthPluginPrimaryAuthenticationProvider::providerAllowsAuthentica...
jenkins-bot [Mon, 30 May 2016 12:31:51 +0000 (12:31 +0000)]
Merge "Typo fix for AuthPluginPrimaryAuthenticationProvider::providerAllowsAuthenticationDataChange"

7 years agoAPI: Fixes for AuthManager
Brad Jorsch [Tue, 24 May 2016 18:05:52 +0000 (14:05 -0400)]
API: Fixes for AuthManager

* Set API response metadata on the AuthenticationRequest metadata so it
  is output as an assoc generally.
* Remove the 'image' field in AuthenticationRequest::getFieldInfo()'s
  response, since we ended up not using it anywhere.
* Make it so meta=authmanagerinfo can be used on private wikis without
  logging in, so action=clientlogin can be used to log in.
** This generalizes the exception for meta=tokens that was added in
   I83dafb030.
* ApiAuthManagerInfo needs the "messageformat" parameter.
* ApiAuthManagerInfo shouldn't be publically cached, since the responses
  vary depending on session state.

Change-Id: Iea5ddb4ef9febed18f16a7ae8314968026f39148