Commit graph

5535 commits

Author SHA1 Message Date
Michael Holloway ce7a46f7ed Add push notifier
Provides a basic push notifier implementation. Since the push service is
not yet in place, all it does for now is log debug output when a
notification is to be sent.

To register the push notifier, add the following configuration to
LocalSettings.php:

 $wgEchoNotifiers['push'] = [ 'EchoPush\\PushNotifier', 'notifyWithPush' ];
 $wgDefaultNotifyTypeAvailability['push'] = true;
 $wgNotifyTypeAvailabilityByCategory['system']['push'] = false;
 $wgNotifyTypeAvailabilityByCategory['system-noemail']['push'] = false;

We'll register the notifier in configuration for now, rather than
hard-coding the default in extension.json, in order to have control over
when and where it rolls out (beta vs. prod, as well as which wikis).

Since the push notifier implementation depends on jobs being processed
by the job queue, I also recommend adding the following configuration
setting to ensure that all pending jobs are processed at the end of each
web request:

 // ensure all pending jobs are processed when a web request completes
 $wgJobRunRate = PHP_INT_MAX;

Bug: T252899
Change-Id: Ie7f222443045d30620ff297b006104ef18a074a8
2020-06-02 13:40:04 -04:00
Michael Holloway a3674974f1 Add push subscription management
Adds DB tables for storing push subscriptions, some DB interaction code
for retrieving them within MediaWiki, and a set of API modules for
managing them from the outside world.

When testing this patch, be sure to run maintenance/update.php to create
the new tables, and set $wgEchoEnablePush = true in LocalSettings.php
to enable the API new API module.

N.B. The current DB schema is centered on app push subscriptions. Web
push subscriptions require slightly different handling, since they are
provided by browsers as a JSON blob rather than a token string. How to
handle web push subscriptions is a question we can defer until the time
comes to add web push support.

Subscription data is stored in the echo_push_subscription table, with
provider names normalized into the echo_push_provider table. We expect to
be looking up subscriptions by central user ID, so that column is indexed.
The subscription data also includes a column to store SHA256 digests of
the subscriber tokens. This is for use as a unique key constraint, since
we expect every push token to be univerally unique, and the token values
themselves may be too large to reasonably index in MySQL.

Bug: T252899
Change-Id: I3928761b3fba12e54ff4850e9a05c68ec7772f62
2020-06-02 13:40:00 -04:00
libraryupgrader 8d888595ef build: Updating mediawiki/mediawiki-codesniffer to 31.0.0
The following sniffs are failing and were disabled:
* Generic.Files.LineLength.TooLong

Additional changes:
* Replaced "jakub-onderka" packages with "php-parallel-lint".

Change-Id: Ibe6a0bc27cefd6da49192032785ed4ee00c56587
2020-05-29 13:24:56 +00:00
DannyS712 37cde0b9f2 UserClearNewTalkNotification: Only require a UserIdentity
Bug: T253435
Change-Id: I5e0d7a6300dfd6acda754e6334a6e3f58900d753
2020-05-29 08:40:47 +00:00
Translation updater bot c56f992a72 Localisation updates from https://translatewiki.net.
Change-Id: I277f4e3f21f7257de5a6a011bb304c7b769ec098
2020-05-29 08:32:18 +02:00
jenkins-bot bf3aeb1280 Merge "Replace hard-deprecated WikiPage::getRevision call in generateSampleNotifications.php" 2020-05-28 17:57:18 +00:00
Translation updater bot 9e48c785b7 Localisation updates from https://translatewiki.net.
Change-Id: I00bb33e67e6b791909b6388ce41c45cc0b88c076
2020-05-28 08:39:13 +02:00
jenkins-bot 0b4f4d9659 Merge "Add dynamic secondary action to mute/unmute page-linked notifications" 2020-05-27 14:01:15 +00:00
Gergő Tisza dd1aed2930
Replace hard-deprecated WikiPage::getRevision call in generateSampleNotifications.php
...but keep soft-deprecated WikiPage::doEditContent because no realistic
replacement exists :/

Change-Id: Iee8c2fcfcbd5cb8c15854b1ada9eb691a2197658
2020-05-27 15:44:59 +02:00
Roan Kattouw 28f432b150
Add dynamic secondary action to mute/unmute page-linked notifications
Also adds an API module for muting and unmuting pages (and users).

