Commit graph

6792 commits

Author SHA1 Message Date
Tim Eulitz
341320457c Show confirmation prompt on rollback links
Bug: T215020
Change-Id: Ic831888e30808a20a04397912498fe2ca04f80ba
2019-03-21 10:13:22 +00:00
tzhelyazkova
aca802509e Add a user preference to opt in or out of a confirmation prompt for rollbacks.
Bug: T199537
Change-Id: I2f08ef5f8c38f23b282e130d040681fc060b6b00
2019-03-21 09:05:27 +01:00
Roan Kattouw
1da7573bb7 WatchedItemStore: Use batching in setNotificationTimestampsForUser
Update rows in batches, using the same logic as is used by
removeWatchBatchForUser().

Also remove the functionality for updating all rows, and move that to
resetAllNotificationTimestampsForUser() instead. To that end, add a
timestamp parameter to that method and to the job it uses, and make
setNotificationTimestampsForUser() behave like a backwards-compatibility
wrapper around resetAllNotificationTimestampsForUser() when no list of
titles is specified.

Bug: T207941
Change-Id: I58342257395de6fcfb4c392b3945b12883ca1680
Follows-Up: I2008ff89c95fe6f66a3fd789d2cef0e8fe52bd93
2019-03-21 04:41:42 +00:00
jenkins-bot
081a44ff0c Merge "Validate the output of the dump scripts." 2019-03-20 23:13:50 +00:00
daniel
94d559b149 Validate the output of the dump scripts.
This introduces XML schema validation into the unit tests for
the backup dump scripts. This is intended to ensure that the
output keeps conforming to the schema when updating XmlDumpWriter
and friends to support newer schema versions.

Bug: T174031
Change-Id: Iafa8cb8ba5b3684a08172e92974edaf0482f19b7
2019-03-20 22:25:20 +01:00
Aaron Schulz
59cf3ed572 Fix typo in McrSchemaOverride
Change-Id: Ifedb6276d9b4188e2aacacf38bf608f7ea36201b
2019-03-19 21:29:14 -07:00
jenkins-bot
68b12dfded Merge "Make BackupDumper MCR compatible (main slot only)" 2019-03-20 02:15:43 +00:00
jenkins-bot
a510a1c50d Merge "Remove many references to db fields being retired as part of MCR Schema Migration" 2019-03-19 18:09:30 +00:00
Bill Pirkle
f7afe42713 Remove many references to db fields being retired as part of MCR Schema Migration
Remove many references to database fields rev_text_id and ar_text_id,
which are being retired as part of MCR Schema Migration.
Some references remain, and will be removed under other patchsets
or other tasks.

Bug: T198341
Change-Id: Id044b8dcd7c9d09d5d6037eb732f6a105933f516
2019-03-19 10:50:54 -05:00
Timo Tijhof
44f0081371 debug: Disable flaky CeeFormatterTest
Follows-up 667b17a319.

Bug: T218688
Change-Id: I70afc5b9c41ae8d593d71f27bc55b424d9de260c
2019-03-19 15:25:18 +00:00
jenkins-bot
da42dd58e7 Merge "parser: Omit outputting newline after final line" 2019-03-19 14:37:16 +00:00
jenkins-bot
5cee20de10 Merge "Remove rollback confirmation user preference" 2019-03-19 14:36:36 +00:00
jenkins-bot
76e1adc554 Merge "parser: Remove trailing newline after prefixes have been cleared" 2019-03-19 14:18:30 +00:00
Tim Eulitz
07c0c40978 Remove rollback confirmation user preference
Due to a delay in the rollout of this feature, this part of the code has
to be temporarily removed again to prevent an unused setting from
popping up in the user settings.

Bug: T218556
Change-Id: I0f4e822fc25fddc2bc3c0b55b0792799a1e4c4ba
2019-03-19 13:49:51 +00:00
jenkins-bot
be8019b967 Merge "Improve RemexStripTagHandler working with tables" 2019-03-19 04:25:47 +00:00
Gergő Tisza
3b0effb203 Replace $wgUser with RequestContext::getUser in User::getBlockedStatus
$wgUser is not guaranteed to exist until MediaWiki has been fully
initialized; block status needs to be checked early on for
authentication-related permission checks.

