*/
private function formatChangeLine( RecentChange $rc, array &$classes, $watched ) {
$html = '';
+ $unpatrolled = $this->showAsUnpatrolled( $rc );
if ( $rc->mAttribs['rc_log_type'] ) {
$logtitle = SpecialPage::getTitleFor( 'Log', $rc->mAttribs['rc_log_type'] );
$this->insertLog( $html, $logtitle, $rc->mAttribs['rc_log_type'] );
+ $flags = $this->recentChangesFlags( array( 'unpatrolled' =>$unpatrolled,
+ 'bot' => $rc->mAttribs['rc_bot'] ), '' );
+ if ( $flags !== '' ) {
+ $html .= ' ' . $flags;
+ }
// Log entries (old format) or log targets, and special pages
} elseif ( $rc->mAttribs['rc_namespace'] == NS_SPECIAL ) {
list( $name, $htmlubpage ) = SpecialPageFactory::resolveAlias( $rc->mAttribs['rc_title'] );
}
// Regular entries
} else {
- $unpatrolled = $this->showAsUnpatrolled( $rc );
$this->insertDiffHist( $html, $rc, $unpatrolled );
# M, N, b and ! (minor, new, bot and unpatrolled)
$html .= $this->recentChangesFlags(
* @param string $params
* @param int $newId
* @param string $actionCommentIRC
+ * @param int $revId Id of associated revision, if any
* @return RecentChange
*/
public static function newLogEntry( $timestamp, &$title, &$user, $actionComment, $ip,
- $type, $action, $target, $logComment, $params, $newId = 0, $actionCommentIRC = '' ) {
+ $type, $action, $target, $logComment, $params, $newId = 0, $actionCommentIRC = '',
+ $revId = 0 ) {
global $wgRequest;
# # Get pageStatus for email notification
break;
}
+ // Allow unpatrolled status when an associated rev id is passed
+ // May be used in core by moves and uploads
+ $markPatrolled = ( $revId > 0 ) ? $user->isAllowed( 'autopatrol' ) : true;
+
$rc = new RecentChange;
$rc->mTitle = $target;
$rc->mPerformer = $user;
'rc_user' => $user->getId(),
'rc_user_text' => $user->getName(),
'rc_comment' => $logComment,
- 'rc_this_oldid' => 0,
+ 'rc_this_oldid' => $revId,
'rc_last_oldid' => 0,
'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot', true ) : 0,
'rc_ip' => self::checkIPAddress( $ip ),
- 'rc_patrolled' => 1,
+ 'rc_patrolled' => $markPatrolled ? 1 : 0,
'rc_new' => 0, # obsolete
'rc_old_len' => null,
'rc_new_len' => null,
/** @var string Comment for the log entry */
protected $comment = '';
+ /** @var int A rev id associated to the log entry */
+ protected $revId = 0;
+
/** @var int Deletion state of the log entry */
protected $deleted;
$this->comment = $comment;
}
+ /**
+ * Set an associated revision id.
+ *
+ * @since 1.27
+ *
+ * @param int $revId
+ */
+ public function setAssociatedRevId( $revId ) {
+ $this->revId = $revId;
+ }
+
/**
* Set the 'legacy' flag
*
$this->getComment(),
LogEntryBase::makeParamBlob( $this->getParameters() ),
$newId,
- $formatter->getIRCActionComment() // Used for IRC feeds
+ $formatter->getIRCActionComment(), // Used for IRC feeds
+ $this->getAssociatedRevId() // Used for e.g. moves and uploads
);
}
if ( $to === 'udp' || $to === 'rcandudp' ) {
$rc->notifyRCFeeds();
}
+
+ // Log the autopatrol if an associated rev id was passed
+ if ( $this->getAssociatedRevId() > 0 &&
+ $rc->getAttribute( 'rc_patrolled' ) === 1 ) {
+ PatrolLog::record( $rc, true, $this->getPerformer() );
+ }
}
// LogEntry->
return $this->comment;
}
+ /**
+ * @since 1.27
+ * @return int
+ */
+ public function getAssociatedRevId() {
+ return $this->revId;
+ }
+
/**
* @since 1.25
* @return bool