Bug: T46787
Bug: T115264
Change-Id: Icf4e4bfa9fd7fa27b4c40892e3d5ce000eb22d5a
2020-05-27 15:20:08 +02:00
Translation updater bot 31b4c9bdfa Localisation updates from https://translatewiki.net.
Change-Id: Ib22b1736cd053a5b004abc72c1958e341909fec3
2020-05-27 08:48:34 +02:00
Translation updater bot fb34dd6b31 Localisation updates from https://translatewiki.net.
Change-Id: I421383eceef6834453238f109dc2476a18c468ba
2020-05-26 08:35:48 +02:00
Kosta Harlan 5e9eac03d0 Change pref header to specify it's about page link notifications
If/when we add other notification types, we could switch this string back to
"Muted pages" and nest other notification types underneath, or we could use a
different UI pattern for exposing those preferences.

Bug: T46787
Change-Id: I66cb2795a17994197b8610d04691dfca55ebc588
2020-05-25 19:15:39 +02:00
Translation updater bot ab437dbdec Localisation updates from https://translatewiki.net.
Change-Id: Id84d5bf2b2aafe58340048a308b3663acb6fa651
2020-05-25 08:39:35 +02:00
Translation updater bot 190d53ba3f Localisation updates from https://translatewiki.net.
Change-Id: I87e8061c879893dd1e7e93c3aed3dd4176cf6993
2020-05-22 08:34:59 +02:00
jenkins-bot 070a5dc475 Merge "Use HttpRequestFactory::createMultiClient()" 2020-05-21 20:33:48 +00:00
Translation updater bot 8e4dcdcf8f Localisation updates from https://translatewiki.net.
Change-Id: Icec468b13b588561ae87737bb6acad0bf4530bc8
2020-05-21 08:19:19 +02:00
Tim Starling 5252624729 Use HttpRequestFactory::createMultiClient()
Use the globally configured request timeout instead of MultiHttpClient's
hard-coded default. This means that the request timeout for
ForeignWikiRequest will typically be reduced from 900s to 25s.

Bug: T245170
Depends-On: I8252f6c854b98059f4916d5460ea71cf4b580149
Change-Id: I1c3d96720709253ad15bb8528cdd132571de2e4e
2020-05-21 14:23:28 +10:00
Translation updater bot 60939778b8 Localisation updates from https://translatewiki.net.
Change-Id: If1a2dc2877c38e0fac149be2a83d9b9585f9692d
2020-05-20 08:34:56 +02:00
jenkins-bot f4cbf7bf5b Merge "Add aria-label to SpecialHelpMenuWidget" 2020-05-19 12:38:38 +00:00
Translation updater bot 48932aed89 Localisation updates from https://translatewiki.net.
Change-Id: Icc6d3805e156e62b26de850c84930e3ceed302d6
2020-05-19 08:24:21 +02:00
Volker E a569321595 Add aria-label to SpecialHelpMenuWidget
Bug: T244543
Change-Id: I04c2c47c5d20cf69f9f0602a2e535c05b01f5f3c
2020-05-18 12:35:43 -07:00
Translation updater bot 7420a54684 Localisation updates from https://translatewiki.net.
Change-Id: I3a49f590312745de109ffc790d35190f5d393681
2020-05-18 08:29:56 +02:00
Clara Andrew-Wani 6dd0f21968 Use new TalkPageNotificationManager
Bug: T239640
Change-Id: Iba015bf246250fc144022d92b88eb00882dd1d3a
2020-05-15 12:58:14 -04:00
Translation updater bot f54bfb63d3 Localisation updates from https://translatewiki.net.
Change-Id: I3765e509670f94e83d3cbca4fb617761201d2e16
2020-05-15 08:53:12 +02:00
Translation updater bot c044585ec8 Localisation updates from https://translatewiki.net.
Change-Id: I7fcd0b37e78aeeaa2e0fe092f70a521fb4591b6b
2020-05-14 08:32:13 +02:00
Translation updater bot 1b229d84f8 Localisation updates from https://translatewiki.net.
Change-Id: I3f3273f4afa02d9204e441afa28daf0385abdd8f
2020-05-13 08:42:29 +02:00
jenkins-bot 304f82c314 Merge "Add page linked event title muted list" 2020-05-12 21:08:47 +00:00
Translation updater bot f9fa360cf9 Localisation updates from https://translatewiki.net.
Change-Id: I7a05b2a29d415f0f2fa63083653560aab571b3ba
2020-05-12 08:21:00 +02:00
Translation updater bot c8530e2f25 Localisation updates from https://translatewiki.net.
Change-Id: Ie03991b5d01c22731da5966bc16c668889f8f056
2020-05-11 08:37:13 +02:00
Translation updater bot 2f0c79bc5a Localisation updates from https://translatewiki.net.
Change-Id: I0867f27bdec32abc7ccf7a869604f06d00e2a23d
2020-05-08 09:28:17 +02:00
Translation updater bot 8d0f6cf980 Localisation updates from https://translatewiki.net.
Change-Id: I2977638b9c1fe2d79ce8f229c38f6e1653c40c40
2020-05-07 08:34:17 +02:00
jenkins-bot 127c8a1396 Merge "SpecialHelpMenuWidget: Use ButtonMenuSelectWidget" 2020-05-06 17:18:17 +00:00
jenkins-bot c4faa9a99d Merge "Pass a user to EchoEvent::create" 2020-05-06 16:22:19 +00:00
Ed Sanders 04100d4083 SpecialHelpMenuWidget: Use ButtonMenuSelectWidget
Bug: T178387
Change-Id: I521aa3749e1009e5bb028ee1359f732f21226689
2020-05-06 16:21:52 +00:00
DannyS712 868fb32c2e Pass a user to EchoEvent::create
Followup to 84a0d9ab57

