Commit graph

896 commits

Author SHA1 Message Date
Brad Jorsch d7a77b0aba Fix usage of $db->nextSequenceValue()
The return value from the method is only suitable for passing to
$db->insert(). To get the inserted ID, you need to call $db->insertId()
even if $db->nextSequenceValue() returned non-null.

Bug: T164900
Change-Id: I466fd372804927b3ad72125c7a69d253bd7a24f8
2017-05-10 17:46:07 -04:00
Max Semenik 5003262d77 Don't use deprecated class
Change-Id: I76ad6b8cafb4fcf2f1f2ce32537a5314a66b64a0
2017-05-05 11:51:04 -07:00
Roan Kattouw 2e4e14498a EventMapper: Don't retry failed lookup queries on the master on GET
Only retry lookups if there are multiple DB servers and
changes were made in this request. This same logic is used
in a couple of places in MW core, like WikiPage::loadPageData()
and Revision::newFromConds().

Bug: T164505
Change-Id: If1af363f9687019864b5eaef72ffe0bc824a2223
2017-05-04 17:49:33 -07:00
jenkins-bot f19d9156a2 Merge "Fix counting of bundled mention notifications" 2017-05-03 10:53:54 +00:00
WMDE-Fisch 620855d770 Fix counting of bundled mention notifications
This patch will fix the notification counts in bundled mention notification
messages. The former method did not work at all due to false assumptions
what the getBundleCount method can be used for.

Since this is in the presentation only wrong messages should be fixed when
deployed

Bug: T164115
Change-Id: If316549a090c2d281a8d612e4985fd556eabc807
2017-05-03 10:40:40 +02:00
jenkins-bot 71e10ff246 Merge "MentionStatus: prefer failure-type" 2017-04-20 20:26:23 +00:00
Stephane Bisson dd77a46c1b MentionStatus: prefer failure-type
In MentionStatusPresentationModel, prefer
extra['failure-type'] to event-type to determine
why the mention was not sent.

Bug: T144614
Change-Id: Id3b55e15a0c1a8f3fee19cbe07983c6e373b309e
2017-04-20 12:21:02 -04:00
Stephane Bisson c46d56b018 Special:Notifications show unread by default if there's unread notifications
Bug: T162927
Change-Id: Ibdfaca90803eb8b12b12eb1781b0692e7336b7d9
2017-04-19 15:20:12 -04:00
This, that and the other 3f99672d5e Add proper message when user group expiry is changed
There's a lot more that could be done to improve user "rights"
notifications (really user group notifications), but this will do for now.

Bug: T159301
Depends-On: I5d32445f8e5b41599889b8488a2431e7a908f858
Change-Id: I27d52bc5c39219c832bf63a491faa1e421b0c024
2017-04-10 11:38:49 -07:00
Chad Horohoe f4a5ad9300 LoggerFactory is now namespaced, reference it properly
Bug: T161837
Change-Id: Ide941dc019163ed09f208caa7a615d1e3483bc91
2017-03-30 12:35:47 -07:00
Paladox ecae781538 Fix Illegal string offset 'ltr' in ResourceLoaderEchoImageModule.php
Make $paths an array.

@Krinkle came up with this fix. I just uploaded the patch.

Bug: T161420
Change-Id: I709808bfb0e620f7808175dc272fd57e88b663f5
2017-03-27 23:46:45 +00:00
MtDu 185e68a803 Support loading of secondary icons in RLEIM module
Before, secondary icons, such as linked, changes, thanks, and
userSpeechBubble were loaded in mw.echo.ui.icons.less. Now, an
extra icons attribute is passed when the module is loaded, allowing
RLEIM to know which icons to load. If this attribute is left out,
an MWException will be thrown.

Bug: T159394
Change-Id: I9b36a74bcf1da0d1c698845bd067b226fb81ac96
2017-03-01 23:45:04 -06:00
Roan Kattouw e0ecaad90e Log more info for unserialize failures, and don't treat them as errors
Bug: T159372
Change-Id: I1110465759bd831a9a324bf3f11a3add4f5f446b
2017-03-01 13:02:59 -08:00
WMDE-Fisch eb81a1c0f1 Avoid unintended mentions when changing content
When content is changed and the change contains the signature
of the user, the method checking for reasonable mentions in
that changes did not consider multiple signatures.

The patch fixes that and adds a test for it.

Bug: T154406
Change-Id: I86303f42e97d16c68e3235b0e2d13542ceedf1fe
2017-03-01 11:58:08 +00:00
Umherirrender 3a72d87838 Remove unused DiscussionParser::stripIndents
Change-Id: I75fbcae70655c6db2873fd5e22d11a3c2cbf2f84
2017-02-22 18:05:07 +01:00
WMDE-Fisch d6f011aa1a Fix mentions failing editing empty pages
For the used diff engines an empty/new page is equivalent
to an empty line. When adding content that includes an
empty line the content will be split into two parts. The
interpreted diff will then consist of one addition, one
copied line and another addition.

Is the ping in the first addition and the signature in the
second addition the DiscussionParser does not send mentions.

The patch introduces a special case when interpreting diffs
if content is added to empty content. This will also skip
execution off diff engines since the interpretation is trivial.

Bug: T155998
Change-Id: Id5e44bc3245940c1f77c80f036db637756542552
2017-02-10 14:39:13 +00:00
jenkins-bot d3fb6d38ea Merge "Use internal diff engine" 2017-02-10 11:24:28 +00:00
WMDE-Fisch 9b0a6f7a47 Replace deprecated wfGetLBFactory() and wfGetLB() call
Change-Id: I500196084db57e9d74dc25a513cbebea9ae3c9a6
2017-02-09 17:43:40 +01:00
WMDE-Fisch a1cb603bb3 Use internal diff engine
wfDiff() is deprecated and using the internal diff engine is
recommended as replacement.

