Commit graph

124 commits

Author SHA1 Message Date
jenkins-bot df47c71874 Merge "EchoHooks: Skip onOutputPageCheckLastModified on action=raw" 2021-04-03 10:51:55 +00:00
Timo Tijhof cc50ae633d EchoHooks: Skip onOutputPageCheckLastModified on action=raw
Bug: T279213
Change-Id: I9d3bf664f86c6dba5cc526a17bfab10303e0267d
2021-04-02 23:39:31 +01:00
DannyS712 acfa4e2f76 TitleFactory is not @newable, retrieve from MediaWikiServices
For creation of MultiTitleFilter

Change-Id: Ic527359d31fc0116a23c3173ba0f66f4bdfe3067
2021-03-21 23:54:55 +00:00
mech 2d8085bd15
Unset user-to-user email option when user emails are disabled
When one of the $wgEnableEmail and $wgEnableUserEmail variables is
false, "Email from other user" option should not be shown in
preferences.

Bug: T266087
Change-Id: I38e439b778d2679967776757d8e0d3b63519612e
2021-03-08 23:20:07 +01:00
Jeena Huneidi 596729d852 Make AttributeManager a service
Adds AttributeManager to EchoServices so that dependencies of
AttributeManager can be injected.

Bug: T275148
Change-Id: I4fa5084d72914d16b6d218e7dd3521f5a1919b80
2021-02-26 12:58:23 -08:00
mainframe98 d426e6fb54 Provide notifications icons through content navigation
Ia1451e3e802441162eecfc5b7f6a7ba2ae72f377 introduced
the notifications content navigation, which allows skins
to choose where they want notifications to be positioned,
rather than requiring them to manually extract them from
the personal tools.

Bug: T266613
Depends-On: Ia1451e3e802441162eecfc5b7f6a7ba2ae72f377
Change-Id: I7badfd9bf9257b2537596e9f2e93248f52e4bd82
2021-01-27 17:36:24 +01:00
jenkins-bot 6042d6e389 Merge "Prefer UserIdentity::isRegistered over isAnon" 2020-12-23 08:25:04 +00:00
Thiemo Kreuz c9797db768 Prefer UserIdentity::isRegistered over isAnon
isRegistered is part of the slick UserIdentity interface, i.e.
it's the more "canonical" form. This change makes it a bit
easier to move away from using the huge (4000+ LOC) User class
everywhere, in favor of the UserIdentity interface, where
possible.

This patch is meant as a small step towards this goal. I tried
to replace some usages of User type hints already, but prefer
to go in small, incremental steps.

Change-Id: I039c7a18672dfb6ea9507752bce9ea754babd690
2020-12-23 07:15:30 +00:00
James D. Forrester eec3ac85bb Use User->isRegistered(), not deprecated isLoggedIn()
Bug: T270450
Change-Id: Ieb3f78a7e5f71fc28f31c01d981d246cdd895581
2020-12-17 18:32:42 -08:00
libraryupgrader b391178348 build: Updating mediawiki/mediawiki-phan-config to 0.10.5
Change-Id: I8892cea01993f0ae51eebabaaf40685889124943
2020-12-10 18:20:15 +00:00
shubham656 90887d290c Modify EchoHooks.php to make hook not pass the entire special page
Bug: T257183
Depends-on: I7af57455d412dc5e93617ca0b3d6e7aac8ef500f
Change-Id: I4ec64e5d94a788d0cc1ed3c6e71096e9c830cbd1
2020-11-02 13:46:34 +05:30
jdlrobson 2f020163ee Restore old Echo styling through several reverts
These dont work. Timeless provides its own skinStyles for this module:
* Revert "Timeless skinStyles should be additive not replace"
This reverts commit 98d0d296a8.
* Revert "Use skinStyles for deciding where the text-indent should apply"
This reverts commit 8adab78547.

A new implementation in Vector means these are redundant:
*  Revert "Item label can now use overflow hidden"
This reverts commit b5dd7baa08.
* Revert "Drop text indent in modern Vector"
This reverts commit 150fc7a16c.

