$this->opts['limit'] = $wgRequest->getInt( 'limit', $wgUser->getOption('rclimit') );
$this->opts['target'] = $target;
$this->opts['topOnly'] = $wgRequest->getBool( 'topOnly' );
+ $this->opts['showSizeDiff'] = $wgRequest->getBool( 'showSizeDiff' );
$nt = Title::makeTitleSafe( NS_USER, $target );
if( !$nt ) {
'month' => $this->opts['month'],
'deletedOnly' => $this->opts['deletedOnly'],
'topOnly' => $this->opts['topOnly'],
+ 'showSizeDiff' => $this->opts['showSizeDiff'],
) );
if( !$pager->getNumRows() ) {
$wgOut->addWikiMsg( 'nocontribs', $target );
* @return String: HTML fragment
*/
protected function getForm() {
- global $wgScript, $wgMiserMode;
+ global $wgScript, $wgMiserMode, $wgRCMaxAge, $wgContLang;
$this->opts['title'] = $this->getTitle()->getPrefixedText();
if( !isset( $this->opts['target'] ) ) {
$this->opts['topOnly'] = false;
}
+ if( !isset( $this->opts['showSizeDiff'] ) ) {
+ $this->opts['showSizeDiff'] = !$wgMiserMode;
+ }
+
$f = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'class' => 'mw-contributions-form' ) );
# Add hidden params for tracking except for parameters in $skipParameters
- $skipParameters = array( 'namespace', 'deletedOnly', 'target', 'contribs', 'year', 'month', 'topOnly' );
+ $skipParameters = array( 'namespace', 'deletedOnly', 'target', 'contribs', 'year', 'month', 'topOnly', 'showSizeDiff' );
foreach ( $this->opts as $name => $value ) {
if( in_array( $name, $skipParameters ) ) {
continue;
}
$tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagFilter'] );
-
- $fNS = ( $wgMiserMode ) ? '' :
- Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
- Xml::label( wfMsg( 'namespace' ), 'namespace' ) . ' ' .
- Xml::namespaceSelector( $this->opts['namespace'], '' )
- );
+
+ $fNS = '';
+ $fShowDiff = '';
+ if ( !$wgMiserMode ) {
+ $fNS = Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
+ Xml::label( wfMsg( 'namespace' ), 'namespace' ) . ' ' .
+ Xml::namespaceSelector( $this->opts['namespace'], '' )
+ );
+ $fShowDiff = Xml::infoBox(
+ Xml::checkLabel( wfMsg( 'sp-contributions-showsizediff' ), 'showSizeDiff', 'mw-show-size-diff', $this->opts['showSizeDiff'] ) . '<br />'.
+ wfMsgReplaceArgs ( wfMsg( 'sp-contributions-showsizediff-warn' ), array( $wgContLang->formatTimePeriod( $wgRCMaxAge ) ) )
+ , 'warning-32.png', wfMsg( 'sp-contributions-showsizediff' )
+ );
+ }
$f .= Xml::fieldset( wfMsg( 'sp-contributions-search' ) ) .
Xml::radioLabel( wfMsgExt( 'sp-contributions-newbies', array( 'parsemag' ) ),
'deletedOnly', 'mw-show-deleted-only', $this->opts['deletedOnly'] ) . '<br />' .
Xml::tags( 'p', null, Xml::checkLabel( wfMsg( 'sp-contributions-toponly' ),
'topOnly', 'mw-show-top-only', $this->opts['topOnly'] ) ) .
+ $fShowDiff.
( $tagFilter ? Xml::tags( 'p', null, implode( ' ', $tagFilter ) ) : '' ) .
Html::rawElement( 'p', array( 'style' => 'white-space: nowrap' ),
Xml::dateMenu( $this->opts['year'], $this->opts['month'] ) . ' ' .
'tagFilter' => $this->opts['tagFilter'],
'deletedOnly' => $this->opts['deletedOnly'],
'topOnly' => $this->opts['topOnly'],
+ 'showSizeDiff' => $this->opts['showSizeDiff'],
) );
$pager->mLimit = min( $this->opts['limit'], $wgFeedLimit );
$this->deletedOnly = !empty( $options['deletedOnly'] );
$this->topOnly = !empty( $options['topOnly'] );
+ $this->showSizeDiff = !empty( $options['showSizeDiff'] );
$year = isset( $options['year'] ) ? $options['year'] : false;
$month = isset( $options['month'] ) ? $options['month'] : false;
}
function getQueryInfo() {
- global $wgUser;
+ global $wgUser, $wgMiserMode;
list( $tables, $index, $userCond, $join_cond ) = $this->getUserCond();
$conds = array_merge( $userCond, $this->getNamespaceCond() );
' != ' . Revision::SUPPRESSED_USER;
}
$join_cond['page'] = array( 'INNER JOIN', 'page_id=rev_page' );
+
+ $fields = array(
+ 'page_namespace', 'page_title', 'page_is_new', 'page_latest', 'page_is_redirect',
+ 'page_len','rev_id', 'rev_page', 'rev_text_id', 'rev_timestamp', 'rev_comment',
+ 'rev_minor_edit', 'rev_user', 'rev_user_text', 'rev_parent_id', 'rev_deleted'
+ );
+ if ( $this->showSizeDiff && !$wgMiserMode ) {
+ $fields = array_merge( $fields, array( 'rc_old_len', 'rc_new_len' ) );
+ array_unshift( $tables, 'recentchanges' );
+ $join_cond['recentchanges'] = array( 'INNER JOIN', "rev_id = rc_this_oldid" );
+ }
$queryInfo = array(
'tables' => $tables,
- 'fields' => array(
- 'page_namespace', 'page_title', 'page_is_new', 'page_latest', 'page_is_redirect',
- 'page_len','rev_id', 'rev_page', 'rev_text_id', 'rev_timestamp', 'rev_comment',
- 'rev_minor_edit', 'rev_user', 'rev_user_text', 'rev_parent_id', 'rev_deleted',
- 'rc_old_len', 'rc_new_len'
- ),
+ 'fields' => $fields,
'conds' => $conds,
'options' => array( 'USE INDEX' => array('revision' => $index) ),
'join_conds' => $join_cond
);
-
ChangeTags::modifyDisplayQuery(
$queryInfo['tables'],
$queryInfo['fields'],
function getUserCond() {
$condition = array();
$join_conds = array();
+
if( $this->target == 'newbies' ) {
- $tables = array( 'recentchanges', 'user_groups', 'page', 'revision' );
+ $tables = array( 'user_groups', 'page', 'revision' );
$max = $this->mDb->selectField( 'user', 'max(user_id)', false, __METHOD__ );
$condition[] = 'rev_user >' . (int)($max - $max / 100);
$condition[] = 'ug_group IS NULL';
$index = 'user_timestamp';
# FIXME: other groups may have 'bot' rights
$join_conds['user_groups'] = array( 'LEFT JOIN', "ug_user = rev_user AND ug_group = 'bot'" );
- $join_conds['recentchanges'] = array( 'INNER JOIN', "rev_id = rc_this_oldid" );
} else {
- $tables = array( 'recentchanges', 'page', 'revision' );
+ $tables = array( 'page', 'revision' );
$condition['rev_user_text'] = $this->target;
- $join_conds['recentchanges'] = array( 'INNER JOIN', "rev_id = rc_this_oldid" );
$index = 'usertext_timestamp';
}
if( $this->deletedOnly ) {
$diffHistLinks = '(' . $difftext . $this->messages['pipe-separator'] . $histlink . ')';
- $diffOut = ' . . '.ChangesList::showCharacterDifference( $row->rc_old_len, $row->rc_new_len );
+
+ $diffOut = ( $this->showSizeDiff ) ? ' . . '.ChangesList::showCharacterDifference( $row->rc_old_len, $row->rc_new_len ) : '';
$ret = "{$del}{$d} {$diffHistLinks} {$nflag}{$mflag} {$link}{$diffOut}{$userlink} {$comment} {$topmarktext}";