* @file
*/
-class LogEventsList {
+class LogEventsList extends ContextSource {
const NO_ACTION_LINK = 1;
const NO_EXTRA_USER_LINKS = 2;
const USE_REVDEL_CHECKBOXES = 4;
- /**
- * @var Skin
- */
- private $skin;
-
- /**
- * @var OutputPage
- */
- private $out;
public $flags;
/**
*/
protected $mDefaultQuery;
- public function __construct( $skin, $out, $flags = 0 ) {
- $this->skin = $skin;
- $this->out = $out;
+ /**
+ * Constructor.
+ * The first two parameters used to be $skin and $out, but now only a context
+ * is needed, that's why there's a second unused parameter.
+ *
+ * @param $context IContextSource Context to use; formerly it was Skin object.
+ * @param $unused void Unused; used to be an OutputPage object.
+ * @param $flags int flags; can be a combinaison of self::NO_ACTION_LINK,
+ * self::NO_EXTRA_USER_LINKS or self::USE_REVDEL_CHECKBOXES.
+ */
+ public function __construct( $context, $unused = null, $flags = 0 ) {
+ if ( $context instanceof IContextSource ) {
+ $this->setContext( $context );
+ } else {
+ // Old parameters, $context should be a Skin object
+ $this->setContext( $context->getContext() );
+ }
+
$this->flags = $flags;
$this->preCacheMessages();
}
+ /**
+ * Deprecated alias for getTitle(); do not use.
+ *
+ * @deprecated in 1.20; use getTitle() instead.
+ * @return Title object
+ */
+ public function getDisplayTitle() {
+ return $this->getTitle();
+ }
+
/**
* As we use the same small set of messages in various methods and that
* they are called often, we call them once and save them in $this->message
'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'hist', 'diff',
'pipe-separator', 'revdel-restore-deleted', 'revdel-restore-visible' );
foreach( $messages as $msg ) {
- $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
+ $this->message[$msg] = $this->msg( $msg )->escaped();
}
}
}
wfDeprecated( __METHOD__, '1.19' );
// If only one log type is used, then show a special message...
$headerType = (count($type) == 1) ? $type[0] : '';
+ $out = $this->getOutput();
if( LogPage::isLogType( $headerType ) ) {
$page = new LogPage( $headerType );
- $this->out->setPageTitle( $page->getName()->text() );
- $this->out->addHTML( $page->getDescription()->parseAsBlock() );
+ $out->setPageTitle( $page->getName()->text() );
+ $out->addHTML( $page->getDescription()->parseAsBlock() );
} else {
- $this->out->addHTML( wfMsgExt('alllogstext',array('parseinline')) );
+ $out->addHTML( $this->msg( 'alllogstext' )->parse() );
}
}
}
// Submit button
- $html .= Xml::submitButton( wfMsg( 'allpagessubmit' ) );
+ $html .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() );
// Fieldset
- $html = Xml::fieldset( wfMsg( 'log' ), $html );
+ $html = Xml::fieldset( $this->msg( 'log' )->text(), $html );
// Form wrapping
$html = Xml::tags( 'form', array( 'action' => $wgScript, 'method' => 'get' ), $html );
- $this->out->addHTML( $html );
+ $this->getOutput()->addHTML( $html );
}
/**
* @return String: Formatted HTML
*/
private function getFilterLinks( $filter ) {
- global $wgLang;
// show/hide links
- $messages = array( wfMsgHtml( 'show' ), wfMsgHtml( 'hide' ) );
+ $messages = array( $this->msg( 'show' )->escaped(), $this->msg( 'hide' )->escaped() );
// Option value -> message mapping
$links = array();
$hiddens = ''; // keep track for "go" button
$query
);
- $links[$type] = wfMsgHtml( "log-show-hide-{$type}", $link );
+ $links[$type] = $this->msg( "log-show-hide-{$type}" )->rawParams( $link )->escaped();
$hiddens .= Html::hidden( "hide_{$type}_log", $val ) . "\n";
}
// Build links
- return '<small>'.$wgLang->pipeList( $links ) . '</small>' . $hiddens;
+ return '<small>'.$this->getLanguage()->pipeList( $links ) . '</small>' . $hiddens;
}
private function getDefaultQuery() {
- global $wgRequest;
-
if ( !isset( $this->mDefaultQuery ) ) {
- $this->mDefaultQuery = $wgRequest->getQueryValues();
+ $this->mDefaultQuery = $this->getRequest()->getQueryValues();
unset( $this->mDefaultQuery['title'] );
unset( $this->mDefaultQuery['dir'] );
unset( $this->mDefaultQuery['offset'] );
return $this->mDefaultQuery;
}
- /**
- * Get the Title object of the page the links should point to.
- * This is NOT the Title of the page the entries should be restricted to.
- *
- * @return Title object
- */
- public function getDisplayTitle() {
- return $this->out->getTitle();
- }
-
- public function getContext() {
- return $this->out->getContext();
- }
-
/**
* @param $queryTypes Array
* @return String: Formatted HTML
* @since 1.19
*/
public function getTypeSelector() {
- global $wgUser;
-
$typesByName = array(); // Temporary array
// First pass to load the log names
foreach( LogPage::validTypes() as $type ) {
$page = new LogPage( $type );
$restriction = $page->getRestriction();
- if ( $wgUser->isAllowed( $restriction ) ) {
+ if ( $this->getUser()->isAllowed( $restriction ) ) {
$typesByName[$type] = $page->getName()->text();
}
}
*/
private function getUserInput( $user ) {
return '<span style="white-space: nowrap">' .
- Xml::inputLabel( wfMsg( 'specialloguserlabel' ), 'user', 'mw-log-user', 15, $user ) .
+ Xml::inputLabel( $this->msg( 'specialloguserlabel' )->text(), 'user', 'mw-log-user', 15, $user ) .
'</span>';
}
*/
private function getTitleInput( $title ) {
return '<span style="white-space: nowrap">' .
- Xml::inputLabel( wfMsg( 'speciallogtitlelabel' ), 'page', 'mw-log-page', 20, $title ) .
+ Xml::inputLabel( $this->msg( 'speciallogtitlelabel' )->text(), 'page', 'mw-log-page', 20, $title ) .
'</span>';
}
*/
private function getTitlePattern( $pattern ) {
return '<span style="white-space: nowrap">' .
- Xml::checkLabel( wfMsg( 'log-title-wildcard' ), 'pattern', 'pattern', $pattern ) .
+ Xml::checkLabel( $this->msg( 'log-title-wildcard' )->text(), 'pattern', 'pattern', $pattern ) .
'</span>';
}
* @return string
*/
private function getExtraInputs( $types ) {
- global $wgRequest;
- $offender = $wgRequest->getVal('offender');
+ $offender = $this->getRequest()->getVal( 'offender' );
$user = User::newFromName( $offender, false );
if( !$user || ($user->getId() == 0 && !IP::isIPAddress($offender) ) ) {
$offender = ''; // Blank field if invalid
}
if( count($types) == 1 && $types[0] == 'suppress' ) {
- return Xml::inputLabel( wfMsg('revdelete-offender'), 'offender',
+ return Xml::inputLabel( $this->msg( 'revdelete-offender' )->text(), 'offender',
'mw-log-offender', 20, $offender );
}
return '';
public function logLine( $row ) {
$entry = DatabaseLogEntry::newFromRow( $row );
$formatter = LogFormatter::newFromEntry( $entry );
+ $formatter->setContext( $this->getContext() );
$formatter->setShowUserToolLinks( !( $this->flags & self::NO_EXTRA_USER_LINKS ) );
$action = $formatter->getActionText();
}
private function logTimestamp( LogEntry $entry ) {
- global $wgLang;
- $time = $wgLang->timeanddate( wfTimestamp( TS_MW, $entry->getTimestamp() ), true );
- return htmlspecialchars( $time );
+ return htmlspecialchars( $this->getLanguage()->userTimeAndDate(
+ $entry->getTimestamp(), $this->getUser() ) );
}
/**
* @return String
*/
private function logActionLinks( $row, $title, $paramArray, &$comment ) {
- global $wgUser;
if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the action
|| self::isDeleted( $row, LogPage::DELETED_ACTION ) ) // action is hidden
{
array(
'wpOldTitle' => $destTitle->getPrefixedDBkey(),
'wpNewTitle' => $title->getPrefixedDBkey(),
- 'wpReason' => wfMsgForContent( 'revertmove' ),
+ 'wpReason' => $this->msg( 'revertmove' )->inContentLanguage()->text(),
'wpMovetalk' => 0
)
);
- $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+ $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
}
// Show undelete link
} elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'delete', 'deletedhistory' ) ) {
- if( !$wgUser->isAllowed( 'undelete' ) ) {
+ if( !$this->getUser()->isAllowed( 'undelete' ) ) {
$viewdeleted = $this->message['undeleteviewlink'];
} else {
$viewdeleted = $this->message['undeletelink'];
array(),
array( 'target' => $title->getPrefixedDBkey() )
);
- $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+ $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
// Show unblock/change block link
} elseif( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
$revert = Linker::linkKnown(
SpecialPage::getTitleFor( 'Block', $row->log_title ),
$this->message['change-blocklink']
);
- $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+ $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
// Show change protection link
} elseif( self::typeAction( $row, 'protect', array( 'modify', 'protect', 'unprotect' ) ) ) {
$revert .= Linker::link( $title,
'offset' => $row->log_timestamp
)
);
- if( $wgUser->isAllowed( 'protect' ) ) {
+ if( $this->getUser()->isAllowed( 'protect' ) ) {
$revert .= $this->message['pipe-separator'] .
Linker::link( $title,
$this->message['protect_change'],
array( 'action' => 'protect' ),
'known' );
}
- $revert = ' ' . wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+ $revert = ' ' . $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
// Show unmerge link
} elseif( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
$revert = Linker::linkKnown(
'mergepoint' => $paramArray[1]
)
);
- $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+ $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
// If an edit was hidden from a page give a review link to the history
} elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
$revert = RevisionDeleter::getLogLinks( $title, $paramArray,
'ids' => $query
)
);
- $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+ $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
}
// Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters.
} else {
* @return string
*/
private function getShowHideLinks( $row ) {
- global $wgUser;
if( ( $this->flags == self::NO_ACTION_LINK ) // we don't want to see the links
|| $row->log_type == 'suppress' ) { // no one can hide items from the suppress log
return '';
}
$del = '';
+ $user = $this->getUser();
// Don't show useless checkbox to people who cannot hide revisions
- if( $wgUser->isAllowed( 'deletedhistory' ) ) {
- if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
- $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $user->isAllowed( 'deletedhistory' ) ) {
+ if( $row->log_deleted || $user->isAllowed( 'deleterevision' ) ) {
+ $canHide = $user->isAllowed( 'deleterevision' );
if ( $this->flags & self::USE_REVDEL_CHECKBOXES ) { // Show checkboxes instead of links.
- if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { // If event was hidden from sysops
+ if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
$del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
} else {
$del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
}
} else {
- if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { // If event was hidden from sysops
+ if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
$del = Linker::revDeleteLinkDisabled( $canHide );
} else {
$query = array(
* if set to true (default), "No matching items in log" is displayed if loglist is empty
* - msgKey Array If you want a nice box with a message, set this to the key of the message.
* First element is the message key, additional optional elements are parameters for the key
- * that are processed with wfMsgExt and option 'parse'
- * - offset Set to overwrite offset parameter in $wgRequest
+ * that are processed with wfMessage
+ * - offset Set to overwrite offset parameter in WebRequest
* set to '' to unset offset
* - wrap String Wrap the message in html (usually something like "<div ...>$1</div>").
* - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
}
# Insert list of top 50 (or top $lim) items
- $loglist = new LogEventsList( $context->getSkin(), $context->getOutput(), $flags );
+ $loglist = new LogEventsList( $context, null, $flags );
$pager = new LogPager( $loglist, $types, $user, $page, '', $conds );
- if ( isset( $param['offset'] ) ) { # Tell pager to ignore $wgRequest offset
+ if ( isset( $param['offset'] ) ) { # Tell pager to ignore WebRequest offset
$pager->setOffset( $param['offset'] );
}
if( $lim > 0 ) $pager->mLimit = $lim;
$s = '<div class="mw-warning-with-logexcerpt">';
if ( count( $msgKey ) == 1 ) {
- $s .= wfMsgExt( $msgKey[0], array( 'parse' ) );
+ $s .= $context->msg( $msgKey[0] )->parseAsBlock();
} else { // Process additional arguments
$args = $msgKey;
array_shift( $args );
- $s .= wfMsgExt( $msgKey[0], array( 'parse' ), $args );
+ $s .= $context->msg( $msgKey[0], $args )->parseAsBlock();
}
}
$s .= $loglist->beginLogEventsList() .
} else {
if ( $showIfEmpty ) {
$s = Html::rawElement( 'div', array( 'class' => 'mw-warning-logempty' ),
- wfMsgExt( 'logempty', array( 'parseinline' ) ) );
+ $context->msg( 'logempty' )->parse() );
}
}
if( $pager->getNumRows() > $pager->mLimit ) { # Show "Full log" link
$urlParam['type'] = $types[0];
$s .= Linker::link(
SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'log-fulllog' ),
+ $context->msg( 'log-fulllog' )->escaped(),
array(),
$urlParam
);