Commit graph

3285 commits

Author SHA1 Message Date
Roan Kattouw bc641732e5 Use JSON instead of PHP-serialized for internal cross-wiki API requests
Change-Id: I12e211b454366405e10b7a9706d4be12aab2849e
2016-05-13 16:28:30 -07:00
Roan Kattouw 62908b5cf9 Don't reuse CentralAuth tokens for multiple requests
CA tokens are single-use, and the fact that they even worked
for multiple requests was a race condition. Instead of getting
one CA token and using it for all requests, get a fresh token
for each request.

Bug: T135250
Change-Id: Ie1bbdefd3e265d009d0c42ff27da447b8da7f1fd
2016-05-13 16:13:36 -07:00
Roan Kattouw c7bdb879e6 Follow-up f5e9d4e: log parsing failures and API errors too
Change-Id: Ie00994008aab632a9b02d11b840457e91546b12a
2016-05-13 15:52:33 -07:00
jenkins-bot 712109fa5d Merge "Log warning on failure to fetch foreign notifications" 2016-05-13 21:42:20 +00:00
Roan Kattouw 0e2f1a9c18 Add $wgEchoCrossWikiNotifications flag to disable cross-wiki notifications
This is needed because global tables and cache keys will attempt to be used
even for users who don't have the preference enabled.

Bug: T135266
Change-Id: I6208a12d46c8cd0275a232663cd50ac2bd2fed1c
2016-05-13 13:52:54 -07:00
Stephane Bisson f5e9d4e372 Log warning on failure to fetch foreign notifications
Change-Id: I92bc0ea2aebc1992d43dc0cd560137090b4d5857
2016-05-13 16:42:15 -04:00
jenkins-bot 95049e48fe Merge "Bump cache version for cache pollution (cross-wiki on non-SUL wikis)" 2016-05-13 20:36:04 +00:00
Translation updater bot 0f8e26c617 Localisation updates from https://translatewiki.net.
Change-Id: I253c5a4d7864415c56e42692921fcf71cbae99f4
2016-05-13 22:20:12 +02:00
Matthew Flaschen 9f5a71874f Bump cache version for cache pollution (cross-wiki on non-SUL wikis)
Bug: T135246
Change-Id: Ic01fe394829cca27ad22a37f08364566e26f646a
2016-05-13 15:58:50 -04:00
Stephane Bisson 52b60075d1 Handle empty foreign notification sources
Foreign notification sources can end up being empty
for legitimate reasons (already marked as read on the
foreign wiki) or errors (failed to query remote server).

This change makes the front-end resilient by
removing the sources if they end up being empty,
and removing the foreign notifications bundle if
all the sources end up being empty.

Bug: T135252
Bug: T135250
Change-Id: I5901bb0007420a19d8c0727faa982eb00809c074
2016-05-13 15:42:58 -04:00
Stephane Bisson 413206d82a Pass source url when creating API handler
Change-Id: I8e42c6678766baea1b8b1f66537ec15b1f2bdff7
2016-05-13 14:54:38 -04:00
Matthias Mullie 876197b520 Get rid of addApiHandler factory
Some complexity is now gone. We didn't currently have a good justification
for a the APIHandler factory: the apiHandler caller would have to specify
(variable `foreign`) what kind of handler it would like to initiate anyway,
so it might as well just inject the object (which makes the code easier to
follow, decreases bugs risk because there are less code paths)

This also gives the caller more control of the API handlers:
registerForeignSources will now be able to do more. Now it can e.g. create
1 object that is shared for multiple wikis (to do lookups for multiple
wikis at once)

Also renamed addApiHandler to setApiHandler (it just sets the value it needs
without checking if it already existed anyway)

Change-Id: Ie1814c5bf1a1f0e5607033beb506df67f3585b24
2016-05-13 14:11:42 -04:00
Matthias Mullie 84b016e695 Make sure APIHandler has this.api
this.api is used in APIHandler.createNewFetchNotificationPromise,
so we should make sure it always has a valid this.api

Change-Id: Id476661fb427adbbb3c5741737c293c32ad8a27e
2016-05-13 17:29:56 +00:00
jenkins-bot 8c9692e980 Merge "Correctly update locally cached seenTime" 2016-05-13 11:21:37 +00:00
Roan Kattouw d6c2f1a82c Protect against some errors that apparently happen in production
Committing a live hack that I put in to silence errors and notices.

Bug: T135196
Bug: T135197
Change-Id: Ib1b049686f59d69192b33151eea27bc54519c379
2016-05-12 17:56:16 -07:00
Roan Kattouw 468ead1ca1 Correctly update locally cached seenTime
> Object.keys( wgEchoSeenTime );
["alert", "message", "m", "e", "s", "a", "g"]

