Commit graph

1145 commits

Author SHA1 Message Date
DannyS712 868fb32c2e Pass a user to EchoEvent::create
Followup to 84a0d9ab57

Change-Id: I5a671e4cf5aa0d18b7e7bb59b57e410a91d462ab
2020-05-06 15:59:16 +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
Edward Chernenko 87053b91a6 Be compatible with third-party extensions that use NewMessagesAlert
1. Preamble:
Currently Extension:Echo unconditionally suppresses NewMessagesAlert,
because "You have new messages" is replaced by Echo notification.

2. Problem:
Some third-party extensions (such as Extension:Moderation) can use
GetNewMessagesAlert hook to inject their own notification, which must
not be suppressed.
By returning "false" from GetNewMessagesAlert hook, Echo stops those
third-party extensions from showing their notifications too.

3. Solution:
Allow those third-party extension to tell Echo "don't suppress this"
by returning false from the hook EchoCanAbortNewMessagesAlert.
This change has no impact on situations when no such third-party
extensions are installed.

4. How it was handled before this change:
Old solution for those extensions was to remove the hook of Echo from
$wgHooks, which was a dirty hack and is not compatible with T240307.

Change-Id: I433e30c5f639b5f20838804e8fa7c94a4bcf5349
2020-04-21 10:12:51 +03:00
DannyS712 55b018cdd4 Use LinksUpdate::getRevisionRecord
Bug: T249397
Change-Id: I335e12fc2f57a9ca07f985482eb4c339933ef13f
2020-04-08 02:31:43 +00:00
jenkins-bot 01c00b670a Merge "Use MediaWikiServices::getAuthManager" 2020-04-06 09:37:49 +00:00
Reedy 2661c3a787 Add getter for EventPresentationModel::$distributionType
There are cases where we want to vary on $distributionType what is sent.
If it's an email (for example), we might want more information and
context which is unneeded via the web notification.

Bug: T249408
Change-Id: I68cedfa8389e1d935b02ca7475bf42262005d2bc
2020-04-05 19:00:16 +00:00
Umherirrender 4337586f4a Use MediaWikiServices::getAuthManager
This required MediaWiki 1.35

Change-Id: I91de51208be72ad0eebc15c3d74069360014085e
2020-04-04 16:59:12 +02:00
jenkins-bot 92e72e9bad Merge "Replace deprecated User::isAllowed with PermissionManager" 2020-03-24 21:00:09 +00:00
DannyS712 1d8170a540 Use lowercase for primitive type 'string'
Change-Id: I7e4a3a198b973cf9037b283253c1e2dda6e8b873
2020-03-20 15:37:50 +00:00
Ammar Abdulhamid ad8340ea59 Replace deprecated User::isAllowed with PermissionManager
Bug: T220191
Change-Id: I321a1d67a9272dfb305d76589c6371176f1afc16
2020-03-14 19:14:37 +00:00
Umherirrender a933412ea5 Use MediaWikiServices::getMessageCache
This required MediaWiki 1.34 (already set in extension.json)

Change-Id: Ib9f9fe6581c3019fa32dff53acf33edb4266e44d
2020-03-14 14:04:32 +01:00
DannyS712 ee8118da41 Don't call mediawikiservices::getMainWANObjectCache if not needed
Change-Id: Iafbd3dfd0dfaec26c2f2b0b28b1b0dfecffd2a27
2020-03-08 10:00:28 +00:00
DannyS712 72f30649d5 Pass a user when creating a new ParserOptions
Bug: T246861
Change-Id: Ie6b6504d3b78a33ecb89a5c431bc225622d715c2
2020-03-04 21:53:33 +00:00
jenkins-bot bca3707961 Merge "Fix IDatabase::upsert() call with bad unique key parameters" 2020-02-19 22:11:07 +00:00
jenkins-bot f281b221eb Merge "build: Updating composer dependencies" 2020-02-19 21:33:02 +00:00
Aaron Schulz 0bc5117dbb Fix IDatabase::upsert() call with bad unique key parameters
Change-Id: I13c484991166eba7b90eef13c324834a39db63a9
2020-02-19 13:20:40 -08:00
libraryupgrader cbc50bd4fe build: Updating composer dependencies
* mediawiki/minus-x: 0.3.2 → 1.0.0
* mediawiki/mediawiki-phan-config: 0.9.0 → 0.9.2

Change-Id: I384e3624fadebd736a3ea465df79df6bf9dd5a74
2020-02-19 20:20:29 +00:00
Kosta Harlan 9fd66198ee Fix web installer/updater for Echo
Loosen check for $wgEchoCluster, because when this hook fires $wgEchoCluster is
set to null (even though extension.json sets it to false as the default).

