Move most User::clearAllNotifications() logic to WatchedItemStore
[lhc/web/wiklou.git] / includes / jobqueue / jobs / ActivityUpdateJob.php
index 13e36d8..8cc14e5 100644 (file)
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @author Aaron Schulz
  * @ingroup JobQueue
  */
 
 /**
  * Job for updating user activity like "last viewed" timestamps
  *
+ * Job parameters include:
+ *   - type: one of (updateWatchlistNotification) [required]
+ *   - userid: affected user ID [required]
+ *   - notifTime: timestamp to set watchlist entries to [required]
+ *   - curTime: UNIX timestamp of the event that triggered this job [required]
+ *
  * @ingroup JobQueue
  * @since 1.26
  */
@@ -30,8 +35,10 @@ class ActivityUpdateJob extends Job {
        function __construct( Title $title, array $params ) {
                parent::__construct( 'activityUpdateJob', $title, $params );
 
-               if ( !isset( $params['type'] ) ) {
-                       throw new InvalidArgumentException( "Missing 'type' parameter." );
+               static $required = [ 'type', 'userid', 'notifTime', 'curTime' ];
+               $missing = implode( ', ', array_diff( $required, array_keys( $this->params ) ) );
+               if ( $missing != '' ) {
+                       throw new InvalidArgumentException( "Missing paramter(s) $missing" );
                }
 
                $this->removeDuplicates = true;
@@ -41,8 +48,7 @@ class ActivityUpdateJob extends Job {
                if ( $this->params['type'] === 'updateWatchlistNotification' ) {
                        $this->updateWatchlistNotification();
                } else {
-                       throw new InvalidArgumentException(
-                               "Invalid 'type' parameter '{$this->params['type']}'." );
+                       throw new InvalidArgumentException( "Invalid 'type' '{$this->params['type']}'." );
                }
 
                return true;
@@ -55,10 +61,10 @@ class ActivityUpdateJob extends Job {
 
                $dbw = wfGetDB( DB_MASTER );
                $dbw->update( 'watchlist',
-                       array(
+                       [
                                'wl_notificationtimestamp' => $dbw->timestampOrNull( $this->params['notifTime'] )
-                       ),
-                       array(
+                       ],
+                       [
                                'wl_user' => $this->params['userid'],
                                'wl_namespace' => $this->title->getNamespace(),
                                'wl_title' => $this->title->getDBkey(),
@@ -69,7 +75,7 @@ class ActivityUpdateJob extends Job {
                                // is non-NULL, make sure not to set it back in time or set it to
                                // NULL when newer revisions were in fact added to the page.
                                'wl_notificationtimestamp < ' . $dbw->addQuotes( $dbw->timestamp( $casTimestamp ) )
-                       ),
+                       ],
                        __METHOD__
                );
        }