Bug: T93625
Change-Id: I60af08888ef4e0bc9b80b75495f6e9e3fa631002
2017-02-03 19:07:21 +00:00
Leszek Manicki c205cd85d3 Document return value EchoEventPresentationModel:getTruncatedX methods
Change-Id: Ic3416bc07bb2f47ff6800ab0de86ee7b23a7cc2e
2017-01-30 11:54:55 +01:00
Stephane Bisson 8524471820 Remove 'text' as a valid notifications output format
The ability to format notifications as text
has been removed in Ic5712c4ce265b6faabce7a4028b4294fe3c73f18.

Bug: T155874
Change-Id: I72cadbaaa01414ce46315a618da0cb46241ad93e
2017-01-25 10:33:44 -05:00
Reedy 569006f614 Pass 2 parameters to addDeprecation
Change-Id: I891f94d32d64296fdb121d632e94dfba4b09070f
2017-01-05 22:14:38 +00:00
Yuriy Shnitkovskiy a3784bef1d Fixed variable interpolation in DataOutputFormatter.php
Bug: T154369
Change-Id: Ib51165081797d3aa5e036e3fde771ac92e89baa3
2017-01-03 09:55:29 +02:00
Justin Du 67f926707e Add GENDER support to a few Echo messages
* echo-email-plain-footer
* echo-email-html-footer-preference-link-text
* echo-email-html-footer-with-link

Bug: T145439
Change-Id: I2d55a617910efa11effef1a469e6d845eebc5591
2016-12-28 10:43:40 -06:00
Thiemo Mättig a37742b422 Fix typos and incomplete PHPDoc tags
Change-Id: I29382492a7afd14440019c0c478f5a81c2254f59
2016-12-28 12:57:26 +01:00
Stephane Bisson 61b602e961 Fix unread notification count caching
Purge all cache when unread count changes and
repopulate on read.

Also fix client-side estimation when
marking a foreign notification as read.

Bug: T151389
Change-Id: I62def3d40a5640e26c234bb0335bc506dbf864a0
2016-12-09 09:23:59 -05:00
jenkins-bot 312bec325c Merge "Update for API error i18n" 2016-12-06 20:03:32 +00:00
James D. Forrester 8c810dff48 build: Update mediawiki/mediawiki-codesniffer to 0.7.1
Also added "composer fix" command.

Change-Id: I25cb61b3b92798f1259d1575a336e2b056d5764f
2016-12-05 15:54:30 -08:00
Roan Kattouw 49974544ba Split up $wgEchoConfig
$wgEchoConfig is a deeply nested structure that ExtensionRegistry can't handle well.
It also combined different things, and the version number was used for two
separate purposes.

Split this out into $wgEchoCacheVersion, $wgEchoEventLoggingVersion
and $wgEchoEventLoggingSchemas.

Change-Id: I2f9d5d111f7925fb057d423a3e7064bff5040205
2016-12-05 15:44:12 -08:00
jenkins-bot 9733505d1c Merge "Align Email format with Wikimedia color palette" 2016-11-28 16:11:21 +00:00
Amir Sarabadani 047b92e4c6 Align Email format with Wikimedia color palette
For Wikimedia color palette see: https://phabricator.wikimedia.org/M82

Change-Id: I6782148e94f4896397f93295ab44760c02556e25
2016-11-28 00:50:46 +03:30
Roan Kattouw ed613f2e26 Fix missing doublecheck icon on Special:Notifications on mobile
Bug: T146706
Change-Id: I918beabb1bcbe4a66c4252a795d379e2ff6591a9
2016-11-23 16:31:23 -08:00
Brad Jorsch f608d73287 Update for API error i18n
See Iae0e2ce3. Since Echo master requires core master, this just depends
on the master patch instead of trying to maintain BC.

Depends-On: Iae0e2ce3bd42dd4776a9779664086119ac188412
Change-Id: Icc088b31bc99e03ac88dfb44329df55318bf99b5
2016-11-14 12:48:24 -05:00
WMDE-Fisch 5d0a03fcf1 Fix typo in doc
Change-Id: I8a4c3119391ef436cb021b8512ccd3a2dce185f4
2016-11-01 15:08:29 +01:00
Aaron Schulz cfa0aa099a Fix bogus variable usage
Change-Id: I9100648d5b6be63a697a8660def33e592d010688
2016-10-17 19:53:10 -07:00
Kavitha Muthu d3d61409d3 Show orange alert and provide hook
Show orange alert for all notification types in the edit-user-talk
category and provide a hook to enable other extensions to prevent
the orange alert from appearing.

Bug: T137954
Change-Id: I0b49c3a5eb0a027f8839ab86e77c527357907dd0
2016-10-14 17:54:29 +00:00
Reedy 161f21ab5a Database and LoadBalancer documentation updates
Replace deprecated function calls