Bug: T165317
Change-Id: If7f2677a20407612de17a38ac2c6da444377d7b4
2020-02-11 12:30:17 +01:00
Umherirrender af3fa8a78b Enable MediaWiki.Usage.ForbiddenFunctions.isset and make pass
Change-Id: I4fe47b3cc4ecd124809a58306b6abb0ea202d56a
2020-02-09 11:58:49 +01:00
Roan Kattouw 0ff7678377 Document ext.echo.unseen counters
There are two counters (ext.echo.unseen and ext.echo.unseen.click) that
are incremented in two different places. It's hard to see how they're
connected unless you know where to look.

Add comments to each of these counters pointing to the other one and
explaining what they're for.

Change-Id: I0699cba85bf797e4f7ef42cc6a7a996aa35510f0
2020-01-16 17:46:08 -08:00
jenkins-bot 5fcc43d615 Merge "build: Updating mediawiki/mediawiki-codesniffer to 29.0.0" 2020-01-14 15:52:16 +00:00
libraryupgrader ff43e1ecf2 build: Updating mediawiki/mediawiki-codesniffer to 29.0.0
The following sniffs are failing and were disabled:
* MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate
* MediaWiki.Commenting.FunctionComment.MissingReturn
* MediaWiki.Usage.ForbiddenFunctions.isset
* MediaWiki.Usage.PHPUnitDeprecatedMethods.AssertInternalTypeGeneric

Additional changes:
* Also sorted "composer fix" command to run phpcbf last.

Change-Id: I29416247ff3736799543926813beaf4afd569a6e
2020-01-14 05:09:44 +00:00
Roan Kattouw b2f816d0af Use GET rather than POST for action=markseen
This seems strange, because markseen sounds like a write action, but it
writes to the seentime cache rather than the database. For multi-DC
support, we need writes to the seentime cache to happen in the local
data center, and the easiest way to do that is to make it a GET request
rather than a POST request.

It would be nice if marking as seen could be consolidated into the GET
request for fetching notifications, but I didn't do that because the
code for those fetches is pretty complicated, and some fetches (like
polling) should not mark as seen.

Bug: T222851
Change-Id: If4c504a9dc562b1d4e626e155fba8ebb5cdb0579
2020-01-10 16:12:18 -08:00
Matěj Suchánek e16ff3a939 Remove dead code from EchoHooks.php
Change-Id: Ie1ff4977a61b9c0350b2c8891ce26b6fa8cf49e5
2020-01-05 14:38:26 +00:00
Matěj Suchánek d4a18d15b7 Remove redundant check in MentionPresentationModel.php
Pages in user talk namespace are always talk pages, so
no need to check for this.

Change-Id: Ideac85cfaddb65f4758fe00be028dd6d067e0d72
2020-01-02 15:42:23 +00:00
Matěj Suchánek 2d6472ff61 Remove unused variable
Change-Id: I43b83972fe818f236c10522bdaaecbb2def88903
2020-01-02 10:49:35 +01:00
jenkins-bot 30ed6adb92 Merge "build: Updating mediawiki/mediawiki-phan-config to 0.9.0" 2020-01-02 08:59:53 +00:00
Umherirrender 317246762c Removed comment out debug code from EchoDiscussionParser
Change-Id: I0f5823253e7dbad6aabcc85f3f1e0c2196874f66
2019-12-29 16:08:15 +01:00
libraryupgrader ef3d2b886d build: Updating mediawiki/mediawiki-phan-config to 0.9.0
Change-Id: I03333636654eff80d4fe7fa543ac9e6c321af891
2019-12-29 11:59:32 +00:00
Thiemo Kreuz (WMDE) 65700e6c0e Revert "Make method parseNonEditWikitext public"
This reverts commit b4fdb685cb.

Change-Id: I33abe899f34903cfcc24c7a4f45e70aaab3f0abb
2019-12-28 20:16:38 +00:00
Paladox b4fdb685cb Make method parseNonEditWikitext public
It's used by the Comments extension.

Change-Id: If69b1706067a0c80420e427a453da965f226aa75
2019-12-23 01:54:53 +00:00
Umherirrender 4c991af59f Use WebRequest::getInt for limit parameter
This avoids that the default value is casted to string
and than back to int

Change-Id: I66ef8bc3a8e89b43aa5eff79bc371659e86af174
2019-12-13 22:29:07 +01:00
jenkins-bot 8b6efb51bb Merge "Add preference to not receive digests about read notifications" 2019-12-12 11:14:30 +00:00
Ben Houghton 9ae45afdfd Add preference to not receive digests about read notifications
Allows users to opt out of receiving daily or weekly digests containing notifications
they have already marked as read on the web.

