* 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
*/
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;
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;
$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(),
// 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__
);
}