Change-Id: Id7e4136d7258abb61117fff73d51766954605737
2016-10-09 21:21:33 +01:00
addshore 4010faaf89 Add some typehints & phpdoc
Change-Id: Ic5751f0745685ea4db009458b5976907dc22c518
2016-10-05 23:27:02 +01:00
Reedy 21faa050f6 Replace Revision::getText()
Bug: T147380
Change-Id: I3864fc64bd178471b1454033adbc9137485d1563
2016-10-05 00:42:45 +01:00
Roan Kattouw 9d8e09e71b Don't show pages and counts related to disabled notification types on Special:Notifications
Bug: T147138
Change-Id: I4350377720644015a1db9789979fb80cd4844745
2016-10-04 11:35:30 -07:00
enigmaeth 5b9ee79253 Dropped call to WikiPage::getText()
Bug: T146994
Change-Id: I47c5258154749b70f380c1462a4d310a04f1d85b
2016-09-29 18:47:29 +00:00
jenkins-bot e888d95f1e Merge "Used parsed section titles for anchors" 2016-09-28 14:46:47 +00:00
Roan Kattouw 6eea6d93a1 Used parsed section titles for anchors
This allows us to link to the right section when the section
title contains templates or magic words.

* Add getParsedSectionTitle()
* Use it in getTitleWithSection()
** Stop using Parser::guessSectionNameFromWikiText() because it
   wants preprocessed wikitext, not fully parsed and stripped text
* Move getTruncatedSectionTitle() from EventPresentationModel to
  PresentationModelSectionTrait and make it use getParsedSectionTitle()

Bug: T134216
Change-Id: I877ff6b0ce4e64400f6e5f6284ae47a11cd4335b
2016-09-27 16:17:59 -07:00
jenkins-bot faf3bee07c Merge "Fix links to sections with [[links]] in their title" 2016-09-27 19:53:33 +00:00
jenkins-bot 4f2ef135a7 Merge "Make user rights notifications link to added/removed group" 2016-09-27 04:00:07 +00:00
Kavitha Muthu a518044bb3 Make user rights notifications link to added/removed group
This change was made to direct users to the added/removed group.
Notification about the change in the user's right will route the user
to a page about the group.

Bug: T55860
Change-Id: Iff5f4d38ca2cc479c269ef736a7fd957959a03dc
2016-09-27 03:53:53 +00:00
Roan Kattouw 229db67347 Fix links to sections with [[links]] in their title
We would generate things like #Foo_.5B.5Bbar.5D.5D
instead of #Foo_bar . Unfortunately this doesn't
fix section titles with templates / magic words
in them, because those are parsed at notification render
time instead of at notification generation time.

Bug: T134216
Change-Id: Ia171324a4a616c956ab08fcff38293f18dc765fa
2016-09-26 17:16:24 -07:00
Roan Kattouw 44a210c720 Defer cache write in EchoSeenTime::setTime()
This can be called on GET requests, like when visiting Special:Notifications,
and also from getTime() on a cache miss. Defer the write to the real
cache, but update the in-memory cache immediately.

Bug: T146492
Change-Id: I24db223ded9508942dc0ef1abf55952e98f444d0
2016-09-23 12:11:37 -07:00
Roan Kattouw 8269970305 Remove unused $flags parameter for EchoSeenTime::getTime()
It was always set to 0, and we were using the old (pre-2015)
get() interface so it wouldn't have worked anyway.

Change-Id: Ie92b223a485a5d9d256d2dc69d4ff3807e838878
Bonus: remove documentation for nonexistent parameter for setTime().
2016-09-23 11:53:59 -07:00
jenkins-bot f40f1aa36c Merge "Convert 'seenTime' to a global property" 2016-09-20 23:22:26 +00:00
Matthew Flaschen ffd9d4bb4d Fix moderation controller
The change to use DeferredUpdates had a missing use.

Change-Id: Ied72608c9b3aa597627aa5ea069c257f506c3c1b
2016-09-20 01:44:25 -04:00
jenkins-bot 21cd011dda Merge "Make sure bundledNotifications is an array" 2016-09-20 00:13:56 +00:00
Moriel Schottlender f47c554e1c Make sure bundledNotifications is an array
- Make sure that even if internal values of the array are null,
  the end-result is a valid array (with sequential keys)
- Verify that the API sent the UI an actual array, and if not,
  output an error to the console.

Bug: T145825
Change-Id: Ibdf17c58fe88e3e2547dde62cd4d3d06e089cbc8
2016-09-19 23:08:14 +00:00
jenkins-bot 92c7c8d521 Merge "Remove primary link from the bundle of page linked notification" 2016-09-19 22:59:15 +00:00
Moriel Schottlender 1575e2bb7a Convert 'seenTime' to a global property
This transforms seenTime concept to a global property for all wikis
and sources, and updates the global seen time on opening the popup.

Bug: T134855
Change-Id: I67bcc4b346237317c7a9204dd43cd0e9ee02792f
2016-09-19 14:37:31 -07:00
Moriel Schottlender 58c53af1d1 Remove primary link from the bundle of page linked notification
Also, make sure that the bundle follows the same behavior as the
xwiki bundle, where if it does not have a primary link, the 'click'
event triggers the 'expand' action.

Bug: T145902
Change-Id: I456bf76a7bd531ffcad5462708f37cd54d8af99d
2016-09-19 14:16:43 -07:00
jenkins-bot bac8d67e99 Merge "Count the number of success & failure notifs sent" 2016-09-19 08:14:32 +00:00
Matthew Flaschen f2327a919b Fix GENDER without explicit parameter
Although we generally use getViewingUserForGender, these messages
are UI and in user language, so we should change the flag anyway.

getViewingUserForGender is essential for messages that are used
in batch jobs.  Some messages technically don't require it, though
it's probably best to be consistent anyway.

