wiki.techinc.nl/includes/logging/MoveLogFormatter.php
umherirrender 589258a733 Always set suppressredirect of type move for new api logparam style
Old log params for moves may omit the suppressredirect indicator, just
add it as false when missing.

This has no visible change for the old json or xml format, but it will
be useful, when using the new json format, which also output bool=false

Follow-Up: I6846ce09322eb404c506b5a51780a44ce9279fe2
Change-Id: I74981bf064a0b94707b5cc7ff7e5bb8fcdfe2123
2015-04-17 18:32:48 +02:00

113 lines
3.2 KiB
PHP

<?php
/**
* Formatter for move log entries.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @author Niklas Laxström
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
* @since 1.22
*/
/**
* This class formats move log entries.
*
* @since 1.19
*/
class MoveLogFormatter extends LogFormatter {
public function getPreloadTitles() {
$params = $this->extractParameters();
return array( Title::newFromText( $params[3] ) );
}
protected function getMessageKey() {
$key = parent::getMessageKey();
$params = $this->extractParameters();
if ( isset( $params[4] ) && $params[4] === '1' ) {
// Messages: logentry-move-move-noredirect, logentry-move-move_redir-noredirect
$key .= '-noredirect';
}
return $key;
}
protected function getMessageParameters() {
$params = parent::getMessageParameters();
$oldname = $this->makePageLink( $this->entry->getTarget(), array( 'redirect' => 'no' ) );
$newname = $this->makePageLink( Title::newFromText( $params[3] ) );
$params[2] = Message::rawParam( $oldname );
$params[3] = Message::rawParam( $newname );
unset( $params[4] ); // handled in getMessageKey
return $params;
}
public function getActionLinks() {
if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
|| $this->entry->getSubtype() !== 'move'
|| !$this->context->getUser()->isAllowed( 'move' )
) {
return '';
}
$params = $this->extractParameters();
$destTitle = Title::newFromText( $params[3] );
if ( !$destTitle ) {
return '';
}
$revert = Linker::linkKnown(
SpecialPage::getTitleFor( 'Movepage' ),
$this->msg( 'revertmove' )->escaped(),
array(),
array(
'wpOldTitle' => $destTitle->getPrefixedDBkey(),
'wpNewTitle' => $this->entry->getTarget()->getPrefixedDBkey(),
'wpReason' => $this->msg( 'revertmove' )->inContentLanguage()->text(),
'wpMovetalk' => 0
)
);
return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
}
protected function getParametersForApi() {
$entry = $this->entry;
$params = $entry->getParameters();
static $map = array(
'4:title:target',
'5:bool:suppressredirect',
'4::target' => '4:title:target',
'5::noredir' => '5:bool:suppressredirect',
);
foreach ( $map as $index => $key ) {
if ( isset( $params[$index] ) ) {
$params[$key] = $params[$index];
unset( $params[$index] );
}
}
if ( !isset( $params['5:bool:suppressredirect'] ) ) {
$params['5:bool:suppressredirect'] = false;
}
return $params;
}
}