Commit graph

5092 commits

Author SHA1 Message Date
Kosta Harlan da2da90b48 Re-enable test coverage reporting, add @covers tags
Bug: T195136
Change-Id: I9203232e79f162aedb982b713f708cebfe9d1ae0
2018-06-28 08:32:57 -04:00
Translation updater bot d956799dbf Localisation updates from https://translatewiki.net.
Change-Id: I2806e0d9d21b5393e427e2e83e8fbb5c06980d03
2018-06-27 22:18:51 +02:00
Moriel Schottlender 592bc476b2 Add timestamps to generated notifications
Add the ability to create notifications with specific timestamps
when generating notifications through the maintenance script.

Note, that not all notifications can be given specific timestamp;
only notifications that do not involve a direct editing action
will be given this timestamp and their events will be created
as if the actions were taken at the given timestamp, with
1 minute intervals.

Change-Id: I9e6b8660178ca0734979946c8e6ec8d43fc3de41
2018-06-27 11:16:22 -07:00
jenkins-bot 855497c3ba Merge "Avoid counting where not necessary" 2018-06-26 13:54:59 +00:00
Thiemo Kreuz cb282251a8 Avoid counting where not necessary
Change-Id: I0abbdced4474dabbdecd3bbfae194e79b7c29db1
2018-06-26 07:10:38 +00:00
jenkins-bot 1c6d589b1b Merge "Remove masterPos from the job specification." 2018-06-25 10:48:16 +00:00
Translation updater bot 2f10fd474b Localisation updates from https://translatewiki.net.
Change-Id: Ide895ba92c9098b172fbeeaf8f9f87168ad7e53b
2018-06-24 22:25:39 +02:00
Moriel Schottlender 94f17f7910 Always place items outside menu if there's less than two of them
Bug: T174927
Change-Id: I5a30cf4d5cdc3e7ea9ea7b0536e015de8825f785
2018-06-22 15:31:05 +00:00
Željko Filipin 6aa871293e Use new page objects from mediawiki/core in Selenium tests
Bug: T171848
Change-Id: Ib6a08c6a34ef6a4bef8a81f49fed8aae67dc67dc
2018-06-22 15:23:23 +00:00
jenkins-bot e129533772 Merge "selenium: Make it possible to run tests from Echo folder" 2018-06-22 14:34:36 +00:00
Željko Filipin 53d849b3c9 selenium: Make it possible to run tests from Echo folder
Until now, Echo tests had to be run from mediawiki/core folder.

Add an independant 'npm run selenium-test' entry point
for local development. It comes with a minimal wdio.conf.js file that contains
only non-default settings, and runs only specs from this extension.
This also makes it so that screenshots are saved to this repo's
log directory instead of core's.

Bug: T171848
Change-Id: I1396f8d856c6cb1ad9818abf4ba09a4fcefdcfdc
2018-06-22 14:17:05 +00:00
jenkins-bot 5546ec2fa4 Merge "Remove remaining Ruby files" 2018-06-20 07:59:19 +00:00
Translation updater bot 88fd738bde Localisation updates from https://translatewiki.net.
Change-Id: I895086e8fc110329ce2f6c3b2e83f1ed02de1a1e
2018-06-19 22:25:15 +02:00
Thiemo Kreuz d04b3f2710 Make use of PHP's …::class feature
Change-Id: Ifbb70f7b9d54e2e2bb713c8a13668344ac880a72
2018-06-19 18:11:23 +00:00
Translation updater bot 9e43e1988b Localisation updates from https://translatewiki.net.
Change-Id: I10b00818a5c87fa95c0b4191c2f7761f847f8de8
2018-06-18 22:09:42 +02:00
Petr Pchelko bf2cc7e687 Remove masterPos from the job specification.
The `DBMasterPos` class is not JSON-serializable, so
we can not transfer the job in the kafka-based queue.
Before, we were waiting for slaves before executing the
job till the point in time when the job was submitted,
now we will just wait for slaves till the point in time
the job was executed. That lets up not to include the
database master position in the event and make it serializable.