Bug: T134854
Change-Id: I167e0eba1bad61a683f36218d2c90235f285a3c2
2016-05-12 16:04:24 -07:00
Translation updater bot 6b1a005bb3 Localisation updates from https://translatewiki.net.
Change-Id: I47bfaf4495a7f4ee6ac87d12f69fcfc879defd49
2016-05-12 22:14:01 +02:00
Mark A. Hershberger 50611ad682 Respect editmyprivateinfo for email
Had set this so that users on a corporate wiki couldn't modify their
email, but saw that Echo wasn't respecting it.

Bug: T135152
Change-Id: I1c7840e4f0648ab20ccc89ae281eb86cddad516c
2016-05-12 11:21:10 -07:00
Mark A. Hershberger a78b52e982 Add tmp emacs file to gitignore
Change-Id: I3d6224c8fbe8ecb85ff8a4eac566f364a2fac26c
2016-05-12 13:11:20 -04:00
Stephane Bisson 6f6e10084c HTML email formatter using presentation model
Bug: T121067
Change-Id: I77f466f0b507ffa49a9714ddba95bea8db1d8438
2016-05-12 09:29:24 -04:00
jenkins-bot dcdfb59567 Merge "Add JSDuck support and fix errors" 2016-05-11 21:38:17 +00:00
Moriel Schottlender 2d184c087c Add JSDuck support and fix errors
Change-Id: I7816110862d9ca1b16e2ec9ce842d240bee6b46b
2016-05-11 14:07:12 -07:00
Translation updater bot f5b243550e Merge "Localisation updates from https://translatewiki.net." 2016-05-11 20:31:58 +00:00
Translation updater bot dc184f835d Localisation updates from https://translatewiki.net.
Change-Id: I8aaf968a47c0bbfe529eba882cbf206f6f582c60
2016-05-11 22:25:55 +02:00
Moriel Schottlender 8f5c718a4f Add 'mark section as read' to Special:Notifications
Allow marking notifications as read per 'section' (days) in the
Special:Notifications page.

Bug: T115528
Bug: T134204
Change-Id: I7324a2c693aa92b9327cf8ff98f125293d5fba10
2016-05-11 20:00:24 +00:00
jenkins-bot 4331c30993 Merge "Add mark-as-read button to notifications in Special:Notifications" 2016-05-11 18:42:46 +00:00
jenkins-bot 89791927c9 Merge "Use new OutputPage parameter in OutputPageCheckLastModified hook" 2016-05-11 18:36:22 +00:00
jenkins-bot 69967ae13a Merge "Don't cache pages with outdated global notification counts" 2016-05-11 18:08:53 +00:00
Roan Kattouw b5bec3ad24 Use new OutputPage parameter in OutputPageCheckLastModified hook
Depends-On: I044a5920b703a2d61a74c2d83d184b77caebb8f3
Change-Id: I6c4290baaf1f2d9e5ec098bc4ea2b23762b4f70f
2016-05-11 17:58:44 +00:00
Roan Kattouw d2d420a3c4 Don't cache pages with outdated global notification counts
When updating notification counts, we already called User::invalidateCache(),
which bumps the local user's touched timestamp, which is taken into
account by OutputPage when computing the last-modified timestamp of the response.

However, this only works for one wiki, while the changed global count
needs to be displayed on every wiki. To accomplish this, track the
timestamp of the last update in NotifUser, and hook it into
OutputPageCheckLastModified.

Change-Id: I22c88a017f18a28179906049ee423c2d7e81c939
2016-05-11 10:53:13 -07:00
jenkins-bot 45a5c43e78 Merge "Reset the TitleParser service without messing up the database" 2016-05-11 17:47:01 +00:00
Moriel Schottlender 15a44768f4 Add mark-as-read button to notifications in Special:Notifications
Bug: T115528
Change-Id: I54dba5f86d28a069659d66dede5b7ab9981213aa
2016-05-11 10:41:32 -07:00
Kunal Mehta 1a189964bc Reset the TitleParser service without messing up the database
Calling MediaWikiTestCase::setService() appears to mess up the database,
so just reset it directly with MediaWikiServices, and tear it down to
avoid leaking any state.

Change-Id: Ibfd0a7f98f50506cd8402f966682f320bf715c8a
2016-05-11 10:13:01 -07:00
jenkins-bot 403270f55f Merge "Reset TitleParser service after modifying $wgContLang" 2016-05-11 16:35:29 +00:00
Kunal Mehta 1baa72cf08 Reset TitleParser service after modifying $wgContLang
Needed by I81d48616afd1ab2bde1a5f1d12f4aefb1c866d43