Bug: T169386
Change-Id: Ib47248678f88095492fb6896530be5a9f5bb43ca
2019-12-12 06:30:13 +00:00
Pppery db78c1552e Add support for watchlist events
Bug: T203941
Change-Id: I9bcd13cb0a547393696dde0e977b7761cc1fea68
2019-12-11 16:39:02 -05:00
Roan Kattouw d85252b97d DiscussionParser: Fix type hint fatal from getUserLinks()
Instead of returning false when no links in the user namespace are
found, return an empty array. They're both falsey, but this way we don't
break the type hint in generateMentionEvents(), which is the only thing
that getUserLinks() is used for anyway.

Bug: T239275
Change-Id: I93b320be07cfdae68c5e296b2caa62ea4fae5ff2
2019-11-26 17:57:16 -08:00
jenkins-bot 4b8eb663df Merge "build: Updating mediawiki/mediawiki-phan-config to 0.8.0" 2019-11-25 21:01:26 +00:00
Max Semenik 36af0f2cf1 Stop passing objects by reference
Bug: T193950
Change-Id: Ie8a2302137c5b5fc67862031ffe244c50769fa1f
2019-11-18 23:23:22 -08:00
Umherirrender f62ab66363 build: Updating mediawiki/mediawiki-phan-config to 0.8.0
Bug: T235049
Change-Id: I93844dc6fae8a3dca3ced591d43caa2f994ba2f1
2019-11-18 20:03:13 +01:00
Thiemo Kreuz 048a9e84c1 Remove duplicate private property from NotificationDeleteJob
Every job class does store it's properties in the $this->prop array
anyway.

Change-Id: Ib1c810ee367a2771e19fac25056c9e7bef22cb01
2019-10-31 18:18:08 +00:00
jenkins-bot c8eea3eb35 Merge "Add strict "array" type hints to code expecting arrays" 2019-10-28 08:48:51 +00:00
jenkins-bot 6e48f16af6 Merge "Use READ_LATEST constant and fix a soft type hint" 2019-10-24 18:37:13 +00:00
Thiemo Kreuz 0efef4faf3 Add strict "array" type hints to code expecting arrays
I found candidates for this by looking for parameters names that end
with a plural "s".

Change-Id: I61c706eb4dfbdadceb0129afd724e6ce1eb4f4a8
2019-10-24 15:18:58 +00:00
Thiemo Kreuz d79dd00e01 Use READ_LATEST constant and fix a soft type hint
Change-Id: I2123c5efe01a5b42daeec9c7b0eefce089864657
2019-10-23 12:45:51 +02:00
Thiemo Kreuz 229c3d0fdd Remove non helpful (auto-generated) comments
None of these comments explains anything that wouldn't be obvious
from the code itself.

Change-Id: Ibcf50d401999ae76f315df2d2d27097a39f41bbd
2019-10-23 12:31:35 +02:00
Marko Obrovac 6ae3efc1c3 SeenTime: Do not set the cache key to Unix epoch
Now that seen times are TTL'ed, there is little sense/incentive to set
them in the cache to the default value, since we assume the default
value if they're not in cache (which is being set here). Therefore,
setting them only increases the cache size without any gains.

Bug: T222851
Change-Id: I78a0045e4a53653196114da81c2d60328e78c269
2019-10-18 14:23:28 +02:00
Roan Kattouw ff165c0003 Make EchoSeenTime cache entries expire after 1 year
These entries weren't TTLed at all, and so we had millions of records
for inactive users that were being stored forever. If a user doesn't
view their notifications for a year, it's OK for their notifications
badge to go back to the unseen state until they click it.

(The fallback behavior on a cache miss is to act as if the seentime is
the UNIX epoch, which means that any unread notification they have is
more recent than it, and is considered unseen.)

Bug: T222851
Change-Id: I99230d2351b40751a3f2f5123c5f38693120259e
2019-10-18 12:05:52 +00:00
Roan Kattouw 79ee7582f2 Make EchoSeenTime cache type configurable
Defaults to MainStash, but can be configured to use a different cache
backend by setting $wgEchoSeenTimeCacheType to a string that keys into
$wgObjectCaches.

Bug: T222851
Change-Id: Ifb935cc8be4618f7794ee79a234fc66d5cc5728a
2019-10-18 11:32:03 +00:00
Kosta Harlan ccab496734 Remove PhanTypeMismatchArgument from call to appendContent
Breaking in
https://integration.wikimedia.org/ci/job/mwext-php72-phan-docker/16324/console

Change-Id: I9a6b06158d9083317aea46510c0c47980a25e50a
2019-10-16 10:53:12 +02:00
James D. Forrester abaff73626 build: Upgrade mediawiki-codesniffer to v28.0.0
Change-Id: Ib66b0ad1b3929bf7e49eb40a3d5463b0d8b2280b
2019-10-10 09:29:24 +00:00