Bug: T218608
Change-Id: I16315c071855024bc0412d5360c95f843420d9a9
2019-03-18 23:18:41 +00:00
saper
d46fbd1a71 Advertise feeds only if $wgFeed is enabled
Wikis with $wgFeed=false should not present an Atom icon on the RecentChanges/Watchlist.

Bug: T116145
Change-Id: Ic64f7f5115a77c42ed2b336f6996fe711b3822ba
2019-03-17 02:22:20 +00:00
jenkins-bot
91bd84c648 Merge "Remove wgSitesCacheFile and rebuildSitesCache.php (unused)" 2019-03-16 03:01:28 +00:00
jenkins-bot
ceb5637e3d Merge "Remove empty and unnecessary /* @{{ … */ comments" 2019-03-15 22:03:29 +00:00
jenkins-bot
4d1478c76f Merge "Fix WatchedItemStore last-seen stashing logic" 2019-03-15 21:46:07 +00:00
Timo Tijhof
4677392718 Remove wgSitesCacheFile and rebuildSitesCache.php (unused)
This seems to have been intended as optimization for SiteStore,
but was never used as far as I can tell. Instead, SiteStore is
already cached via LocalServerCache (APC).

Keep the FileBasedSiteLookup class for one release cycle in case
third parties not indexed by MediaWiki Codesearch are using it.

== History

* 2013: Report of high memcached usage by Wikibase via SiteStore.
* 2014: Lazy-load the data in Wikibase (d3f2e99cb6).
* 2014: Implement the file-based cache (via T47532 and 90f6efc360).
* 2015: Use local-server cache (APC), per T58602.

The file-based code was never used. The related task marked
invalid (T47532).

Change-Id: I8e2d9edcf3880149f824cc3de37793ca57435b49
2019-03-15 20:03:44 +00:00
Arlo Breault
a91757523a parser: Omit outputting newline after final line
Bug: T208070
Depends-On: I47d1d9620031036b9497cacf70b34a45c3e5f409
Depends-On: I6119b4af9632496dbda81c3a3951c55217e7c2d5
Depends-On: I584f74e2ba0d14c2975fb43cc53c5e26080e6fc7
Depends-On: Ie70e1915c172d2d67b3b8b90eb35f753b800f61e
Change-Id: I120ca25a77b7b933de4afddd1d458e36a95e26da
2019-03-15 14:22:45 -04:00
Arlo Breault
8384d48ae0 parser: Remove trailing newline after prefixes have been cleared
Bug: T208070
Depends-On: I74953d5de765a2245a2999f17c7ae1cf49376bd1
Change-Id: I05511aee275238954f22db78616b19ce10cd6490
2019-03-15 14:22:42 -04:00
Thiemo Kreuz
b0615e1249 Remove empty and unnecessary /* @{{ … */ comments
This was the only comment I could find that uses two curly brackets
for some reason. There are a few more with one curly bracket.

Change-Id: Iaed631916064e6be4895edd4c7a3d7de491e16c2
2019-03-15 14:59:19 +01:00
jenkins-bot
b5a14f9722 Merge "Fix ChangeTagsTest failing on Postgres" 2019-03-15 10:53:42 +00:00
Thiemo Kreuz
15111ac4c5 Fix ChangeTagsTest failing on Postgres
The order of elements returned by the SELECT is not guaranteed. But the
assertEquals() can't know this. It does not know how to identify the two
objects, other than by their array index.

Using assertArrayEquals() would fix this. But I honestly don't like this
helper method. It is expensive, for example. So I went for an ORDER BY.

An example for this failure can be seen here:
https://integration.wikimedia.org/ci/job/mediawiki-quibble-vendor-postgres-php70-docker/2484/console

Change-Id: I284d13d21b9bc34270307e78430180d94fc6665e
2019-03-15 10:10:33 +01:00
Krinkle
e894410bad Merge "rdbms: make Database::query() more readable and consistent" 2019-03-15 01:16:53 +00:00
jenkins-bot
d20bf59919 Merge "objectcache: add BagOStuff::deleteMulti() method for consistency" 2019-03-15 00:51:19 +00:00
jenkins-bot
e895217711 Merge "rdbms: change "profiler" argument in Database::factory so it works again" 2019-03-15 00:02:35 +00:00
Aaron Schulz
e2b03d5d30 objectcache: add BagOStuff::deleteMulti() method for consistency
Also:
* Make the BagOStuff tests actually pass for memcached and sql
* Add more unit tests for BagOStuff
* Make SqlBagOStuff::add() more atomic

