* @since 1.27
* @param UserIdentity $user
* @param LinkTarget $target
- * @return bool
+ * @return WatchedItem|false
*/
public function getWatchedItem( UserIdentity $user, LinkTarget $target ) {
if ( !$user->isRegistered() ) {
* @since 1.27
* @param UserIdentity $user
* @param LinkTarget $target
- * @return WatchedItem|bool
+ * @return WatchedItem|false
*/
public function loadWatchedItem( UserIdentity $user, LinkTarget $target ) {
// Only registered user can have a watchlist
foreach ( $rowBatches as $toInsert ) {
// Use INSERT IGNORE to avoid overwriting the notification timestamp
// if there's already an entry for this page
- $dbw->insert( 'watchlist', $toInsert, __METHOD__, 'IGNORE' );
+ $dbw->insert( 'watchlist', $toInsert, __METHOD__, [ 'IGNORE' ] );
$affectedRows += $dbw->affectedRows();
if ( $ticket ) {
$this->lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
return "{$target->getNamespace()}:{$target->getDBkey()}";
}
+ /**
+ * @param UserIdentity $user
+ * @param LinkTarget $title
+ * @param WatchedItem $item
+ * @param bool $force
+ * @param int|bool $oldid The ID of the last revision that the user viewed
+ * @return bool|string|null
+ */
private function getNotificationTimestamp(
UserIdentity $user, LinkTarget $title, $item, $force, $oldid
) {
}
$oldRev = $this->revisionLookup->getRevisionById( $oldid );
- if ( !$this->revisionLookup->getNextRevision( $oldRev, $title ) ) {
+ $nextRev = $this->revisionLookup->getNextRevision( $oldRev );
+ if ( !$nextRev ) {
// Oldid given and is the latest revision for this title; clear the timestamp.
return null;
}
// Oldid given and isn't the latest; update the timestamp.
// This will result in no further notification emails being sent!
$notificationTimestamp = $this->revisionLookup->getTimestampFromId( $oldid );
+ // @FIXME: this should use getTimestamp() for consistency with updates on new edits
+ // $notificationTimestamp = $nextRev->getTimestamp(); // first unseen revision timestamp
// We need to go one second to the future because of various strict comparisons
// throughout the codebase