Bug: T144538
Change-Id: I7b57777ab93b5752165c7bdd85fa5ce66b294b22
2016-09-14 16:39:49 -04:00
addshore cb575928a9 Count the number of success & failure notifs sent
Change-Id: I3e11bc8878ddf48265c628d828ee700f3aee7bbb
2016-09-14 13:35:03 +02:00
Jakob Warkotsch 3da89ea4d9 Send notification for mentions on changes
This sends out a notification when a user gets mentioned in a change as
long as a signature is added in the same section.

Bug: T138938
Change-Id: Ie183fbb8150bd9451a5b0a9fea0227e3241b26a0
2016-09-14 12:36:22 +02:00
jenkins-bot 5fd9831c07 Merge "Send mentions when editing multiple sections in between sections." 2016-09-14 10:06:36 +00:00
Catrope bba984c002 Revert "Make seen/unseen badge more consistent across wikis"
Has bugs, and will likely cause deployment problems.
This'll need to be reverted in wmf.19 at least
until we fix it up.

This reverts commit 00e0b9f45d.

Change-Id: Ia9d220ebcb607f96dee6bc856755305ed8501fcc
2016-09-13 14:21:32 -07:00
jenkins-bot 1f3517e562 Merge "Fix seen time for new users" 2016-09-13 17:31:59 +00:00
Moriel Schottlender cc36178e4a Add {{GENDER}} support to dynamic action messages
Make sure we pass the current user to the message, since empty
{{GENDER:|}} doesn't seem to work in PHP.

- Add parameter to documentation
- Add {{GENDER}} syntax to en.json as example
- Add parameter to the message creation

Bug: T144538
Change-Id: Ifc5e3bbe8309cc9ce120b7d61cdc050d7055aacc
2016-09-12 15:30:29 -07:00
jenkins-bot 28248c0cc2 Merge "Actually insert target page entries when creating an Event" 2016-09-12 21:32:03 +00:00
Stephane Bisson d7845da3f6 resetNotificationCount() from replica with no lag
When notifications are being moderated, the unread count
for affected users has to be recalculated.

It was initially done using DB_SLAVE but it was leading
to inconsistent data since that database did not know
about recently deleted notifications.

It was changed to DB_MASTER but it potentially led
to too many queries on master.

This patch tries to wait for the replica to have
caught up with those changes and use it to update
the unread count for the affected users.

Bug: T93673
Change-Id: Ib4a845e82f686dd7ed807ab21a28490014b56604
2016-09-12 19:59:02 +00:00
Stephane Bisson bc03468473 Actually insert target page entries when creating an Event
This was broken in Ib57510e6b0e9202a7e035f8ea59955dca8a0b24a

Bug: T145232
Change-Id: Ieaad1febaf07bdcf8aee3761afbd039c082fc9ad
2016-09-12 15:05:18 -04:00
jenkins-bot 7f24836607 Merge "Make PresentationModel::getPrimaryLinkWithMarkAsRead() final" 2016-09-12 13:28:05 +00:00
Kunal Mehta 7051cfb2a5 Make PresentationModel::getPrimaryLinkWithMarkAsRead() final
Subclasses should not override this. Also fix the return type phpdoc of
getNotificationCountForOutput().

Change-Id: Ia6963794d3a68dca742fe52ac197edf1575bed76
2016-09-11 12:46:08 -07:00
Moriel Schottlender 615ffb1125 Always cap notification count based on MWEchoNotifUser::MAX_BADGE_COUNT
Also increase Echo version so we update the cache.

Bug: T144707
Change-Id: Ie939d313c8c6a8168fa3eb3036d9275270575559
2016-09-09 17:15:15 -07:00
Matthew Flaschen 98c6cd9eab Fix seen time for new users
Until the user opens the popup the first time, everything should be
unseen, rather than nothing unseen.

Also, make the default 'everything unseen' if we forget their seen
time.

Change-Id: I99ff8d46d4fa2fab0db374ddff63727b18a68363
2016-09-09 17:46:34 -04:00
Sébastien Santoro ad0cf6cda0 Fix MentionStatusPresentationModel::getSecondaryLinks return value
Any class implementing EchoEventPresentationModel and overriding the
getSecondaryLinks method should return an array (while getPrimaryLink
could return a false boolean value).

This change fixes the following errors:

Warning: array_values() expects parameter 1 to be an array or collection
in …/extensions/Echo/includes/formatters/EventPresentationModel.php on line 494

Warning: array_filter() expects parameter 1 to be an array or collection
in …/extensions/Echo/includes/formatters/EventPresentationModel.php on line 494

This is a follow-up for commit b4b59ee4.

Bug: T145229
Change-Id: Ic66ca03b6979472495c9b748093d01f8f097d56a
2016-09-09 19:59:09 +00:00
Stephane Bisson b3c07eedeb Remove etp_user
Target page entries used to exist for each user
that was notified for an event. They were
removed as the notifications were marked as read.

Now they remain so that the association between
pages and events can be used for moderation
regardless of the notifications read status.

This patch removes everything about
echo_target_page.etp_user from sql and php code.

Bug: T143959
Change-Id: Ib57510e6b0e9202a7e035f8ea59955dca8a0b24a
2016-09-09 09:32:28 -04:00
Moriel Schottlender 59c0ad6c4d Make 'Edit threshhold' notif appear regardless of title existence
If a user recieves 'this is your X edit' they should get this notif
regardless of whether the edit they created was deleted. We should
make sure the title is there only for deciding whether or not to
create a link for it; otherwise, the notification will just appear
without a link to the revision.

Change-Id: I00ed4278bb4e15b1e9ddfa2c3af8fad0540fc5f8
2016-09-08 23:01:47 +00:00
Roan Kattouw 48ca4aeb5e ModerationController: Update count from master, not slave
At the time that resetNotificationCount() is called, we've only
just moderated something, so the slave won't have those changes yet,
and the computed notification count will be wrong.