Change-Id: Ic1eec0990a66b595b57c646498c3bd229442230c
2019-03-14 23:12:30 +00:00
Aaron Schulz
0390811263 rdbms: make Database::query() more readable and consistent
Mainly:
* Stash trxLevel as the variable $priorTransaction since
  Database::replaceLostConnection might make it 0 when called.
* Factor out Database::beginIfImplied method and call it on
  each query attempt of query(), not just the first one.
* Do not bother setting STATUS_TRX_ERROR if a query fails due to
  connection issues and was recoverable since requiring ROLLBACK
  in order to continue has no real advantage.
* Do not bother setting trxDoneWrites/lastWriteTime for temporary
  table operations.
* Make Database::handleTransactionLoss() keep TransactionProfiler
  cleaner by calling Database::transactionWritingOut().

Also:
* Make sure Database::wasKnownStatementRollbackError() calls are
  right after the corresponding queries so it is easy to follow.
  Having connection attempts in between seems fragile.
* Rename Database::doProfiledQuery => Database::attemptQuery and
  move more logic to that method.
* Factor out Database::assertNeitherReplicaNorReadOnly method.
* Rename Database::assertOpen => Database::assertHasConnectionHandle.
* Fix wording of Database::wasKnownStatementRollbackError comments.
* Use $isEffectiveWrite variable name instead of $isNonTempWrite
  and $isWrite in some places.

Bug: T218226
Change-Id: I2063e4080b41d5fc504f9207a56312ce92130ed7
2019-03-14 23:11:27 +00:00
Aaron Schulz
b438db9e2c rdbms: change "profiler" argument in Database::factory so it works again
The Profiler::profileIn and Profiler::profileOut methods are just stubs.
Use a callback to the Profiler::scopedProfileIn method instead.

Change-Id: I16068bce583bb880250fe91235f2283453be5e4c
2019-03-14 22:19:58 +00:00
Aaron Schulz
588a464682 Fix WatchedItemStore last-seen stashing logic
This should be the "last revision seen" timestamp, which is
different than the "first revision not seen" timestamp in the DB.

Also make sure that SpecialWatchlist accounts for the stash values.

Relatedly, better document the callback usage in BagOStuff::merge().

Change-Id: I98b03a5cd40fec5b4a2633d499ff77079d264e3c
2019-03-14 14:52:29 -07:00
Erik Bernhardson
aef02d516d Improve RemexStripTagHandler working with tables
HTML, generated by some infoboxes and perhaps other places, gets
stripped in a way that merges words together that should not be
merged. Add tr, th, and td to the list of tags that should force
word separation.

Bug: T218001
Change-Id: Ib374339628b1f543ea4e07f24aa3e3b76f3117b5
2019-03-14 13:11:59 -07:00
jenkins-bot
5537b54249 Merge "Fix assertArrayEquals() calls with bogus 3rd parameter" 2019-03-14 18:58:23 +00:00
Thiemo Kreuz
8c33a391a0 Fix assertArrayEquals() calls with bogus 3rd parameter
This issue came up in I8a49143, see
https://integration.wikimedia.org/ci/job/mediawiki-quibble-vendor-postgres-php70-docker/2453/console
The third parameter of assertArrayEquals() is called $ordered and is
meant to take the order of elements into account. Providing a string sets
this to true. The SQL query in ChangesListSpecialPageTest seems to behave
a bit random in Postgres and does not always return the elements in the
same order. This is fine. It's just the assertion that was to strict, by
accident.

I found a few more instances of the same issue with a regular expression.
In most cases I intentionally changed it to assertSame() because the order
of elements is actually guaranteed by the code, and needs to be (e.g.
mixing width and height of an image would be fatal).

