Use WatchedItemStore's built-in feature for clearing the entire
watchlist when no timestamp is specified. When a timestamp is specified,
this will still use the inefficient page-by-page method, which I'll
improve in a follow-up commit.
Bug: T207941
Change-Id: I2008ff89c95fe6f66a3fd789d2cef0e8fe52bd93
* (T212356) When using action=delete on pages with many revisions, the module
may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
deletion will be processed via the job queue.
+* action=setnotificationtimestamp will now update the watchlist asynchronously
+ if entirewatchlist is set, so updates may not be visible immediately
=== Action API internal changes in 1.33 ===
* A number of deprecated methods for API documentation, intended for overriding
$result = [];
if ( $params['entirewatchlist'] ) {
// Entire watchlist mode: Just update the thing and return a success indicator
- $watchedItemStore->setNotificationTimestampsForUser(
- $user,
- $timestamp
- );
+ if ( is_null( $timestamp ) ) {
+ $watchedItemStore->resetAllNotificationTimestampsForUser( $user );
+ } else {
+ $watchedItemStore->setNotificationTimestampsForUser(
+ $user,
+ $timestamp
+ );
+ }
$result['notificationtimestamp'] = is_null( $timestamp )
? ''