/**
* @param User $editor The editor that triggered the update. Their notification
* timestamp will not be updated(they have already seen it)
- * @param Title $title The title to update timestamps for
+ * @param LinkTarget $linkTarget The link target of the title to update timestamps for
* @param string $timestamp Set the update timestamp to this value
* @return int[] Array of user IDs
*/
- public static function updateWatchlistTimestamp( User $editor, Title $title, $timestamp ) {
+ public static function updateWatchlistTimestamp(
+ User $editor,
+ LinkTarget $linkTarget,
+ $timestamp
+ ) {
global $wgEnotifWatchlist, $wgShowUpdatedMarker;
if ( !$wgEnotifWatchlist && !$wgShowUpdatedMarker ) {
array( 'wl_user' ),
array(
'wl_user != ' . intval( $editor->getID() ),
- 'wl_namespace' => $title->getNamespace(),
- 'wl_title' => $title->getDBkey(),
+ 'wl_namespace' => $linkTarget->getNamespace(),
+ 'wl_title' => $linkTarget->getDBkey(),
'wl_notificationtimestamp IS NULL',
), __METHOD__
);
// Update wl_notificationtimestamp for all watching users except the editor
$fname = __METHOD__;
$dbw->onTransactionIdle(
- function () use ( $dbw, $timestamp, $watchers, $title, $fname ) {
+ function () use ( $dbw, $timestamp, $watchers, $linkTarget, $fname ) {
$dbw->update( 'watchlist',
array( /* SET */
'wl_notificationtimestamp' => $dbw->timestamp( $timestamp )
), array( /* WHERE */
'wl_user' => $watchers,
- 'wl_namespace' => $title->getNamespace(),
- 'wl_title' => $title->getDBkey(),
+ 'wl_namespace' => $linkTarget->getNamespace(),
+ 'wl_title' => $linkTarget->getDBkey(),
), $fname
);
}
public function notifyOnPageChange( $editor, $title, $timestamp, $summary,
$minorEdit, $oldid = false, $pageStatus = 'changed'
) {
- global $wgEnotifUseJobQ, $wgEnotifMinorEdits, $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
+ global $wgEnotifMinorEdits, $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
if ( $title->getNamespace() < 0 ) {
return;
}
}
- if ( !$sendEmail ) {
- return;
- }
-
- if ( $wgEnotifUseJobQ ) {
- $params = array(
- 'editor' => $editor->getName(),
- 'editorID' => $editor->getID(),
- 'timestamp' => $timestamp,
- 'summary' => $summary,
- 'minorEdit' => $minorEdit,
- 'oldid' => $oldid,
- 'watchers' => $watchers,
- 'pageStatus' => $pageStatus
- );
- $job = new EnotifNotifyJob( $title, $params );
- JobQueueGroup::singleton()->lazyPush( $job );
- } else {
- $this->actuallyNotifyOnPageChange(
- $editor,
+ if ( $sendEmail ) {
+ JobQueueGroup::singleton()->lazyPush( new EnotifNotifyJob(
$title,
- $timestamp,
- $summary,
- $minorEdit,
- $oldid,
- $watchers,
- $pageStatus
- );
+ array(
+ 'editor' => $editor->getName(),
+ 'editorID' => $editor->getID(),
+ 'timestamp' => $timestamp,
+ 'summary' => $summary,
+ 'minorEdit' => $minorEdit,
+ 'oldid' => $oldid,
+ 'watchers' => $watchers,
+ 'pageStatus' => $pageStatus
+ )
+ ) );
}
}
public function actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit,
$oldid, $watchers, $pageStatus = 'changed' ) {
# we use $wgPasswordSender as sender's address
+ global $wgUsersNotifiedOnAllChanges;
global $wgEnotifWatchlist, $wgBlockDisablesLogin;
global $wgEnotifMinorEdits, $wgEnotifUserTalk;
&& ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) )
&& $watchingUser->isEmailConfirmed()
&& $watchingUser->getID() != $userTalkId
+ && !in_array( $watchingUser->getName(), $wgUsersNotifiedOnAllChanges )
&& !( $wgBlockDisablesLogin && $watchingUser->isBlocked() )
) {
if ( Hooks::run( 'SendWatchlistEmailNotification', array( $watchingUser, $title, $this ) ) ) {
}
}
- global $wgUsersNotifiedOnAllChanges;
foreach ( $wgUsersNotifiedOnAllChanges as $name ) {
if ( $editor->getName() == $name ) {
// No point notifying the user that actually made the change!