Bug: T264339
Depends-On: I2afc12504d7184583fa8331479125474c68017dc
Change-Id: Ifd0dd5a0479588664b772fb839dbbcd8d7c47320
2020-10-29 16:59:45 +00:00
jdlrobson b5dd7baa08 Item label can now use overflow hidden
Since the icon is applied to the link element it is now possible
to apply overflow hidden to the label itself when its wrapped in
a span.

Bug: T264339
Change-Id: Ifdc1d152702c1f5338fd2969cccf07971d622fc7
2020-10-21 10:04:40 -07:00
jgiannelos 4abfbd3c96 Normalize eps_topic
* DB changes
 - Create a table for push topics NameTableStore
 - Add a foreign key on subscriptions to normalize push topics

* Implement NameTableStore to normalize topics
* Update DB query joins to include topic from foreignkey
* Adapt code to use IDs instead of the actual topic

Bug: T261756
Change-Id: Ia7589f4a607993352d45b2dd3bcb3867d12d6e97
2020-09-14 15:52:23 -04:00
Ammar Abdulhamid 95a0dff88c Add all ResourceLoaderModules using supported hook
PersonalUrls hooks is not meant to be used to add RL modules,
its documentation says it's meant to "alter the user-specific
navigation links (e.g. "my page, * my talk page, my contributions" etc)."

Echo is already using BeforePageDisplay hook to add modules, let's
now register all our modules via that

Bug: T259872
Change-Id: I12616a9947ea0e574287443361e2180c42e48d4b
2020-08-09 00:35:56 +01:00
Amir Sarabadani 532fdbf294 Stop using ResourceLoaderTestModules hook
This hook is deprecated and we should use QUnitTestModule in extension.json instead

Bug: T232875
Change-Id: I7b3e22856adc64ee36e0b696e2371bb9673e4899
2020-08-03 13:18:29 +02:00
jenkins-bot d8d0e52c03 Merge "Use user IDs, not User objects, for reverted-user-id" 2020-07-28 12:11:24 +00:00
Roan Kattouw c87cae39d7 Make Echo QUnit tests run again
The automatic registration for these was broken, because
$wgResourceModules no longer contains Echo's modules (since they are now
registered in extension.json).

Instead, add the test files in tests/qunit/model/ explicitly in
onResourceLoaderTestModules. The tests in tests/qunit/mobile/ are
already added through QUnitTestModule in extension.json.

Delete the ext.echo.overlay tests, they were testing code that was
removed years ago.

Bug: T258818
Change-Id: I7b996dc8631a86033830cf532f1b8e85251788ad
2020-07-24 13:26:34 -07:00
Kosta Harlan 910df7a190 Use user IDs, not User objects, for reverted-user-id
The Revision->RevisionStore migration accidentally injected User
objects for reverted-user-id in two different places at different times.
This doesn't break, because there's backwards compatibility logic that
handles User objects appropriately, but we shouldn't be doing this.

Co-authored-by: Roan Kattouw <roan.kattouw@gmail.com>
Change-Id: I4170c207c3d4fc7f0d869c0b367b53389a70ce80
2020-07-21 13:19:30 +02:00
Kosta Harlan 07dc8ef425 Rename variable to revertedUser
See https://en.wiktionary.org/wiki/victim

"Reverted user" is more descriptive in any case.

Bug: T254646
Change-Id: I70964850e63cdd832b2cc1799161c480f283d08c
2020-07-21 13:15:09 +02:00
Kosta Harlan efecfc07dc Hooks: Use new style hook registration to allow for DI
Implement RecentChange_saveHook interface and pass Config via hook handler
declaration in extension.json.

Change-Id: I2bc5950eb6fc066b2f2a83ea84b700d02b075de9
2020-07-03 04:06:58 +00:00
jenkins-bot d891751f11 Merge "Don't make unchecked method call on object that might be null" 2020-07-01 16:07:53 +00:00
jenkins-bot a2c6b21925 Merge "Update hooks to use PageSaveComplete" 2020-06-30 10:40:51 +00:00
DannyS712 28a5eafe8c Update hooks to use PageSaveComplete
Extension requires MW 1.35+, always available