Change-Id: I5a671e4cf5aa0d18b7e7bb59b57e410a91d462ab
2020-05-06 15:59:16 +00:00
Kosta Harlan 1560528dc7 Add page linked event title muted list
* Add a section on the preference form to allow users to mute articles
  from generating "page linked" notices
* The preference will save the article title as an article ID

Depends-On: Ia0ddf78646ec4c8ae0b84b6d5b46ef5e51c8e8c1
Bug: T46787
Change-Id: I67f751eae5fdc5bccff7fe3047227d432c1cb8d5
2020-05-06 12:38:55 +02:00
jenkins-bot 4ff2b21819 Merge "Replace use of ArticleRollbackComplete hook with RollbackComplete" 2020-05-06 00:16:45 +00:00
DannyS712 84a0d9ab57 Replace use of ArticleRollbackComplete hook with RollbackComplete
Extension requires MW 1.35+, so the hook is always available

Bug: T250543
Change-Id: I65a4e64cac05193e57b79be4afc3584e04007b5f
2020-05-05 22:44:40 +00:00
jenkins-bot c1f8165d01 Merge "Don't put a whole User object in extra[mentioned-users]" 2020-05-05 08:02:49 +00:00
Translation updater bot f355f05aff Localisation updates from https://translatewiki.net.
Change-Id: I169a6cf3b6cb9efa554ac7c2bb98bc316398bc3e
2020-05-05 08:30:19 +02:00
Tim Starling 41d53fde50 Don't put a whole User object in extra[mentioned-users]
DiscussionParser::getUserMentions() returns mentions in an array of the
form [ID => ID]. UserLocator says "we shouldn't receive User instances,
but allow it for backward compatability". But
DiscussionParser::generateEventsForRevision() was putting User objects
into the extra when there is a mention in the edit summary.

I noticed this when I accidentally made User objects be unserializable
in a core patch.

So, I made generateEventsForRevision() generate mention arrays in the
same ID=>ID format as getUserMentions().

Change-Id: I7c6d25950c8887b50426863c7b0a2d5d007559dd
2020-05-05 14:41:49 +10:00
Translation updater bot 4b6c8fe025 Localisation updates from https://translatewiki.net.
Change-Id: I95a52d5d12c8bbf54c921c7f6eca2f15db48f4db
2020-05-01 10:00:41 +02:00
jenkins-bot a0f1ffa02c Merge "Move one class to AutoloadNamespaces" 2020-04-30 18:23:30 +00:00
Translation updater bot 304e0273a4 Localisation updates from https://translatewiki.net.
Change-Id: I7d9d9714cbeb5be3f3b5c14898031c68e87b0fc8
2020-04-30 08:37:46 +02:00
Translation updater bot 13a0622468 Localisation updates from https://translatewiki.net.
Change-Id: I975609883f2bcd9877ea25d63ffbf902b5d092cd
2020-04-29 08:35:47 +02:00
Translation updater bot 617da122e0 Localisation updates from https://translatewiki.net.
Change-Id: I70f89679970ec06b2e7aafaf4febe1a416fae4ed
2020-04-28 08:31:58 +02:00
jenkins-bot 426d33054b Merge "Use '.text-overflow()' mixin from 'mediawiki.mixins'" 2020-04-27 23:26:57 +00:00
Translation updater bot 4a1f9b5ff0 Localisation updates from https://translatewiki.net.
Change-Id: I743e3c88d9b70fb53a058051a771a89f5304f6a3
2020-04-27 09:02:45 +02:00
Translation updater bot 39d7aa6b1c Localisation updates from https://translatewiki.net.
Change-Id: I9b560ff837b5ac7fa6453b246023972b1949c553
2020-04-24 08:22:23 +02:00