Change-Id: Ia83f2b9cf7f4bbaee25e03f7bc8f73bcd4d345f9
2016-09-08 15:26:07 -07:00
Moriel Schottlender 00e0b9f45d Make seen/unseen badge more consistent across wikis
- Add a 'hasUnseen' data to the xwiki bundle so the badge can
  consider its value when changing its color even without the
  bundle being opened.
- Check and store seenTimes from all sources that the xwiki
  has in a new JS object that the SeenTimeModel can store

Bug: T134855
Change-Id: Ifdcee88b4378cdc7acb4ae5c0cbc60b76339757e
2016-09-08 12:40:15 -07:00
Chad Horohoe da4f8f5db9 Use static cache for times so it works across instances of SeenTime
Follows-up If6319a02. Making the cache static enables us to reuse
the in-process cache across multiple instances of the class.

Bug: T144534
Change-Id: I1a594830f13d56ab4e0e636a3cdb5e96379e990a
2016-09-08 12:24:46 -07:00
WMDE-Fisch 4ac1711be8 Send mentions when editing multiple sections in between sections.
This patch fixes mentions not being send when multiple sections were added
in between sections.

Since we only want to send mentions when userlinks and signature are present
in the same section a new method was added extracting sections and the related
content from an addition. The results are checked whether a section content
contains a signature and might be relevant for mentions.

Bug: T141863
Change-Id: I434c664552bbadbeef6e897e20703e813f5a4c52
2016-09-08 15:15:14 +02:00
Moriel Schottlender eb98b21dfe Add 'canRender' check to EchoMentionStatusPresentationModel
Change-Id: Ica338ff5810b62849d30e5b27709558f1b797c43
2016-09-06 14:44:51 -07:00
Kunal Mehta b3cdd56952 SeenTime: Wrap cache with CachedBagOStuff
That adds an in-process cache so we don't have duplicate key lookups on
every request.

Bug: T144534
Change-Id: If6319a026c457a32bfde0e212c6193aa728cb208
2016-09-06 13:06:26 -07:00
jenkins-bot cf7cf0dd66 Merge "Provide title when parsing wikitext" 2016-09-02 01:48:33 +00:00
Stephane Bisson c75d974004 Provide title when parsing wikitext
Bug: T141460
Change-Id: I802c9c4bf964a060e44f25a487b5aec6f7d8c6b6
2016-09-01 16:48:56 -04:00
Moriel Schottlender 97a7d44190 Clean up Special:Notifications output
Transform the php output to OOUI widgets.

Bug: T129172
Change-Id: I65cb5f2a016fc2a3c33a0b1cd2f3f88ed963ab02
2016-09-01 13:38:06 -07:00
Moriel Schottlender a0e02da71f Style changes for unwatch actions
- Reverse 'watch' / 'unwatch' star icons
- Truncate title texts
- Minor indentation fix

Bug: T132975
Change-Id: I1dbd6d1480f6ef5a45184271c932cd27258f7424
2016-08-26 14:58:10 -07:00
jenkins-bot 23e95ec3fe Merge "Dynamic actions: Reuse label/description for those fields" 2016-08-26 18:12:54 +00:00
Stephane Bisson 405b8ce084 Loading notifications starting with one big local bundle
Redo of cc86387f80 but
trying not to break the special page this time.

Bug: T143813
Change-Id: Id39d18a2ba4efa2b49ed42d10aa9aeef0e4672f0
2016-08-26 06:45:48 -04:00
Matthew Flaschen 299b66f937 Dynamic actions: Reuse label/description for those fields
This is necessary to preserve backwards compatibility for the API, and
this also fixes the no-JS special page.

Also, fix additional warnings.

Change-Id: Id603b4ab22c69097d5559a756bec72a6ba785661
2016-08-25 22:00:25 -04:00
jenkins-bot c82e390591 Merge "Remove unused method EchoEventMapper::fetchByUserBundleHash" 2016-08-26 00:17:59 +00:00
jenkins-bot 6249814324 Merge "Revert "Get the overfetched before bundling to avoid removing the base"" 2016-08-25 22:46:31 +00:00
Catrope 7c400c927e Revert "Get the overfetched before bundling to avoid removing the base"
Breaks pagination. At least on Elena's machine, this results
in only 51 results being shown with no pagination controls.

This reverts commit cc86387f80.

Change-Id: I6f888581039dc9171ce2114c47e53c2eda4eb8a3
2016-08-25 22:39:43 +00:00
jenkins-bot 276a38e8ad Merge "Get the overfetched before bundling to avoid removing the base" 2016-08-24 18:55:44 +00:00
Stephane Bisson cc86387f80 Get the overfetched before bundling to avoid removing the base
Bug: T143813
Change-Id: I82809d5fe1dd919810349d820a5f62175ce48fd4
2016-08-24 14:38:21 -04:00
Stephane Bisson 9dd4e4ee30 Don't select echo_event.*
Removed fetchByTypesAndPage since it is now unused

Fixed fetchByPage to select simple * instead of
echo_event.*