Bug: T250566
Change-Id: I1131a50f03002337d6b6eac18fdcb6adaaa896ce
2020-06-26 15:59:04 +00:00
Ammar Abdulhamid 2a8b694ae9 Don't make unchecked method call on object that might be null
The final iteration of Ie41331f made it clear that ::getTarget()
method of the special page can be null other than User object.
Since we know this we should not make unchecked method call on it.

Bug: T251687
Change-Id: Ib36a6c947b58780171cf5e7343e79d8724414b83
2020-06-25 11:57:05 +01:00
jenkins-bot 17b57a6f37 Merge "Echo: Add gender support for Mute user label" 2020-06-25 04:32:47 +00:00
Ammar Abdulhamid d029f18570 Echo: Add gender support for Mute user label
Bug: T251687
Depends-On: Ie41331fe37ba08dba343f2b229d2374c0443a074
Change-Id: I563f3f3df84cc12a4256feb158f2e1ccf7c69aad
2020-06-18 21:46:03 +01:00
James D. Forrester a1fb5d5d75 Add ten millionth edit thank you notification, per demand on Facebook
Change-Id: I26a0dd0954f7f3f61014cde371fa0c46c4db78cb
2020-06-17 19:39:39 +01:00
Paladox 374aeb5fa9 Increase "euw_wiki" VARCHAR length from 30 to 64
This is the same fix that has been done to Flow.

Database names are limited to 63 per [1], so by upping the limit
we allow longer db names (e.g db names longer than 30 characters).

[1] https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-limitations-database-objects.html

Change-Id: I0d26a77c1bb49719eebc6beead4d79a27fcd3826
2020-06-11 17:23:19 +00:00
Kosta Harlan fb21b0abef Muted pages: Adjust config to not show missing titles
Bug: T46787
Change-Id: Ibb760615670ce36d198627b1628ee311b6fcb628
2020-06-03 12:49:26 +02:00
jenkins-bot de09ddd4d9 Merge "Add push subscription management" 2020-06-02 18:21:42 +00: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
Umherirrender 24ab1eb35c build: Bump phan to 0.10.2, remove taint-check
Change-Id: I27fe6a6d248a25e70f4b18f36cf75736ef949bc5
2020-05-31 16:57:07 +02:00
DannyS712 37cde0b9f2 UserClearNewTalkNotification: Only require a UserIdentity
Bug: T253435
Change-Id: I5e0d7a6300dfd6acda754e6334a6e3f58900d753
2020-05-29 08:40:47 +00:00
Clara Andrew-Wani 6dd0f21968 Use new TalkPageNotificationManager
Bug: T239640
Change-Id: Iba015bf246250fc144022d92b88eb00882dd1d3a
2020-05-15 12:58:14 -04:00
jenkins-bot 304f82c314 Merge "Add page linked event title muted list" 2020-05-12 21:08:47 +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
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
Umherirrender 4337586f4a Use MediaWikiServices::getAuthManager
This required MediaWiki 1.35

Change-Id: I91de51208be72ad0eebc15c3d74069360014085e
2020-04-04 16:59:12 +02:00
Ammar Abdulhamid ad8340ea59 Replace deprecated User::isAllowed with PermissionManager
Bug: T220191
Change-Id: I321a1d67a9272dfb305d76589c6371176f1afc16
2020-03-14 19:14:37 +00:00
jenkins-bot f281b221eb Merge "build: Updating composer dependencies" 2020-02-19 21:33:02 +00: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
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
Matěj Suchánek e16ff3a939 Remove dead code from EchoHooks.php
Change-Id: Ie1ff4977a61b9c0350b2c8891ce26b6fa8cf49e5
2020-01-05 14:38:26 +00:00
libraryupgrader ef3d2b886d build: Updating mediawiki/mediawiki-phan-config to 0.9.0
Change-Id: I03333636654eff80d4fe7fa543ac9e6c321af891
2019-12-29 11:59:32 +00:00
jenkins-bot 8b6efb51bb Merge "Add preference to not receive digests about read notifications" 2019-12-12 11:14:30 +00:00