3 years agoMerge "Add support for 'hu-formal'"
jenkins-bot [Wed, 7 Mar 2018 10:55:43 +0000 (10:55 +0000)]
Merge "Add support for 'hu-formal'"

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 7 Mar 2018 07:02:09 +0000 (08:02 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I8d388605f385e8be40f22459be2cda7105ce6600

3 years agoMerge "Use `class="free external"` only on unbracketed URLs"
jenkins-bot [Wed, 7 Mar 2018 05:49:24 +0000 (05:49 +0000)]
Merge "Use `class="free external"` only on unbracketed URLs"

3 years agoUse `class="free external"` only on unbracketed URLs
C. Scott Ananian [Wed, 28 Feb 2018 21:11:09 +0000 (16:11 -0500)]
Use `class="free external"` only on unbracketed URLs

The ability for URLs to be marked free even if they use bracketed syntax
but "sorta look free" (aka unbracketed) was added 13 years ago in
2d71cb30802e5cb78a423a1699ad87e23bfe9f4e (r7074).

It seemed like a reasonable idea at the time: make printed output a little
prettier by marking "sorta free" URLs as free.  But this complicates the
semantics of wikitext, and introduces all sorts of strange corner cases,
for example:

  [http://example.com/& http://example.com/&]

isn't marked as free, even though the parser output is:

  <a rel="nofollow" class="external text" href="http://example.com/&amp;">http://example.com/&amp;</a>

This functionality isn't actually needed: if you want the pretty printed
output of an unbracketed URL, then actually use an unbracketed URL.

In recent years we're more concerned with simplifying the semantics of
wikitext and eliminating corner cases, such that the content of our wikis
can be effectively archived.  The "effectively free" URLs are low-hanging
fruit in this quest.

Change-Id: I339e8698786c60c96a37a73443cb9a04362662c4

3 years agoMerge "Allow querying contributions of interwiki usernames"
jenkins-bot [Wed, 7 Mar 2018 04:25:32 +0000 (04:25 +0000)]
Merge "Allow querying contributions of interwiki usernames"

3 years agoSync up with Parsoid parserTests.txt
C. Scott Ananian [Tue, 6 Mar 2018 22:26:16 +0000 (17:26 -0500)]
Sync up with Parsoid parserTests.txt

This now aligns with Parsoid commit 7d2a92f81ebbc0941e8fba2a136f5929406ea5e6

Change-Id: I0b57b1bd3b0802ce08249dd0bf376b931d8c7698

3 years agoMerge "Use RemexHtml as the tidy implementation for parser tests"
jenkins-bot [Tue, 6 Mar 2018 22:27:42 +0000 (22:27 +0000)]
Merge "Use RemexHtml as the tidy implementation for parser tests"

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 6 Mar 2018 20:57:42 +0000 (21:57 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: Ic9ff9f542c9e630bcac1d4037ca3e8faf2dbcb03

3 years agoMerge "Change Recent Changes "Number of edits..." preference message"
jenkins-bot [Tue, 6 Mar 2018 20:02:12 +0000 (20:02 +0000)]
Merge "Change Recent Changes "Number of edits..." preference message"

3 years agoAllow querying contributions of interwiki usernames
Brad Jorsch [Mon, 12 Feb 2018 15:11:40 +0000 (10:11 -0500)]
Allow querying contributions of interwiki usernames

Both for Special:Contributions and ApiQueryUserContributions.

Bug: T187079
Change-Id: I4398e473b90172851e875b3f219f7076dceda66c

3 years agoDon't target log_user_text for registered users
Brad Jorsch [Tue, 6 Mar 2018 16:18:45 +0000 (11:18 -0500)]
Don't target log_user_text for registered users

Apparently when log_user_text was added no one bothered to populate it
for existing rows. Sigh, #Technical-Debt.

Bug: T188826
Change-Id: Ice1e6454e439a4abdf9594f6e964478dd484bc20

3 years agoMerge "mediawiki.special.apisandbox: Reorder functions"
jenkins-bot [Tue, 6 Mar 2018 12:47:42 +0000 (12:47 +0000)]
Merge "mediawiki.special.apisandbox: Reorder functions"

3 years agoMerge "Introduce DatabaseLogEntry::newFromId"
jenkins-bot [Tue, 6 Mar 2018 02:53:18 +0000 (02:53 +0000)]
Merge "Introduce DatabaseLogEntry::newFromId"

3 years agoMerge "Add test for WikiPage post-edit stats update"
jenkins-bot [Tue, 6 Mar 2018 01:51:27 +0000 (01:51 +0000)]
Merge "Add test for WikiPage post-edit stats update"

3 years agoMerge "rdbms: cleanup some type checks and documentation"
jenkins-bot [Tue, 6 Mar 2018 01:21:46 +0000 (01:21 +0000)]
Merge "rdbms: cleanup some type checks and documentation"

3 years agoAdd test for WikiPage post-edit stats update
Aaron Schulz [Wed, 28 Feb 2018 02:01:02 +0000 (18:01 -0800)]
Add test for WikiPage post-edit stats update

Bug: T187585
Change-Id: I734b7f42799a9bfe77a1fb1269bb3d48b3852ffd

3 years agoIntroduce DatabaseLogEntry::newFromId
Max Semenik [Sat, 3 Mar 2018 03:56:39 +0000 (19:56 -0800)]
Introduce DatabaseLogEntry::newFromId

It's a helper function for when you need just one log entry.

Change-Id: Ic5e9db0def857d9dcecbd06bf081c8c83712c1ea

3 years agoMerge "resourceloader: Add test for non-empty user module in scripts-only queue"
jenkins-bot [Mon, 5 Mar 2018 23:49:06 +0000 (23:49 +0000)]
Merge "resourceloader: Add test for non-empty user module in scripts-only queue"

3 years agoMerge "Update docs for AllowUserCssPrefs to not mention performance"
jenkins-bot [Mon, 5 Mar 2018 23:42:38 +0000 (23:42 +0000)]
Merge "Update docs for AllowUserCssPrefs to not mention performance"

3 years agoMerge "DifferenceEngine: Use CSS classes instead of inline styles"
jenkins-bot [Mon, 5 Mar 2018 23:41:26 +0000 (23:41 +0000)]
Merge "DifferenceEngine: Use CSS classes instead of inline styles"

3 years agoresourceloader: Add test for non-empty user module in scripts-only queue
Timo Tijhof [Mon, 5 Mar 2018 22:41:29 +0000 (14:41 -0800)]
resourceloader: Add test for non-empty user module in scripts-only queue

The getData() tests did have a test case for a 'user' group module with
isKnownEmpty in the script-only queue, but not yet a non-empty one.

The makeLoad() tests did have both already. Arguably the makeLoad()
tests are higher level and observe its behaviour already (outputting
a script tag means 'loading', outputting nothing means 'ready'),
but adding it to the getData() tests for consistency.

Bug: T188689
Change-Id: I842febf996ba8bb0ea25b5ca3b5ac4503db87376

3 years agoSECURITY: Fix revdel checks in LogPager
Brian Wolff [Fri, 23 Feb 2018 21:52:25 +0000 (21:52 +0000)]
SECURITY: Fix revdel checks in LogPager

Follow-up to ce881e02e8d6 where the check for performer
restrictions and action restrictions was reversed.

Bug: T188145
Change-Id: I85a44f925212929ac87fb7a7e494023258f2d148

3 years agoUpdate docs for AllowUserCssPrefs to not mention performance
Timo Tijhof [Mon, 5 Mar 2018 22:15:44 +0000 (14:15 -0800)]
Update docs for AllowUserCssPrefs to not mention performance

* Before 2011, this was implemented as an inline stylesheet in OutputPage.
* In 2011, this was re-implemented through the 'user.cssprefs' module
  (class: ResourceLoaderUserCSSPrefsModule) embedded in OutputPage.
* Between 2013 and 2016, all user-css preferences have either been
  removed or migrarated to not need this module, eventually resulting
  in the removal of that module in 2c688cfb11ea6c.

More details on T127328, but suffice it to say, it has no significant
performance concerns currently.

Change-Id: Ia89c4f91ecb67e3116989f2ea97c7ca69275a2fb

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 5 Mar 2018 21:04:47 +0000 (22:04 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I6aab8000374adfaa44c7f4ec3490969f58419f06

3 years ago[JobQueueSecondTestQueue] Support read-only mode.
Petr Pchelko [Mon, 5 Mar 2018 19:44:11 +0000 (16:44 -0300)]
[JobQueueSecondTestQueue] Support read-only mode.

In order to switch non-idempotent jobs without losing the
backlog in redis we should support read-only mode in the queue,
where the messages only gets written into the new queue.

Change-Id: I2e9cb2d9cbbd2d657d042b55d4ea0819d21cdd6f

3 years agoMerge "Revert "Log the reason why revision->getContent() returns null""
jenkins-bot [Mon, 5 Mar 2018 18:51:58 +0000 (18:51 +0000)]
Merge "Revert "Log the reason why revision->getContent() returns null""

3 years agoMerge "EditPage: In the list of "templates used", highlight redirect templates"
jenkins-bot [Mon, 5 Mar 2018 18:33:47 +0000 (18:33 +0000)]
Merge "EditPage: In the list of "templates used", highlight redirect templates"

3 years agoEditPage: In the list of "templates used", highlight redirect templates
AdityaJ [Sat, 3 Mar 2018 08:25:17 +0000 (13:55 +0530)]
EditPage: In the list of "templates used", highlight redirect templates

Bug: T188737
Change-Id: I16af53c5048a95fd166f8e79ea26f164c1d3a49d

3 years agoDifferenceEngine: Use CSS classes instead of inline styles
Bartosz Dziewoński [Mon, 5 Mar 2018 18:24:37 +0000 (19:24 +0100)]
DifferenceEngine: Use CSS classes instead of inline styles

Change-Id: Iee0e5e7eb73023a6f57c1f462e71cbb0e771d1f2

3 years agoMerge "StripState testing and cleanup"
jenkins-bot [Mon, 5 Mar 2018 18:04:06 +0000 (18:04 +0000)]
Merge "StripState testing and cleanup"

3 years agoMerge "Limit total expansion size in StripState and improve limit handling"
jenkins-bot [Mon, 5 Mar 2018 18:02:30 +0000 (18:02 +0000)]
Merge "Limit total expansion size in StripState and improve limit handling"

3 years agoRevert "Log the reason why revision->getContent() returns null"
Sbisson [Mon, 5 Mar 2018 15:17:46 +0000 (15:17 +0000)]
Revert "Log the reason why revision->getContent() returns null"

This reverts commit 8eb00f158422e5e2a9198f9d4318a1570b0f47af.

Change-Id: Id14fd26845349f8aca110ac1bad0598770122f25

3 years agoMerge "Fix master/replica race condition when creating null revisions"
jenkins-bot [Mon, 5 Mar 2018 11:59:33 +0000 (11:59 +0000)]
Merge "Fix master/replica race condition when creating null revisions"

3 years agoStripState testing and cleanup
Tim Starling [Wed, 28 Feb 2018 09:42:40 +0000 (20:42 +1100)]
StripState testing and cleanup

* Added StripState unit tests
* Deprecated unmaintained "half-parsed" serialization experiment
* Renamed some variables for brevity and removed unused "prefix"

Change-Id: I838d7ac7f9a2189e13d39c6939dba5d70e74a6b7

3 years agoLimit total expansion size in StripState and improve limit handling
Tim Starling [Wed, 28 Feb 2018 02:11:56 +0000 (13:11 +1100)]
Limit total expansion size in StripState and improve limit handling

* Add a new limit to the parser which limits the size of the output
  generated by StripState. The relevant bug shows exponential blowup in
  output size.
* Remove the $prefix parameter from the StripState constructor. Used by
  no Gerrit-hosted extensions, hard-deprecated since 1.26.
* Convert the existing unstrip recursion depth limit to a normal parser
  limit with limit report row, warning and tracking category. Provide
  the same features in the new limit.
* Add an optional $parser parameter to the StripState constructor so
  that warnings and tracking categories can be added.

Bug: T187833
Change-Id: Ie5f6081177610dc7830de4a0a40705c0c8cb82f1

3 years agomediawiki.special.apisandbox: Reorder functions
Fomafix [Sat, 3 Mar 2018 19:38:14 +0000 (20:38 +0100)]
mediawiki.special.apisandbox: Reorder functions

This avoids forward references and
  /* eslint-disable no-use-before-define */
can removed.

Change-Id: If26a9c275665d20864687cd99d3679b362291fa9

3 years agoApiQueryContributors: Use correct variable
Brad Jorsch [Sun, 4 Mar 2018 04:31:02 +0000 (23:31 -0500)]
ApiQueryContributors: Use correct variable

Bug: T188813
Change-Id: Ibc705d61d57cfe8867d1bde35781515c25b777c1

3 years agordbms: cleanup some type checks and documentation
Aaron Schulz [Fri, 2 Mar 2018 10:11:35 +0000 (02:11 -0800)]
rdbms: cleanup some type checks and documentation

This clears up some IDEA warnings for database classes

Change-Id: Ic6f3812b012c1791986d24723b757daf4e151e45

3 years agoMerge "Drop 'comma' value for wgArticleCountMethod"
jenkins-bot [Sat, 3 Mar 2018 23:06:23 +0000 (23:06 +0000)]
Merge "Drop 'comma' value for wgArticleCountMethod"

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sat, 3 Mar 2018 20:59:53 +0000 (21:59 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I12d8afdf599386fa27fd3f9ff96f77e16ef9a560

3 years agoFix master/replica race condition when creating null revisions
Roan Kattouw [Sat, 3 Mar 2018 03:54:45 +0000 (19:54 -0800)]
Fix master/replica race condition when creating null revisions

RevisionStore::newFromNullRevision() carefully reads the latest revision
from the master, but then forgets to instruct emulateMainSlot_1_29() to
do the same, so the lookup query for rev_text_id in the text table is
done against a replica.

This is not usually a problem for null revisions, but it is a problem
when editing a page and then immediately moving it: this causes a null
revision to be created based on a freshly created revision, which
doesn't yet exist on the replica.

Bug: T184670
Change-Id: Ied4db5ee770716ff3edb918d2be722934c79d0c7

3 years agoUse RemexHtml as the tidy implementation for parser tests
Kunal Mehta [Fri, 9 Feb 2018 20:10:07 +0000 (12:10 -0800)]
Use RemexHtml as the tidy implementation for parser tests

* RemexHtml is the future of "tidy" in MediaWiki,
  so run our parser tests using it.

* This is a necessary step before we can make it
  the default in MediaWiki (T185753).

* Cleaned up a bunch of tests:
  (a) where html/php+tidy and html/parsoid match up,
      retained a html+tidy section and removed the others.
  (b) where html/php and html/php+tidy match up,
      retained the html/php section and removed the
      html/php+tidy section.

* Annotating tests with explanations where Parsoid & Remex
  output differ. This is usually because of two reasons:
  (a) Parsoid has Tidy-emulation code in some cases (which
      we can consider stripping away separately).
  (b) Parsoid does a bunch of cleanup on the DOM (which was
      probably done to emulate Tidy output, but which could
      probably be retained). Since Parsoid (in some form)
      will be default parser in the future, no reason to try
      to port this cleanup (in broken markup scenarios) into

* Left a bunch of FIXMEs for later followup.

Unrelated cleanup:
* Renamed a few tests since the functionality in Parsoid
  was fixed up. There is no more "implicit <td>" support.
  Those all now lead to fostered content.
* Fixed some clearly broken output in html/parsoid sections
  for some tests.

Co-Authored-by: Kunal Mehta <legoktm@member.fsf.org>
Co-Authored-by: Subramanya Sastry <ssastry@wikimedia.org>
Bug: T188167
Depends-On: I646dbabb3c2ed28c1ea72c5bd8f7f92d03f57c75
Change-Id: Ic7c34d57a300dbd36a37f03fbfe33391b2950b44

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 2 Mar 2018 21:01:20 +0000 (22:01 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I29741ea3f2e69c74456584857b144f2cdb7465f9

3 years agoMerge "Introduce hasSlot in RevisionRecord and RevisionSlots."
jenkins-bot [Fri, 2 Mar 2018 20:38:59 +0000 (20:38 +0000)]
Merge "Introduce hasSlot in RevisionRecord and RevisionSlots."

3 years ago[MCR] NameTableStore
addshore [Tue, 16 Jan 2018 13:53:22 +0000 (13:53 +0000)]
[MCR] NameTableStore

General purpose cached store for things like:
 - content_models (id,name)
 - slot_roles (id,name)
And in the future possibly namespaces & content_formats
as mentioned at:

Bug: T188518
Change-Id: Ia550ef7fe30af25ac3fee5ac8a89d032544563bf

3 years agoMerge "rdbms: make LoadBalancer::getConnection() ignore CONN_TRX_AUTO when unusable"
jenkins-bot [Fri, 2 Mar 2018 19:26:49 +0000 (19:26 +0000)]
Merge "rdbms: make LoadBalancer::getConnection() ignore CONN_TRX_AUTO when unusable"

3 years agoMerge "rdbms: avoid strange uses of empty()"
jenkins-bot [Fri, 2 Mar 2018 19:13:58 +0000 (19:13 +0000)]
Merge "rdbms: avoid strange uses of empty()"

3 years agoMerge "rdbms: add missing hint check DatabaseMysqlBase::isInsertSelectSafe"
jenkins-bot [Fri, 2 Mar 2018 19:10:28 +0000 (19:10 +0000)]
Merge "rdbms: add missing hint check DatabaseMysqlBase::isInsertSelectSafe"

3 years agoMerge "Ensure abort link parsing on xmlish tag in link title position"
jenkins-bot [Fri, 2 Mar 2018 18:55:37 +0000 (18:55 +0000)]
Merge "Ensure abort link parsing on xmlish tag in link title position"

3 years agordbms: make LoadBalancer::getConnection() ignore CONN_TRX_AUTO when unusable
Aaron Schulz [Wed, 28 Feb 2018 00:00:05 +0000 (16:00 -0800)]
rdbms: make LoadBalancer::getConnection() ignore CONN_TRX_AUTO when unusable

Change-Id: I1fd13171c3cfbe071e8e398d561281188d998767

3 years agoMerge "Fix undefined $ok in DatabaseUpdater::migrateComments"
jenkins-bot [Fri, 2 Mar 2018 16:36:26 +0000 (16:36 +0000)]
Merge "Fix undefined $ok in DatabaseUpdater::migrateComments"

3 years agoFix undefined $ok in DatabaseUpdater::migrateComments
Reedy [Fri, 2 Mar 2018 16:24:50 +0000 (16:24 +0000)]
Fix undefined $ok in DatabaseUpdater::migrateComments

Change-Id: I608a693e688039526975ef5d3fe4c40c7679ed7b

3 years agoMerge "User: Remove ::setCookie/etc., deprecated in 1.27"
jenkins-bot [Fri, 2 Mar 2018 11:10:08 +0000 (11:10 +0000)]
Merge "User: Remove ::setCookie/etc., deprecated in 1.27"

3 years agoMerge "EditPage: Remove methods from OOUI transition, deprecated in 1.30"
jenkins-bot [Fri, 2 Mar 2018 11:03:59 +0000 (11:03 +0000)]
Merge "EditPage: Remove methods from OOUI transition, deprecated in 1.30"

3 years agoMerge "resourceloader: Un-deprecate makeLoaderConditionalScript()"
jenkins-bot [Fri, 2 Mar 2018 11:01:07 +0000 (11:01 +0000)]
Merge "resourceloader: Un-deprecate makeLoaderConditionalScript()"

3 years agoUser: Remove ::setCookie/etc., deprecated in 1.27
James D. Forrester [Tue, 27 Feb 2018 23:55:34 +0000 (15:55 -0800)]
User: Remove ::setCookie/etc., deprecated in 1.27

Change-Id: I6b37ffd957cdeba79037dadd36f50e0a0b89e5f5

3 years agoEditPage: Remove methods from OOUI transition, deprecated in 1.30
James D. Forrester [Tue, 27 Feb 2018 23:34:49 +0000 (15:34 -0800)]
EditPage: Remove methods from OOUI transition, deprecated in 1.30

No uses found in code search.

Change-Id: I683538f72eab3002ebb4b3e0c76a1ffa6fb9e39a

3 years agordbms: in Database::selectSQLText, do not treat $conds = "0" as no condition
daniel [Tue, 27 Feb 2018 18:08:47 +0000 (19:08 +0100)]
rdbms: in Database::selectSQLText, do not treat $conds = "0" as no condition

This fixes an issue that arises because empty( "0" ) is true in PHP.

The new behavior rejects any conditions that are not strings or arrays,
and lets $conds = "0" be passed to the databases as WHERE 0.

Some databases may reject this as invalid syntax, which is the expected
behavior here, instead of silently ignoring the 0, causing no condition to
be applied to the query.

Bug: T188314
Change-Id: I5bc4d7f41221a886c85e54d9da67c4c095a7d9ce

3 years agordbms: add missing hint check DatabaseMysqlBase::isInsertSelectSafe
Aaron Schulz [Fri, 2 Mar 2018 04:41:32 +0000 (20:41 -0800)]
rdbms: add missing hint check DatabaseMysqlBase::isInsertSelectSafe

This was lost when a bunch of other logic was split off in 671368a59e3

Change-Id: I3d3f744f8fce007ecf88cbd2c9f99918b06f0573

3 years agordbms: avoid strange uses of empty()
Aaron Schulz [Fri, 2 Mar 2018 04:30:07 +0000 (20:30 -0800)]
rdbms: avoid strange uses of empty()

Change-Id: Id1a8d1aae72cdee48e43ddb3227cd697516411e0

3 years agoMerge "Expose the latest modified index seen by EtcdConfig"
jenkins-bot [Fri, 2 Mar 2018 03:59:40 +0000 (03:59 +0000)]
Merge "Expose the latest modified index seen by EtcdConfig"

3 years agoMerge "rdbms: make Database::insertSelect() stricter about replication safety"
jenkins-bot [Fri, 2 Mar 2018 02:50:32 +0000 (02:50 +0000)]
Merge "rdbms: make Database::insertSelect() stricter about replication safety"

3 years agordbms: make Database::insertSelect() stricter about replication safety
Aaron Schulz [Wed, 28 Feb 2018 23:33:03 +0000 (15:33 -0800)]
rdbms: make Database::insertSelect() stricter about replication safety

Avoid the native INSERT SELECT method if a LIMIT clause is present.

Change-Id: Ibf9b8a4a42092fbc98d7ebd45167203a6a8801ee

3 years agoPass '' instead of false for the $conds parameter in select calls.
daniel [Tue, 27 Feb 2018 18:37:26 +0000 (19:37 +0100)]
Pass '' instead of false for the $conds parameter in select calls.

Per documentation on IDatabase, $conds must be a string or an array.
Passing false for conds is confusing, since it's unclear whether this
should match everything or nothing.

Bug: T188314
Change-Id: I8be1ac4cbdaafc41aadc2a658be8a99b754b0268

3 years agoresourceloader: Un-deprecate makeLoaderConditionalScript()
Timo Tijhof [Fri, 2 Mar 2018 01:12:03 +0000 (17:12 -0800)]
resourceloader: Un-deprecate makeLoaderConditionalScript()

It was deprecated to encourage callers to use makeInlineScript()
instead, because before makeInlineScript() was introduced, callers
would often manually wrap it in a <script> tag, which we don't want
because 1) We want de-duplication through WrappedString and 2)
callers sometimes forget to use Html.php methods that ensure
proper escaping as-needed.

However, there is still use in getting thet wrapped script without
also the wrapped HTML script tag. Namely, for use in http responses
that produce JavaScript, rather than HTML, where there cannot be
an HTML script tag.

There is at least one such caller (in SpecialJavaScriptTest) and
it's fine for there to be others.

Change-Id: Icfc285e12293c76dc68a220deb6816e32b058209

3 years agoFollow-up 6d4e1547: Hard-deprecate these functions
James D. Forrester [Tue, 27 Feb 2018 23:24:03 +0000 (15:24 -0800)]
Follow-up 6d4e1547: Hard-deprecate these functions

Only use in Wikimedia production is in GlobalCssJs, below.

Depends-On: I7543fe9ea393901379c16c4f0b1e96fa20955b6f
Change-Id: I66292b179d948e46dba3513f50c3d36012765a9d

3 years agoDrop 'comma' value for wgArticleCountMethod
James D. Forrester [Wed, 28 Feb 2018 01:45:27 +0000 (17:45 -0800)]
Drop 'comma' value for wgArticleCountMethod

We have three methods for page counting currently supported for wikitext
non-redirect pages; 'any' counts any page that exists, 'link' counts any
page that has any outbound links, and 'comma' which searches for any ','
in the text having loaded it. This last option is much slower than these
other two, and is only used on a very small number of installations. Now
by dropping support for this method we can simplify this code and so run
it more often. Note that non-wikitext pages already did not support this
count method.

Installations with this setting set to 'comma', or any other string will
now work as if it was configured with 'any'.

Bug: T188472
Change-Id: I965927edcd2485ec4b49b2d80fdf216dbf19520b

3 years agordbms: make replace()/upsert() use atomic sections
Aaron Schulz [Wed, 28 Feb 2018 22:41:18 +0000 (14:41 -0800)]
rdbms: make replace()/upsert() use atomic sections

This makes them consistent with nonNativeInsertSelect()

Style aside, there is also the potential edge case of:
a) no transaction being active yet, with
b) the first query being replace() or upsert(), with
c) DBO_TRX being set (usually part of an implicit transaction round)

Previously, in that case, these methods would commit the transaction
they started, rather than leave it open. The correct semantics are
to leave it open. Since MySQL redefined upsert() to use ON DUPLICATE
KEY UPDATE, it already had the right behavior.

Also make sure that rollback() always sets the affectedRowCount
field to 0.

Change-Id: I15f923d3d4799cffc60e3aaea934f4ca1a9488e1

3 years agoMerge "rdbms: refactored code into separate Database::getClass method"
jenkins-bot [Thu, 1 Mar 2018 21:49:46 +0000 (21:49 +0000)]
Merge "rdbms: refactored code into separate Database::getClass method"

3 years agordbms: refactored code into separate Database::getClass method
Aaron Schulz [Tue, 27 Feb 2018 21:44:14 +0000 (13:44 -0800)]
rdbms: refactored code into separate Database::getClass method

Change-Id: Ic09ce2ea541d04f3cb3bc80a4a59c8b525ed8c53

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 1 Mar 2018 20:57:02 +0000 (21:57 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: Ibd74ef97fc27e4cd42491a049f9bd08a06859487

3 years agoMerge "multiselect: Use MenuTagMultiselectWidget"
jenkins-bot [Thu, 1 Mar 2018 20:04:28 +0000 (20:04 +0000)]
Merge "multiselect: Use MenuTagMultiselectWidget"

3 years agomultiselect: Use MenuTagMultiselectWidget
Prateek Saxena [Thu, 1 Mar 2018 07:00:53 +0000 (12:30 +0530)]
multiselect: Use MenuTagMultiselectWidget

…instead of CapsuleMultiselectWidget

Bug: T183299
Change-Id: I58385968c03e9b53ea8fc4d64de5d6540d12acc1

3 years agoEnsure abort link parsing on xmlish tag in link title position
Arlo Breault [Thu, 1 Mar 2018 18:59:43 +0000 (13:59 -0500)]
Ensure abort link parsing on xmlish tag in link title position

This shouldn't be dependent on the current definition of legal title
chars and strip marker.

See the test "<nowiki> inside a link"

Change-Id: I0d87aca1bb0adf4ec5ac480e0373a65fcd150a72

3 years agomw.widgets: Add SizeFilterWidget and its PHP implementation
Prateek Saxena [Fri, 29 Dec 2017 05:27:44 +0000 (10:57 +0530)]
mw.widgets: Add SizeFilterWidget and its PHP implementation

Bug: T183765
Change-Id: Ieb551e901405749489059366de9af6316f369cc0

3 years agoNewPagesPages: Use array_merge rather than + for RC query info fields
Brad Jorsch [Thu, 1 Mar 2018 13:24:48 +0000 (08:24 -0500)]
NewPagesPages: Use array_merge rather than + for RC query info fields

Unlike CommentStore::getJoin() and ActorMigration::getJoin(), the tables
and fields of various ::getQueryInfo() methods aren't guaranteed to be
safe to use with array '+'.

Bug: T188555
Change-Id: Ibe99edcb93d1729935fed6232ba4fe2e7d39cea6

3 years agoExpose the latest modified index seen by EtcdConfig
Giuseppe Lavagetto [Fri, 16 Feb 2018 16:08:58 +0000 (17:08 +0100)]
Expose the latest modified index seen by EtcdConfig

While not immediately useful for fecthing the configuration, this is
basically a version information about the configuration currently loaded
from etcd. A typical use-case for this index is monitoring the freshness
of the configuration across a cluster of servers.

Bug: T182597
Change-Id: I58189d36a5b620fb44323bae87257f085a64386e

3 years agoMerge "Only add header when description not already has it"
jenkins-bot [Thu, 1 Mar 2018 09:56:20 +0000 (09:56 +0000)]
Merge "Only add header when description not already has it"

3 years agoMerge "Fix bogus DatabaseOracle::__construct() calls in OracleInstaller"
jenkins-bot [Thu, 1 Mar 2018 01:22:13 +0000 (01:22 +0000)]
Merge "Fix bogus DatabaseOracle::__construct() calls in OracleInstaller"

3 years agoMerge "Use findSelectedItems instead of getSelectedItems"
jenkins-bot [Thu, 1 Mar 2018 00:02:05 +0000 (00:02 +0000)]
Merge "Use findSelectedItems instead of getSelectedItems"

3 years agoUse findSelectedItems instead of getSelectedItems
Prateek Saxena [Wed, 28 Feb 2018 05:44:46 +0000 (11:14 +0530)]
Use findSelectedItems instead of getSelectedItems

Bug: T76630
Depends-on: Ic1be36b62f6c48c9f40feace009fe4ca3e7a8e3f
Change-Id: I0f0e0f3494e2993e604dd7d0e6d15c2d1f34e772

3 years agoFix bogus DatabaseOracle::__construct() calls in OracleInstaller
Aaron Schulz [Wed, 28 Feb 2018 19:25:15 +0000 (11:25 -0800)]
Fix bogus DatabaseOracle::__construct() calls in OracleInstaller

Change-Id: I12a35ac0eeb68e5da9ba07ba44d3522213e9de8e

3 years agoMerge "rdbms: allow callers to hint that native insertSelect() is safe"
jenkins-bot [Wed, 28 Feb 2018 22:37:30 +0000 (22:37 +0000)]
Merge "rdbms: allow callers to hint that native insertSelect() is safe"

3 years agoMerge "Database: Add batching to non-native insertSelect()"
jenkins-bot [Wed, 28 Feb 2018 22:04:13 +0000 (22:04 +0000)]
Merge "Database: Add batching to non-native insertSelect()"

3 years agoMerge "Fix table loading bug for CRH transliteration"
jenkins-bot [Wed, 28 Feb 2018 21:09:01 +0000 (21:09 +0000)]
Merge "Fix table loading bug for CRH transliteration"

3 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 28 Feb 2018 20:57:46 +0000 (21:57 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I59d4acb939e5ac374a3166c5edf61f72bde87e37

3 years agoMerge "Parser: Don't wrap <style> or <link> tags in paragraphs"
jenkins-bot [Wed, 28 Feb 2018 19:29:34 +0000 (19:29 +0000)]
Merge "Parser: Don't wrap <style> or <link> tags in paragraphs"

3 years agoParser: Don't wrap <style> or <link> tags in paragraphs
Brad Jorsch [Mon, 26 Feb 2018 21:49:08 +0000 (16:49 -0500)]
Parser: Don't wrap <style> or <link> tags in paragraphs

If <style> or <link> tags are by themselves on a line, don't wrap them
in <p> tags. But, at the same time, don't end an existing paragraph if
we find <style> or <link> in the middle (like we would if we just
treated them as block tags).

If <style> or <link> is on a line with other text, though, let it be
wrapped in a paragraph along with that other text.

Bug: T186965
Change-Id: Ide4005842cdab537226aa538cb5f7d8e363ba95d

3 years agordbms: allow callers to hint that native insertSelect() is safe
Brad Jorsch [Thu, 8 Feb 2018 19:18:24 +0000 (14:18 -0500)]
rdbms: allow callers to hint that native insertSelect() is safe

An INSERT SELECT in MySQL/MariaDB is unsafe for replication if a column
is getting values from auto-increment, statement-based replication is in
use, and the default innodb_autoinc_lock_mode is set.

I9173f655 added checks to force non-native insertSelect for the
statement-based replication and innodb_autoinc_lock_mode != 2 case, but
determining whether a column is getting values from auto-increment is
too hard to do automatically there.

Instead, let's add a flag to let the caller hint that the query isn't
getting any auto-increment values. And use it in MysqlUpdater when

Bug: T160993
Change-Id: If70450a64aa3bcbf763c62838bb21306d124ae3d

3 years agoDatabase: Add batching to non-native insertSelect()
Brad Jorsch [Thu, 8 Feb 2018 19:16:29 +0000 (14:16 -0500)]
Database: Add batching to non-native insertSelect()

It would be easy for a call to nonNativeInsertSelect() to generate an
INSERT that's too big for the database to actually process. Add batching
to try to avoid that.

Bug: T160993
Change-Id: I1de994208d95926f0d75c0d7cab7b5fe1dd565c3

3 years agoMerge "Separate additional swift users for public and private"
jenkins-bot [Wed, 28 Feb 2018 18:19:25 +0000 (18:19 +0000)]
Merge "Separate additional swift users for public and private"

3 years agoMerge "API: Update main description to reflect reality"
jenkins-bot [Wed, 28 Feb 2018 17:12:57 +0000 (17:12 +0000)]
Merge "API: Update main description to reflect reality"

3 years agoMerge "WikiPage: Avoid $user variable reuse in doDeleteArticleReal()"
jenkins-bot [Wed, 28 Feb 2018 14:16:29 +0000 (14:16 +0000)]
Merge "WikiPage: Avoid $user variable reuse in doDeleteArticleReal()"

3 years agoMerge "Update namespaces for Sindhi"
Nikerabbit [Wed, 28 Feb 2018 11:58:55 +0000 (11:58 +0000)]
Merge "Update namespaces for Sindhi"

3 years agoWikiPage: Avoid $user variable reuse in doDeleteArticleReal()
Kunal Mehta [Wed, 28 Feb 2018 05:47:29 +0000 (21:47 -0800)]
WikiPage: Avoid $user variable reuse in doDeleteArticleReal()

$user was being used to represent the person who was deleting the page as
well as a variable when dermining the person who made an edit in each
row as it was moved to the archive table.

Make it unambigious which variable is used to represent the person deleting
the article by renaming it to $deleter.

Bug: T188479
Change-Id: Ia06e7fb840ebc68446127352e336a7e33c813042

3 years agoMerge "In StripState use closures instead of temporary member variables"
jenkins-bot [Wed, 28 Feb 2018 05:05:56 +0000 (05:05 +0000)]
Merge "In StripState use closures instead of temporary member variables"

3 years agoMerge "Avoid use of deprecated SiteStatsUpdate::__construct()"
jenkins-bot [Wed, 28 Feb 2018 05:04:52 +0000 (05:04 +0000)]
Merge "Avoid use of deprecated SiteStatsUpdate::__construct()"

3 years agoAPI: Update main description to reflect reality
Kunal Mehta [Wed, 28 Feb 2018 04:36:34 +0000 (20:36 -0800)]
API: Update main description to reflect reality

For quite a while now, the API no longer "may change at any time". Any
potential breaking change goes through code review, usage analysis, and
usually, a deprecation process.

This process was implemented as part of the "API roadmap"[1] RfC in

Today, the API is mature and stable, but still actively developed and
maintained. Breaking changes can still happen, and we want people to
subscribe to the -announce mailing list, but it's not as scary as the
old text implied.


Change-Id: If13172a35a3d041bce745aa72a835bfddcfe62c0

3 years agoMerge "Do not run ipblocks cleanup randomly, just do it all the time"
jenkins-bot [Wed, 28 Feb 2018 03:53:47 +0000 (03:53 +0000)]
Merge "Do not run ipblocks cleanup randomly, just do it all the time"

3 years agoDo not run ipblocks cleanup randomly, just do it all the time
Amir Sarabadani [Fri, 23 Feb 2018 16:58:58 +0000 (17:58 +0100)]
Do not run ipblocks cleanup randomly, just do it all the time

It's a deferred update and the number of blocks are small

Change-Id: I75e0b7dc38b22f8aa7453582d535a8ab8121fd1a