Bug: T105890
Change-Id: I486f27501a649d5368305965d2cd012afe0915b2
2016-08-24 12:56:49 -04:00
Roan Kattouw ce3d6b2f49 Remove unused method EchoEventMapper::fetchByUserBundleHash
Bug: T143763
Change-Id: Iad63e8866eeccf316b3efe3a44888256c0c407d8
2016-08-23 19:22:01 -07:00
jenkins-bot 4e99a5095f Merge "Add dynamic secondary actions to notification items" 2016-08-23 17:43:08 +00:00
Roan Kattouw ff2c58cdc4 Follow-up 8eda2aa3f: actually render the nojs message on Special:Notifications
Change-Id: Id0d931f8465c2abfa41b1053ec2b2d0a632037ed
2016-08-22 16:16:41 -07:00
Moriel Schottlender 480ce92bd8 Add dynamic secondary actions to notification items
Allow extensions to add dynamic actions that perform some
API request and display a confirmation message.

Bug: T132975
Change-Id: Ib16d57c3f1a11a9749564c6e2112bf1ca32c55e8
2016-08-22 16:04:48 -07:00
Matthew Flaschen f36d20ba4d Fix special page visit logging
'version' was missing, making the event invalid, causing it to
not reach the database.

Factor out this field to logEvent

Bug: T121939
Change-Id: I9e4bb5574d69495cb5f53830047c68104c6ad10f
2016-08-22 16:35:50 -04:00
jenkins-bot 18a3da6b28 Merge "DiscussionParser stripSig from mention content" 2016-08-19 22:47:53 +00:00
jenkins-bot 95f829a3b7 Merge "Moderate notifications" 2016-08-19 22:34:16 +00:00
Stephane Bisson 6e2236db81 Moderate notifications
* When a page is deleted, moderate associated
  notifications. When it is undeleted, unmoderate.

* When a notification cannot be rendered
  (canRender() returns false), moderate it.

The biggest advantage of moderation over mark-read-and-ignore
is that those notifications are filtered out at the database
level from this point on. They are not re-processed every single
time and do not affect the number of notifications returned by
the API.

Bug: T140327
Bug: T140836
Bug: T141463
Change-Id: Idefe78408fd584c13aaa9174cee3055539d92848
2016-08-19 22:20:04 +00:00
Jakob Warkotsch 1afd529a67 Log potential notification for mentions on changes
This logs whenever a user gets mentioned in a change as
long as a signature is added in the same edit.

Bug: T138938
Change-Id: I2a775d1dcac6a947b353c8bd2f7be70b6384641f
2016-08-19 22:05:16 +00:00
jenkins-bot f48b44bacd Merge "Log edits in multiple sections that could trigger mentions." 2016-08-19 22:00:43 +00:00
Matthew Flaschen 2186e9a6b6 Make server-side logging always check whether schema is enabled
We have a convention to put a logger helper function in
MWEchoEventLogging, so also enforce that:
* Rename to actuallyLogTheEvent to logEvent and centralize the
  'enabled' check there.
* Make that protected, so new schemas also use a helper function
  for consistency.

Bug: T143092
Change-Id: I8085fc5898f3420172355c5a2df04aac6add9acd
2016-08-18 21:09:48 -04:00
WMDE-Fisch 66ecc1f0e7 Log edits in multiple sections that could trigger mentions.
This patch logs multiple section edits that could trigger mentions.

Since we only want to send mentions when userlinks and signature are present
in the same section a new method was added extracting sections and the related
content from an addition. The results are checked whether a section content
contains a signature and might be relevant for mentions.

Bug: T141863
Change-Id: Ib06cd855b2c7fbd51d8ab6602882cb38aadf8350
2016-08-18 14:58:00 +02:00
Moriel Schottlender 8eda2aa3fa Include the 'no notifications' message in nojs div
...So it can be hidden if JS is loading.

Bug: T142451
Change-Id: Idd70bdacb79cb45e759b30e711178721db5f80bd
2016-08-16 17:25:14 -07:00
jenkins-bot 435fe70fe0 Merge "Add a rasterized email icons to Echo modules for email" 2016-08-16 23:27:04 +00:00
Leszek Manicki 975be8fb45 Flip the parameter name and its type in phpdoc of MWEchoEventLogging
Also adds a type hint to MWEchoEventLogging::actuallyLogTheEvent
parameter.

Change-Id: I7538083ec33b5c4538386da22550273d8e882a72
2016-08-16 15:01:57 +02:00
Leszek Manicki ab2bf21ce5 Check if logging is enabled before logging EchoInteraction
Adds a check before logging a visit to Special:Notifications
added in Icfe63fb8daa8e8fba029e22b4de3e4f65517c448

Bug: T143092
Change-Id: I9e58ba35eef6a25a78e96a76facc04819cef37da
2016-08-16 14:39:02 +02:00
jenkins-bot dc397a9ec4 Merge "Log Special:Notifications page visits" 2016-08-16 00:23:31 +00:00
Moriel Schottlender 5fefbe4b03 Add a rasterized email icons to Echo modules for email
Make sure we send rasterized png emails instead of SVGs in the
email formatter.

Bug: T127794
Change-Id: Ia28757bda521ec182f75458c8e52d54847d15681
2016-08-16 00:21:13 +00:00
Moriel Schottlender 015acb5407 Log Special:Notifications page visits
Bug: T121939
Change-Id: Icfe63fb8daa8e8fba029e22b4de3e4f65517c448
2016-08-15 17:10:56 -07:00
Roan Kattouw 8016c9628b Follow-up 4e64643eb: Count pageless notifications when counting pageless notifications
Bug: T137502
Change-Id: I9e861cf97d0d8850dcbe732da496e34d434e4554
2016-08-15 11:35:28 -07:00
WMDE-Fisch c81e1b93d2 Fix mention failures not beeing sent.
While manual rebasing the bundle patch the wrong
line was removed.

Also improves tests to check for notifyAgent.

