const DELETED_ACTION = 1;
const DELETED_COMMENT = 2;
const DELETED_USER = 4;
- const DELETED_RESTRICTED = 8;
+ const DELETED_RESTRICTED = 8;
+ // Convenience fields
+ const SUPPRESSED_USER = 12;
+ const SUPPRESSED_ACTION = 9;
/* @access private */
var $type, $action, $comment, $params, $target, $doer;
/* @acess public */
global $wgLogRestrictions;
$dbw = wfGetDB( DB_MASTER );
- $log_id = $dbw->nextSequenceValue( 'log_log_id_seq' );
+ $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
$this->timestamp = $now = wfTimestampNow();
$data = array(
'log_user_text' => $this->doer->getName(),
'log_namespace' => $this->target->getNamespace(),
'log_title' => $this->target->getDBkey(),
+ 'log_page' => $this->target->getArticleId(),
'log_comment' => $this->comment,
'log_params' => $this->params
);
*/
public function getRcComment() {
$rcComment = $this->actionText;
- if( '' != $this->comment ) {
+ if( $this->comment != '' ) {
if ($rcComment == '')
$rcComment = $this->comment;
else
public static function logHeader( $type ) {
global $wgLogHeaders, $wgMessageCache;
$wgMessageCache->loadAllMessages();
- return wfMsgExt($wgLogHeaders[$type],array('parseinline'));
+ return wfMsgExt($wgLogHeaders[$type], array( 'parseinline' ) );
}
/**
* @static
+ * Note that if $skin is null, we want to use the wiki content language, since that
+ * will go to the irc feed.
* @return HTML string
*/
- public static function actionText( $type, $action, $title = NULL, $skin = NULL,
+ public static function actionText( $type, $action, $title = null, $skin = null,
$params = array(), $filterWikilinks = false )
{
global $wgLang, $wgContLang, $wgLogActions, $wgMessageCache;
}
$params[2] = isset( $params[2] ) ?
self::formatBlockFlags( $params[2], is_null( $skin ) ) : '';
+
// Page protections
} else if ( $type == 'protect' && count($params) == 3 ) {
+ // Restrictions and expiries
+ if( $skin ) {
+ $details .= htmlspecialchars( " {$params[1]}" );
+ } else {
+ $details .= " {$params[1]}";
+ }
+ // Cascading flag...
if( $params[2] ) {
if ( $skin ) {
- $details .= htmlspecialchars( " {$params[1]}" ); // restrictions and expiries
$details .= ' ['.wfMsg('protect-summary-cascade').']';
} else {
- $details .= " {$params[1]}";
$details .= ' ['.wfMsgForContent('protect-summary-cascade').']';
}
}
+
// Page moves
} else if ( $type == 'move' && count( $params ) == 3 ) {
if( $params[2] ) {
$details .= ' [' . wfMsgForContent( 'move-redirect-suppressed' ) . ']';
}
}
+
// Revision deletion
} else if ( preg_match( '/^(delete|suppress)\/revision$/', $key ) && count( $params ) == 5 ) {
$count = substr_count( $params[2], ',' ) + 1; // revisions
$ofield = intval( substr( $params[3], 7 ) ); // <ofield=x>
$nfield = intval( substr( $params[4], 7 ) ); // <nfield=x>
- $details .= ': '.RevisionDeleter::getLogMessage( $count, $nfield, $ofield, false );
+ $details .= ': ' . RevisionDeleter::getLogMessage( $count, $nfield, $ofield, false, is_null($skin) );
+
// Log deletion
} else if ( preg_match( '/^(delete|suppress)\/event$/', $key ) && count( $params ) == 4 ) {
$count = substr_count( $params[1], ',' ) + 1; // log items
$ofield = intval( substr( $params[2], 7 ) ); // <ofield=x>
$nfield = intval( substr( $params[3], 7 ) ); // <nfield=x>
- $details .= ': '.RevisionDeleter::getLogMessage( $count, $nfield, $ofield, true );
+ $details .= ': ' . RevisionDeleter::getLogMessage( $count, $nfield, $ofield, true, is_null($skin) );
}
+
if ( $skin ) {
$rv = wfMsgHtml( $wgLogActions[$key], $params ) . $details;
} else {
}
protected static function getTitleLink( $type, $skin, $title, &$params ) {
- global $wgLang, $wgContLang;
+ global $wgLang, $wgContLang, $wgUserrightsInterwikiDelimiter;
if( !$skin ) {
return $title->getPrefixedText();
}
break;
case 'rights':
$text = $wgContLang->ucfirst( $title->getText() );
+ $parts = explode( $wgUserrightsInterwikiDelimiter, $text, 2 );
+ if ( count( $parts ) == 2 ) {
+ $titleLink = WikiMap::foreignUserLink( $parts[1], $parts[0],
+ htmlspecialchars( $title->getPrefixedText() ) );
+ if ( $titleLink !== false )
+ break;
+ }
$titleLink = $skin->link( Title::makeTitle( NS_USER, $text ) );
break;
case 'merge':
$params = array( $params );
}
+ if ( $comment === null ) $comment = "";
+
$this->action = $action;
$this->target = $target;
$this->comment = $comment;
$this->doer = $doer;
- $this->actionText = LogPage::actionText( $this->type, $action, $target, NULL, $params );
+ $this->actionText = LogPage::actionText( $this->type, $action, $target, null, $params );
return $this->saveContent();
}