Change-Id: Ice66cab873a7271d55809a486ce28cf637e43e33
2019-03-14 18:02:08 +01:00
jenkins-bot
6c1cfca4c3 Merge "Make copyTestData work on postgres" 2019-03-14 14:44:11 +00:00
daniel
5988e35505 Make BackupDumper MCR compatible (main slot only)
This makes BackupDumper compatible with the new mechanism for accessing
revision content.

This requires some changes to the way database connections are re-used,
since RevisionStore/SqlBlobStore needs to be able to run queries against
the database while the overall result set is being streamed.

This change does not yet add handing for extra slots to BackupDumper.
That first needs a spec for how extra slots will be represented in the
XML schma (T174031).

NOTE: this changes the output of fetchText from using integer text_id
values to using content_address values (e.g. "tt:4567" for text row
with old_id 4567). It also changes fetchText to accept such addresses
as input, for forward-compatibility. XML stub dumps still use the
numeric format in the id attribute, pending T199121.

Bug: T198706
Change-Id: If4c31b7975b4d901afa8c194c10446c99e27eadf
2019-03-14 13:19:51 +00:00
jenkins-bot
43a0144346 Merge "Add a user preference to opt in or out of a confirmation prompt for rollbacks." 2019-03-14 13:17:47 +00:00
jenkins-bot
8accf071b2 Merge "Remove references to Html5Depurate" 2019-03-13 23:31:02 +00:00
jenkins-bot
258d449719 Merge "Avoid a few overly complicated is_null() checks" 2019-03-13 22:23:50 +00:00
Subramanya Sastry
a330f86543 Remove references to Html5Depurate
Change-Id: I4f07c5ae606f5c86242bb7d299f4f30a044860b4
2019-03-13 16:33:37 -05:00
daniel
9225d40c0b Make copyTestData work on postgres
The issue with SQLite mentioned in the ticket remains unresolved
for now. To make this less confusing, copyTestData() will throw
for sqlite with an explanation instead of failing later. The test
for copyTestData is skipped on sqlite as well.

Bug: T217607
Change-Id: Ib9baa15cb6feff6c06959359f846b94ae6efab07
2019-03-13 22:06:44 +01:00
jenkins-bot
5a2e5db4fc Merge "Add password policy setting suggestChangeOnLogin" 2019-03-12 16:35:00 +00:00
jenkins-bot
787da207a2 Merge "Improve documentation of the PageContentLanguage hook" 2019-03-12 07:33:57 +00:00
Niklas Laxström
a08fc9eed6 Improve documentation of the PageContentLanguage hook
Clarify that the type of second parameter that is being passed
to the hooks can be anything because one hook can change it and
then it is passed to another hook without the hook caller having
possibility to check or modify the value.

Clarify that hooks should only return Language objects.

Rename $wgLang to $userLang in the hook parameter documentation to
avoid false posivite matches for the global.

Fix some typos, use Title::inNamespace and add a test assertion.

Also, the $content parameter is unused by all implementations of
this method, and on quick look never passed by any caller. I kept
it for now, however.

Bug: T214358
Change-Id: Iae49d2998c2b762565d232c0337d84d43a4a900c
2019-03-12 08:05:59 +01:00
jenkins-bot
1e1c24d12c Merge "Avoid using stale data for revision visibility and actor data" 2019-03-11 14:37:48 +00:00
Thiemo Kreuz
d1a497a9f4 Avoid a few overly complicated is_null() checks
We can use the ?? syntax introduced with PHP 7.0 because it is already
supported by HHVM, even when HHVM is set to be compatible with PHP 5.6.

This was inspired by Ib117e05.

Change-Id: If980839fe6f86f2b4e86bbe99905a796e4708c7c
2019-03-11 10:29:20 +01:00
Bill Pirkle
276bf4a76b Avoid using stale data for revision visibility and actor data
Created class RevisionStoreCacheRecord to avoid returning stale
cached revision visibility and actor data when changes were
made after the cache was populated for that revision.

Bug: T216159
Change-Id: Iabed80e06a08ff0793dfe64db881cbcd535cb13f
2019-03-10 15:34:44 -05:00
Max Semenik
73f29466c4 Remove a few method_exists() checks
These functions are present in every PHP version we support now.

Change-Id: I11add0fc9f6c3c3caff859db9c0475c4d2818577
2019-03-10 00:17:12 -08:00