See I1069aeb5523db8710da4e8e21065bf447d031e3c

Change-Id: I33ddeccea153d6f6ae97e5c60e8b47dc24fb4833
2016-08-15 14:25:22 +02:00
WMDE-Fisch 272cb9a960 Bundle mention success and failure notifications
Adds common bundling including messages and icons.
Bundling relates to revision now.
Changed order how notifications are generated. Now errors will
show first, since they are generated last.

Bug: T140224
Change-Id: I1069aeb5523db8710da4e8e21065bf447d031e3c
2016-08-13 08:08:12 +00:00
addshore b5f0c435ec DiscussionParser stripSig from mention content
This will allow us to:
 1) Fix a bug involving showing the sig in the snippets
    of mentions (Something catrope mentioned to me but
    I do not know of a bug number for it)
 2) Send more accurate sameUser failure metrics to
    graphite as signature links would never be counted
    as a mention

Change-Id: I33677012673ae6e4665aaaf59d4f350602f7276a
2016-08-12 19:43:03 +00:00
jenkins-bot cf3e03edc9 Merge "Revert "Allow self mentions"" 2016-08-12 01:48:03 +00:00
Mattflaschen 59568789fa Revert "Allow self mentions"
This reverts commit 0e23463185.

Change-Id: I4389c7b93b2bbc117931a263b58a8f1cc30dca6c
2016-08-12 01:41:08 +00:00
Stephane Bisson a0cca6c127 Output wgNotificationsSpecialPageLinks js var even if no local notifications
Bug: T142148
Change-Id: Id9225b9aa95a7a8ee8602282ed0d4619c7ce2bf5
2016-08-05 09:26:35 -04:00
jenkins-bot 189d84d01d Merge "Allow self mentions" 2016-08-04 22:53:54 +00:00
jenkins-bot 03f6fb8bcb Merge "Rename ApiEchoUnreadNotificationPages->getFromForeign" 2016-08-03 19:06:46 +00:00
Matthew Flaschen 99f1e78b52 Rename ApiEchoUnreadNotificationPages->getFromForeign
This was causing a strict standards warning due to inconsistent
parameters.

Rename it to getUnreadNotificationPagesFromForeign .  Since
this does a data transformation (it doesn't have the same response
structure as the parent), I decided to rename it rather than
make the parameters match.

Change-Id: I259def82b933cbde0e94a49f9a9d6f754f681808
2016-08-03 14:50:22 -04:00
jenkins-bot e07acb5586 Merge "Remove secondary link in bundled messages for mention status notifications" 2016-08-03 18:32:49 +00:00
WMDE-Fisch b4b59ee485 Remove secondary link in bundled messages for mention status notifications
Change-Id: I76de1626c77831b09fe3bb410d17ce354783076a
2016-08-03 18:22:04 +00:00
addshore 1880c683c2 Fix phpdoc in DiscussionParser::extractHeader
Change-Id: Ic92cea8fdcd0ccb6290204572b952d494554de3f
2016-08-03 13:31:09 +01:00
addshore 0e23463185 Allow self mentions
Bug: T138080
Change-Id: I8832f71559741787084bc06e1f7c5ea0f7918d82
2016-08-03 12:38:34 +01:00
Roan Kattouw 4e64643eb7 Implement subject+talk and null+user page grouping
Make it optional through the unpgrouppages parameter, so that
generic usage of the unreadnotificationpages API is still possible.

In the front-end, store which display title maps to what set of titles,
and pass in the full set rather than just the display title when
filtering by a page.

Bug: T137502
Change-Id: I443ca00ff5e5d36fd6910101226358942e6aa8ee
2016-08-02 13:48:48 -07:00
Moriel Schottlender 879fe27bc6 When fetching combined seenTime, get 'min' value rather than max
This will make the mobile view show unseen state if any of the
badges have unseen state rather than not show it if one of the
badges was more recently seen than the other in desktop.

Bug: T141404
Change-Id: I27109ee6a24831d58767f9bd13ed58e54094aee1
2016-08-01 19:14:51 +00:00
WMDE-Fisch 78632108fd Echo notifications for successful mentions
Adds new notification type and icon for successful mentions.
Complements existing test to consider successful mentions.

Bug: T139623
Change-Id: I7a77b40e8b14c95cadb9023065ee916247feacf9
2016-08-01 13:40:55 +02:00
jenkins-bot ddbe065b7d Merge "Refactored generation of mention events." 2016-07-29 14:59:11 +00:00
WMDE-Fisch 86d3352464 Refactored generation of mention events.
To increase reusability in future changes.

Change-Id: Ia56f4c587361f0214d738cdf690cf9abf93a2021
2016-07-29 14:49:09 +02:00
Matthew Flaschen 954e076fd1 SeenTime: For 'all', use MW, then convert after taking max.
Lesser-used formats like TS_ORACLE are not string-comparable.

