* @param string $userText User name or IP address
* @param bool $redContribsWhenNoEdits Should the contributions link be red if the user has no edits?
* @param int $flags Customisation flags (e.g. self::TOOL_LINKS_NOBLOCK)
+ * @param int $edits, user edit count (optional, for performance)
* @return string
*/
- public function userToolLinks( $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0 ) {
+ public function userToolLinks( $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0, $edits=null ) {
global $wgUser, $wgDisableAnonTalk, $wgSysopUserBans;
$talkable = !( $wgDisableAnonTalk && 0 == $userId );
$blockable = ( $wgSysopUserBans || 0 == $userId ) && !$flags & self::TOOL_LINKS_NOBLOCK;
}
if( $userId ) {
// check if the user has an edit
- if( $redContribsWhenNoEdits && User::edits( $userId ) == 0 ) {
+ $count = !is_null($edits) ? $edits : User::edits( $userId );
+ if( $redContribsWhenNoEdits && $count == 0 ) {
$style = " class='new'";
} else {
$style = '';
$userLink = '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
$userLink = $this->skin->userLink( $row->log_user, $row->user_name ) .
- $this->skin->userToolLinks( $row->log_user, $row->user_name );
+ $this->skin->userToolLinks( $row->log_user, $row->user_name, true, 0, $row->user_editcount );
}
// Comment
if( self::isDeleted($row,LogPage::DELETED_COMMENT) ) {
return false;
}
/* Fetch userid at first, if known, provides awesome query plan afterwards */
- $userid = User::idFromName( $this->user );
+ $userid = User::idFromName( $name );
if( !$userid ) {
/* It should be nicer to abort query at all,
but for now it won't pass anywhere behind the optimizer */
}
return array(
'tables' => array( 'logging', 'user' ),
- 'fields' => array( 'log_type', 'log_action', 'log_user', 'log_namespace', 'log_title',
- 'log_params', 'log_comment', $log_id, 'log_deleted', 'log_timestamp', 'user_name' ),
+ 'fields' => array( 'log_type', 'log_action', 'log_user', 'log_namespace', 'log_title', 'log_params',
+ 'log_comment', $log_id, 'log_deleted', 'log_timestamp', 'user_name', 'user_editcount' ),
'conds' => $this->mConds,
'options' => $index
);
function getStartBody() {
wfProfileIn( __METHOD__ );
# Do a link batch query
- $lb = new LinkBatch;
- while( $row = $this->mResult->fetchObject() ) {
- $lb->add( $row->log_namespace, $row->log_title );
- $lb->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) );
- $lb->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->user_name ) );
+ if( $this->getNumRows() > 0 ) {
+ $lb = new LinkBatch;
+ while( $row = $this->mResult->fetchObject() ) {
+ $lb->add( $row->log_namespace, $row->log_title );
+ $lb->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) );
+ $lb->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->user_name ) );
+ }
+ $lb->execute();
+ $this->mResult->seek( 0 );
}
- $lb->execute();
- $this->mResult->seek( 0 );
wfProfileOut( __METHOD__ );
return '';
}