Replace implementation specific code with generalized user-locator
implementations that can be re-used by more notifications in other
extensions.
This patch adjusts the `user-locators` notification parameter to allow
arrays which facilitate passing options to the locator.
Previously(still works):
'user-locators' => array( 'foo', 'bar' ),
New functionality:
'user-locators' => array(
'foo',
array( 'bar', 42 )
)
In the second example the callback specified by `bar` will receive
an EchoEvent as the first argument and array( 42 ) as its second
argument.
Change-Id: I7305279bc91d1e40e7054e2fd42a819a35526b82
In some cases like I7e309c04bc2456f4f87554a3d70dd6c77ba22f71 we
only have a raw URL and not a Title object. This supports that
usecase as well.
Change-Id: Ie18698e3ef755ca5a2cecc1f1cfb4254184bb576
There are a variety of generic strategies you could define to choose
which users should be notified about an event, such as 'users watching
the title' or 'talk page owner' (User_talk only).
This adds a new way to generically implement these in Echo and expose them
to other extensions rather than having each extension implement these
generic strategies themselves.
This patch only converts one notification, edit-user-talk. The remaining
notifications will be converted in future patches. The first user of this
will be Flow for notifying all users watching a particular talk page in
I4e46a9c003fbdde274b20ac7aef8455eab4a5222
The users watching title implementation provided here is minimalist, a larger
refactor to accomidate pages with thousands of watchers is being handled
in I3d3fa9328f348bb48682d3658622952ce82d3925
Change-Id: I19bb6a794d22565f3bb5421de92426d390197796
The distributionType is still passed to the function, it will
be arry of event types in next patch
Change-Id: Ieae7cfc383c2a024256f7e6b2f91d3b5c323f79b
* Get rid of EchoBackend by separating responsibilities into smaller objects
* Move main fetchNotification logic from API to a more appropriate place
* Add more unit testing coverage
Change-Id: I42f4d7566543332588431c21c220c0d64d026b70
In Echo tests/NotificationFormatterTest.php there is a test that ends up
invoking the Linker to create full URL for Main_page and pass it a
fragment.
Title::newMainPage() is really Title::newFromText('Main_Page') which is
cached. Whenever the fragment is set, it stuck in the cache entry and
later call to Title::newMainPage() yields a Title object which has the
fragment.
That cause Scribunto tests (at least) to fail when Echo tests are run
before it because Scribunto tests expect a Main_Page title without a
fragment.
The ugly workaround is to have the Echo test to reset the fragment.
We could clear up the Title cache between tests though.
Bug: 68646
Change-Id: I625492fc8bf0dbd6e10275c3a728f5c1f85768c8
No usecase has been provided, and additionally the hooks
are not documented. Bartosz also points out that
mw.hook calls are asynchronous and memorized.
This reverts commit 9d3561afaf.
Change-Id: If735b46996fab3def835a54223412ef6d3105395
Adds two new hooks to allow extensions to tie into the notification
loading process. Between these two hooks and the new isInitialized()
method any extension can run code whenever a notification is displayed.
Change-Id: If351835be5f65ca098e2d235ea8c8e4dc40ae2b4
Unused functions.
There is also no usecase for this, events shouldn't be altered
after creation except for bundling.
Change-Id: Id175c075d24263119f0455d99342263dd98f9410
We will likely need the very last record when building a bundle
notification in some cases ( talk page diff, flow unread post etc ),
it's better just to have that logic in a method
Change-Id: I8121e0cbed2beb066e27953d79225bb99c550553