Change-Id: I7a9fd3ac0c8b1e924f6f0e8970f7a005858df9d7
2016-07-28 20:11:30 -04:00
Moriel Schottlender b623bdc6d3 Forward format to seenTime when getting 'all' types
Change-Id: Id79c4403ea879bb08b0ce94d24f7bdbb8ea83560
2016-07-28 15:09:16 -07:00
Matthew Flaschen f845f6cc7b BREAKING CHANGE: Use ISO 8601 for 'ts' in cross-wiki summary.
Bug: T141164
Change-Id: Id0f029dd2fec0197bc01a1103fb569d086dec724
2016-07-27 17:00:05 -04:00
WMDE-Fisch 4c7e5d2669 Rename mention-too-many failure notification.
Change-Id: I49041bd01697ae4c160766f194c92ff3d7a4a989
2016-07-27 16:41:29 +00:00
jenkins-bot 0815c41560 Merge "Echo notifications for mention failures" 2016-07-27 11:27:55 +00:00
WMDE-Fisch 868190bbf6 Echo notifications for mention failures
- Adds global "$wgEchoMentionStatusNotifications"
   to activate mention status notifications.
   (must be set before extension is loaded)
 - Adds notification types and icon for some basic mention
   failures.
 - Adds failure and stats for anonymous IP.
 - Adds check for links to user subpages.
 - Adds config var for max mention notifications allowed.
 - Bundles notifications.
 - Refactors test for the event generation and adds tests
   for unknown users, user links with subpages and failures
   for too many mentions.

Bug: T136326
Change-Id: I388bdc3714feb9a2865a5ad10dbeabb0a6a09a4f
2016-07-27 13:00:25 +02:00
Matthew Flaschen c0a464e425 BREAKING CHANGE: More ISO 8601 for seen time
* Add ISO 8601 date format to notification output

  This is actually supposed to be the only output date format used,
  per https://www.mediawiki.org/wiki/API:Data_formats#Timestamps , but
  I'm not doing anything to deprecate the others right now.

* Change wgEchoSeenTime to use ISO 8601.  mwgrep and extension grep do
  not show any usages.  However, since it is a breaking change, to
  minimize disruption, I'm also using this opportunity to change
  'message' to 'notice'.

* Remove wgEchoInitialNotifCount.  I was going to also change 'message'
  to 'notice' here too, but then I saw it was totally unused.
  (It was read in Echo to populate a JS variable, but then it was
  unused.)

* Make sure the Special:Notifications page aggregation by days is
  done by local days, even though the timestamp per item is still
  UTC. This is to make sure the days are displayed correctly in
  the local timezone.

* Change all reverse sorting callbacks to handle comparisons of
  ISO 8601.

Bug: T141413
Change-Id: I20271345c7d350dc3e7f467288e5cdc98e6250cc
2016-07-27 02:42:08 +00:00
Stephane Bisson a970c44845 Process bundled notifications when the base is filtered out
When the base of a bundle cannot be rendered
(canRender() returns false), the bundled items still
have to be rendered and potentially marked-as-read as well.

If we don't do this, the base is filtered out, marked as read,
the counter goes down by 1 and the bundled notifications are ignored.
On the next query a new base is selected, filtered out, etc.
So if a bundle of 10 notifications cannot be rendered because it's
10 new topics on a deleted flow board, the flyout has to be opened
10 times for the counter to finally be 0.

Change-Id: I06962b25e36802ef00278e2bc70d5377b5874695
2016-07-26 15:07:23 -04:00
jenkins-bot d384b792d7 Merge "Paginate even if some events are filtered out" 2016-07-25 20:43:24 +00:00
jenkins-bot 834c240948 Merge "Adjust mobile view for the new settings cog menu" 2016-07-25 20:12:38 +00:00
Stephane Bisson da0e0e37e0 Paginate even if some events are filtered out
When requesting notifications, the 'continue' value used
for pagination is only included if there is more
notifications than requested. When some are filtered out,
there is less notifications and no 'continue' value,
which leads to no pagination at all on the special page.

Change-Id: I1a13d2a343f4e60489e2a6a0474c97664ed00d46
2016-07-25 15:54:16 -04:00
Moriel Schottlender 1dd3af10bb Adjust mobile view for the new settings cog menu
Now that we have the cog menu, it should be placed correctly in
mobile and the "preferences" link should be hidden.

Since MobileFrontend doesn't have the personal toolbar, and we
can't cheat by using jQuery and grabbing the url of preferences,
we have to get SpecialNotifications.php to output the urls
to a wg variable and reading it from there.

Bug: T115528
Change-Id: I6a69823d6f75c376c04e9a21d79916321e417178
2016-07-25 19:30:44 +00:00
Stephane Bisson bfcfdded40 Special:Notifications (no-js): filter out deleted events
Change-Id: Ie2e6b3ba388650f28ddc050624a52c410248fbd8
2016-07-25 12:21:14 -04:00
Aaron Schulz 9d436067a7 Convert deferred update to using AtomicSectionUpdate
Change-Id: Ic30a940d243986e71cfc8e66a70c0c2e77438506
2016-07-21 23:43:21 -07:00
jenkins-bot f79b4ebca5 Merge "Documentation for EventPresentationModel" 2016-07-21 17:35:26 +00:00
Stephane Bisson a77d75c3ee Documentation for EventPresentationModel
Change-Id: Ia620bd1a2a562c606752195cb459dc46d41db7b2
2016-07-21 12:25:46 -04:00
Stephane Bisson a4e7bee5ef Exclude deleted events from UnreadNotificationPages API
Change-Id: I1eb1be1de1af884715e8a3b85f18770e6f0d6ff2
2016-07-21 14:10:40 +00:00
jenkins-bot bf502f89a0 Merge "Allow requesting TS_ISO_8601 for ApiEchoMarkSeen, and deprecate TS_MW" 2016-07-21 02:04:06 +00:00
Matthew Flaschen 756948d489 Allow requesting TS_ISO_8601 for ApiEchoMarkSeen, and deprecate TS_MW
(Previously TS_MW was the only possibility).

Per https://www.mediawiki.org/wiki/API:Data_formats#Timestamps

Bug: T139993
Change-Id: Ief9a720a5053ee153b84edb64524aa4743cc76f1
2016-07-20 18:22:28 -04:00