Bug: T192945
Change-Id: I7c754bd1e899bad030cc6434be19daf2542e015f
2018-06-18 19:56:15 +03:00
jenkins-bot 61cfa13beb Merge "Update some PHPDoc tags for improved type safety" 2018-06-18 01:14:37 +00:00
jenkins-bot afec5a19ec Merge "Directly use Language::factory instead of wfGetLangObj" 2018-06-18 01:14:35 +00:00
jenkins-bot bc156ccb26 Merge "Replace uses of deprecated Language::truncate()" 2018-06-17 19:14:08 +00:00
Thiemo Kreuz 6aa6824f96 Update some PHPDoc tags for improved type safety
Change-Id: I7573ab01e88c86c25180bc56b3874505aa00a047
2018-06-17 19:04:54 +02:00
Translation updater bot 5e17323d92 Localisation updates from https://translatewiki.net.
Change-Id: I201f4275fcc95fc516661b5090fc70dad2f96c20
2018-06-16 22:26:03 +02:00
C. Scott Ananian 190377dbbc Replace uses of deprecated Language::truncate()
See I2291c69d9df17c1a9e4ab1b7d4cbc73bc51d3ebb for the anticipated
hard-deprecation of this method in core.

Bug: T197492
Change-Id: I4687db09c27480147cfa7a648a886b1670812deb
2018-06-16 09:30:06 -04:00
Translation updater bot 5c60c9419b Localisation updates from https://translatewiki.net.
Change-Id: Idc7d16e9573059a654787bf81bd1f2783786fab3
2018-06-15 22:35:41 +02:00
Translation updater bot 5a5d25d35f Localisation updates from https://translatewiki.net.
Change-Id: I6b6f91d62fac97920ec30c1979ac3ded0d974b0f
2018-06-14 22:44:35 +02:00
Translation updater bot be791d9371 Localisation updates from https://translatewiki.net.
Change-Id: I2ec9e57ed9fc7db0ca4294042a8d6a127e5b4029
2018-06-11 22:33:46 +02:00
jenkins-bot e1a9fb0909 Merge "Don't use deprecated mediawiki.api.options" 2018-06-11 16:23:28 +00:00
jenkins-bot 3194bd169d Merge "Get rid of call_user_func_array()" 2018-06-10 01:01:53 +00:00
Translation updater bot d50b29b38e Localisation updates from https://translatewiki.net.
Change-Id: Ia0f80bfe2a7b85d040e035ae32d8d47f1aa67561
2018-06-09 10:27:09 +02:00
Kunal Mehta 4c4225bd8c Don't use deprecated mediawiki.api.options
It was merged into `mediawiki.api`.

Bug: T196802
Change-Id: I82200d24cdf98ad35db5166e1f4c30e8f1fa6030
2018-06-09 00:19:33 -07:00
Max Semenik 0a09984f55 Get rid of call_user_func_array()
Yay PHP7!

Change-Id: I3bad8d1a5a65137d9617ccd39c65b8a97edbf01a
2018-06-08 01:03:46 -07:00
Translation updater bot e205daba9b Localisation updates from https://translatewiki.net.
Change-Id: If9a7d1cfa2a9be5cb2087487e61b6db190ec1e81
2018-06-06 23:05:59 +02:00
Umherirrender 43820a6390 Move NotificationsTest to tests/phpunit
Under this folder the test is run automatically on CI or
phpunit.php --testsuite extensions

Change-Id: I5e466c04fc5c827883882f798ba0e41d6990e423
2018-06-06 19:30:35 +00:00
Volker E ee01b6db89 Replacing fallback color for code hygiene
For sanity when grepping. See also T148708.

Bug: T177723
Change-Id: I4f8bed119231a45c9148fbe341d40dccced4fcb5
2018-06-06 17:49:06 +00:00
Fomafix 99173922c1 Directly use Language::factory instead of wfGetLangObj
Other places like Message::inLanguage also use
Language::factory( $user->getOption( 'language' ) ).

Change-Id: I911dc2319e1922276daa3eb3614a350c80b8b57f
2018-06-05 11:00:14 +02:00
Roan Kattouw d0714b2928 NotifUser: Simplify function signatures for getNotificationCount() and friends
The $cached and $dbSource parameters are now unused, so remove them.
This affects get{Notification,Alert,Message}Count and
getLastUnread{Notification,Alert,Message}Time.

There are some callers in other extensions and in skins, but none of
them pass any parameters (except one, which I fixed in Ice42930280da).

Change-Id: If6f10c4f163ecb1def5a150656a60d1ab5f44d52
2018-06-05 01:07:23 +00:00
Željko Filipin 111b671444 Remove remaining Ruby files
The only remaining Ruby code was RSpec tests, and they are recently removed.

