Commit graph

12 commits

Author SHA1 Message Date
Matthias Mullie ae3e8a6b8c Server-side crosswiki requests
Passing a param 'wiki' with a list of wiki names will now
result in getting notifications from these wikis too.
It'll execute multi-curl calls to the given wikis to fetch
their results.

Bug: T130636
Change-Id: I89df54366501acfe3e5cf6d2f313ee32694ba387
2016-05-03 17:45:45 -07:00
Matthew Flaschen bd317224ac Have getTimestamp actually return max for all sections.
Before, it was just returning the timestamp of the messages section.

Tested by creating a message on one foreign wiki, then an alert on
another and using:

http://mobile.wiki.local.wmftest.net:8080/w/api.php?action=query&format=jsonfm&meta=notifications&notsections=message|alert&notformat=model&notlimit=25&notunreadfirst=1&notprop=list|count&uselang=en&notcrosswikisummary=1&_=1461881446668

Change-Id: I870229b09a8add08eb3542e3ab70db58352d00b8
2016-04-28 23:26:13 +00:00
Roan Kattouw e864b1fc47 ForeignNotifications: Fix fatal when one section has no timestamp
Bug: T133921
Change-Id: Iab82fa9439e26832731f4f56b5be18985203f49c
2016-04-28 10:39:05 -07:00
Roan Kattouw 314e00def5 ForeignNotifications: Move preference check out of constructor and allow force-enable
Instead of checking the cross-wiki notifications preference
in the constructor, move it to a method that other code can reuse.
Also add a parameter allowing foreign notification data to be
inspected even if the user has disabled the preference.

Change-Id: I6600ff27aa5af1737b3a6c3cde586d325886bc86
2016-04-27 16:23:21 +00:00
Roan Kattouw d8bf305e68 ForeignNotifications: Use ALL instead of null as defaults for $section params
Change-Id: Ieab7090742fd7f75c079be72cd9c07e3e1448ed1
2016-04-27 08:31:15 -07:00
Roan Kattouw 5152385887 Make EchoForeignNotifications::getApiEndpoints() static
It doesn't use $this, except to call getWikiTitle(), so make that
static too. This allows us to use it in EchoForeignPresentationModel
without creating a second instance there.

Change-Id: If778db0852de1cbf5c2190ce50ce561745bb3887
2016-04-26 17:33:30 -07:00
Roan Kattouw bfbfa6be62 Sort wikis by timestamp of most recent notification
Both in the order of the cross-wiki bundles themselves, and
in the message in the notification body.

ForeignNotifications tracks timestamps per wiki per section,
and exposes these through getWikiTimestamp(). ApiEchoNotifications
adds these timestamps to the sources manifest, and also sorts
the list of wikis by timestamp (it'd be nicer to do this in
ForeignPresentationModel instead, but then we'd have to create a new
ForeignNotifications instance which causes a duplicated DB query).

NotificationsModel receives the timestamp for its wiki as its
fallback timestamp, and makes getTimestamp() return this value
during the pre-population phase. This causes its parent to
automatically sort it correctly.

Because the timestamp of a wiki depends on the section (alerts vs messages),
we can't put it in the global sources manifest at the top level
of the API response. Instead, get rid of this global sources
manifest and put all the sources data in the foreign notifications
directly. This allows us to specify different timestamps, and also
allows us to get rid of code in EchoApi that was already remapping
the API response to this format.

Bug: T130298
Change-Id: Ie083fbb1ccaf74fbe804633d87ef03c9e71b120f
2016-03-17 14:21:16 -07:00
Siebrand Mazeland 2d42463552 Call static Language::fetchLanguageName() statically
Change-Id: Ifbc00dcda36e72467165b8ee4bc002f5d2d76686
2016-03-11 00:12:14 +01:00
Roan Kattouw ba27d4b8f6 ForeignNotifications::populate(): Fix max timestamp computation
We weren't using the maximum timestamp, just the most recently
encountered one.

Change-Id: Ie1cfd8130ab0c5077c4b720101d214d33e3ea9b4
2016-02-26 13:32:48 -08:00
Matthias Mullie 3979919087 Display human-readable wiki names for cross-wiki notifications
Bug: T121936
Change-Id: Ic14fe65f4ecc6db94fc6774ca0c39d1c2a47db9d
2016-02-22 20:09:53 +01:00
Roan Kattouw e55754857c Work around $wgConf's uselessness
WikiMap is almost useful for this purpose, but not quite
because it doesn't provide the script path, only the article path.

Change-Id: I1627d58cab5ff518be3c3e14e05a53899b083503
2016-01-14 21:28:02 -08:00
Roan Kattouw 63eef35026 Cross-wiki notifications integration
Bug: T121829
Change-Id: Ifb52ad5605a56d27e5951479326689242a49430e
2016-01-13 09:47:57 -08:00