Change-Id: Ic64b0c45b7e6b8420874385f952a0dc4a93e0149
2016-05-11 09:04:33 -07:00
Translation updater bot 6e5c2a2826 Localisation updates from https://translatewiki.net.
Change-Id: Id5b46e4562ae21920c5f0f639555c7d47db8054a
2016-05-10 22:26:44 +02:00
jenkins-bot ad68c688b0 Merge "Avoid invalid API response when server-side cross-wiki requests fail" 2016-05-10 18:19:10 +00:00
jenkins-bot 14d4c67ee7 Merge "Don't apply margin to dotdotdot menu items" 2016-05-10 14:23:49 +00:00
Roan Kattouw 351297caf1 Don't apply margin to dotdotdot menu items
Otherwise the background color on hover doesn't cover the entire item.

Bug: T130677
Change-Id: I7c0a4cd7a77e3ae333e1ea0161bfc909e246c6e6
2016-05-09 15:00:18 -07:00
Translation updater bot 7b4b3463ed Localisation updates from https://translatewiki.net.
Change-Id: I337786ea94e683d333022f0a0748bd982e1dd62e
2016-05-09 22:12:41 +02:00
Roan Kattouw cd4194bd40 Avoid invalid API response when server-side cross-wiki requests fail
If all server-side cross-wiki requests fail, we'd return an empty API response.
This is invalid, the frontend expects things like list:[] to still be there.

Change-Id: I72fc5a017647ca28abbc061992fa4868ca5737f4
2016-05-09 11:08:00 -07:00
Translation updater bot f034a35e33 Localisation updates from https://translatewiki.net.
Change-Id: I4cc56a3708ab7d845ee76aea1ebdaade01ccde41
2016-05-08 22:42:31 +02:00
Translation updater bot 797b8b2eb3 Localisation updates from https://translatewiki.net.
Change-Id: I9cc42250a4493406d3a293ee2335848c2f69059c
2016-05-07 10:53:02 +02:00
Stephane Bisson 6cca5b6a01 Fetch foreign notifications before marking them as read
Bug: T134579
Change-Id: I4b88bbf5e23d9fbc066e17e1af77a3874a824b04
2016-05-06 11:47:58 -04:00
Roan Kattouw ac85f28f3e Use global user ID in global cache keys
We were using the local user ID instead, which is not the
same on every wiki, which caused strange cache staleness
and pollution behavior.

Run sets through a wrapper function (gets were already wrapped)
so we can update the instance cache and deal with uncomputable
cache keys in one place. A global cache key may be uncomputable
if we fail to obtain the user's global user ID (users aren't
supposed to be unattached, but some are).

Also bump the cache version to get rid of polluted cache entries.
Bumping this version number was probably a good idea anyway,
with all the recent changes.

Bug: T134533
Change-Id: I1c4f0c2f2eded480c80f8ec7a49a04feb7c5ecfb
2016-05-05 17:21:32 -07:00
Roan Kattouw e57dbfc86b Follow-up 73ec3a331: fix fatal when no cross-wiki results are found
If we don't initialize $results, getForeignNotifications() will return
null, and this will cause a fatal when trying to += it into an array.

Change-Id: Ibb868cbf0b52ff2de41c5be82c9605801e51ffae
2016-05-05 12:58:28 -07:00
Moriel Schottlender 7055f83fe0 Use server-side cross-wiki requests in the frontend
Fetch cross-wiki notifications by asking the local API, but still
maintain the ability to send remote requests to the foreign wikis
for mark-as-read operations.

Bug: T130636
Change-Id: I48524cb9dff43257a401d7483e939edfb042b928
2016-05-04 21:21:08 +00:00
Translation updater bot 9462f0c90a Localisation updates from https://translatewiki.net.
Change-Id: Iad7b22cc1c9f1e720866c3d0cdf2b85193cd6d4c
2016-05-04 22:23:05 +02:00
Kunal Mehta b6f742bc46 Add plain text email formatter
Formatters based on presentation models for
individual event emails and digest (daily, weekly)
plain text emails.

Bug: T121067
Change-Id: I4eceaf521315adab7429a8a73ffca70ebcddab86
2016-05-04 13:35:37 -04:00
jenkins-bot 19b051164b Merge "Use MultiHttpClient for server-side cross-wiki requests" 2016-05-04 17:15:29 +00:00