Change-Id: I7f73c0e3b1d0d13ac7a216cdc7681ce5c807bece
2018-06-04 17:49:51 +02:00
jenkins-bot aa984f1b9b Merge "NotifUser: Add a doc comment for getForeignCount()" 2018-06-02 17:20:28 +00:00
jenkins-bot 205c937164 Merge "NotifUser: Simplify timestamp comparisons in getForeignTimestamp() too" 2018-06-02 17:14:01 +00:00
jenkins-bot ffa6922558 Merge "NotifUser: Remove $dbSource parameter from resetNotificationCount()" 2018-06-02 17:11:34 +00:00
jenkins-bot 533a58dfcc Merge "NotifUser: Un-merge getMemcKey() and getGlobalMemcKey()" 2018-06-02 17:11:33 +00:00
jenkins-bot bb453d23e3 Merge "NotifUser: Redo caching strategy for multi-DC compatibility" 2018-06-02 17:10:20 +00:00
jenkins-bot 4bdf8e1e8c Merge "Convert SpecialHelpMenuWidget to a customised DropdownWidget" 2018-05-31 23:52:47 +00:00
Roan Kattouw fa21b7b0cd NotifUser: Un-merge getMemcKey() and getGlobalMemcKey()
We used to have code that called getMemcKey() with a boolean parameter
deciding whether to get a local or global key, but we don't do that
anymore: every code path now knows whether it needs a local or global
key. Consequently, move the code for global cache key generation back to
getGlobalMemcKey(), rather than having both be in getMemcKey() and
getGlobalMemcKey() being a wrapper.

Change-Id: If35bafc53e1e0086c31fd9675a9dc057e36f5717
2018-05-31 16:01:57 -07:00
Translation updater bot 3b6fdcfe59 Localisation updates from https://translatewiki.net.
Change-Id: I9ebd5a9c756fabc5949542820b47691dc90af8e0
2018-05-31 22:28:28 +02:00
Roan Kattouw 1fec0793e1 NotifUser: Remove $dbSource parameter from resetNotificationCount()
As Krinkle points out, it always writes to DB_MASTER, so it doesn't make
much sense to offer an option to read from DB_REPLICA. This also
resolves the race condition that I believe arises from the one caller
that passes in DB_REPLICA.

Change-Id: I6976e5479debc3f4a8f28d53b1616c01475772be
2018-05-31 00:53:06 +00:00
Roan Kattouw 0edd96da17 NotifUser: Add a doc comment for getForeignCount()
Change-Id: I47fc2d879b6292d70ba53f8a52f450eed83cfcb6
2018-05-31 00:52:59 +00:00
Roan Kattouw 5935a63731 NotifUser: Simplify timestamp comparisons in getForeignTimestamp() too
Change-Id: I89e75eeded95f7417f8fccfa6274fa19ff5a26c7
2018-05-31 00:52:52 +00:00
Roan Kattouw d90e2d1066 NotifUser: Redo caching strategy for multi-DC compatibility
To use WANObjectCache correctly in a multi-DC-safe way, we need to use
getWithSetCallback() to read data, and call delete() when it changes.
NotifUser's caching of notification counts and timestamps relied
heavily on set() calls, and so wasn't multi-DC-safe.

Changes in this commit:
* Rather than caching counts/timestamps in separate cache keys, and
  using separate cache keys for each section (alert/message/all), put
  all this data in an array and store that in a single cache key.
  This reduces the number of cache keys per user per wiki from 6 to 1.
* Similarly, use a single global cache key per user. The global check
  key for the last updated timestamp is retained, so we now have
  2 global cache keys per user (down from 7)
* Remove preloading using getMulti(), no longer needed
* Move computation of counts and timestamps into separate compute
  functions (one for local, one for global), and wrap them with
  a getter that uses getWithSetCallback().
* Use TS_MW strings instead of MWTimestamp objects internally, to
  simplify comparisons and max() operations.
* Make existing getters wrap around this new getter. They now ignore
  their $cached and $dbSource parameters, and we should deprecate/change
  these function signatures.
* In resetNotificationCounts(), just delete the cache keys. In global
  mode, also recompute the notification counts and put them in the
  echo_unread_wikis table. We could also set() the data into the cache
  at this point, but don't, because you're not supposed to mix set() and
  getWithSetCallback() calls and I don't want to find out what happens
  if you do.

Bug: T164860
Change-Id: I4f86aab11d50d20280a33e0504ba8ad0c6c01842
2018-05-30 17:49:48 -07:00
jenkins-bot bb3cb12262 Merge "CachedList: Use getWithSetCallback()" 2018-05-30 21:55:07 +00:00
jenkins-bot 0aef7d8d94 Merge "NotifUser: Make resetNotificationCount() default to DB_MASTER" 2018-05-30 21:55:06 +00:00