class DeleteLogFormatter extends LogFormatter {
protected function getMessageKey() {
$key = parent::getMessageKey();
- if ( in_array( $this->entry->getSubtype(), array( 'event', 'revision' ) ) ) {
+ if ( in_array( $this->entry->getSubtype(), [ 'event', 'revision' ] ) ) {
if ( count( $this->getMessageParameters() ) < 5 ) {
+ // Messages: logentry-delete-event-legacy, logentry-delete-revision-legacy,
+ // logentry-suppress-event-legacy, logentry-suppress-revision-legacy
return "$key-legacy";
}
}
$params = parent::getMessageParameters();
$subtype = $this->entry->getSubtype();
- if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
+ if ( in_array( $subtype, [ 'event', 'revision' ] ) ) {
// $params[3] here is 'revision' or 'archive' for page revisions, 'oldimage' or
// 'filearchive' for file versions, or a comma-separated list of log_ids for log
// entries. $subtype here is 'revision' for page revisions and file
$old = $this->parseBitField( $params[$paramStart + 1] );
$new = $this->parseBitField( $params[$paramStart + 2] );
list( $hid, $unhid, $extra ) = RevisionDeleter::getChanges( $new, $old );
- $changes = array();
+ $changes = [];
// messages used: revdelete-content-hid, revdelete-summary-hid, revdelete-uname-hid
foreach ( $hid as $v ) {
$changes[] = $this->msg( "$v-hid" )->plain();
$revert = Linker::linkKnown(
SpecialPage::getTitleFor( 'Undelete' ),
$this->msg( $message )->escaped(),
- array(),
- array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
+ [],
+ [ 'target' => $this->entry->getTarget()->getPrefixedDBkey() ]
);
return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
? $params[4]
: explode( ',', $params[4] );
- $links = array();
+ $links = [];
// If there's only one item, we can show a diff link
if ( count( $ids ) == 1 ) {
$links[] = Linker::linkKnown(
$this->entry->getTarget(),
$this->msg( 'diff' )->escaped(),
- array(),
- array(
+ [],
+ [
'diff' => intval( $ids[0] ),
'unhide' => 1
- )
+ ]
);
// Deleted revision diffs...
} elseif ( $key == 'artimestamp' || $key == 'archive' ) {
$links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'Undelete' ),
$this->msg( 'diff' )->escaped(),
- array(),
- array(
+ [],
+ [
'target' => $this->entry->getTarget()->getPrefixedDBkey(),
'diff' => 'prev',
'timestamp' => $ids[0]
- )
+ ]
);
}
}
$links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'Revisiondelete' ),
$this->msg( 'revdel-restore' )->escaped(),
- array(),
- array(
+ [],
+ [
'target' => $this->entry->getTarget()->getPrefixedText(),
'type' => $key,
'ids' => implode( ',', $ids ),
- )
+ ]
);
return $this->msg( 'parentheses' )->rawParams(
}
// This is a CSV of the IDs
$query = $params[3];
+ if ( is_array( $query ) ) {
+ $query = implode( ',', $query );
+ }
// Link to each hidden object ID, $params[1] is the url param
$revert = Linker::linkKnown(
SpecialPage::getTitleFor( 'Revisiondelete' ),
$this->msg( 'revdel-restore' )->escaped(),
- array(),
- array(
+ [],
+ [
'target' => $this->entry->getTarget()->getPrefixedText(),
'type' => 'logging',
'ids' => $query
- )
+ ]
);
return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
return '';
}
}
+
+ protected function getParametersForApi() {
+ $entry = $this->entry;
+ $params = [];
+
+ $subtype = $this->entry->getSubtype();
+ if ( in_array( $subtype, [ 'event', 'revision' ] ) ) {
+ $rawParams = $entry->getParameters();
+ if ( $subtype === 'event' ) {
+ array_unshift( $rawParams, 'logging' );
+ }
+
+ static $map = [
+ '4::type',
+ '5::ids',
+ '6::ofield',
+ '7::nfield',
+ '4::ids' => '5::ids',
+ '5::ofield' => '6::ofield',
+ '6::nfield' => '7::nfield',
+ ];
+ foreach ( $map as $index => $key ) {
+ if ( isset( $rawParams[$index] ) ) {
+ $rawParams[$key] = $rawParams[$index];
+ unset( $rawParams[$index] );
+ }
+ }
+
+ $old = $this->parseBitField( $rawParams['6::ofield'] );
+ $new = $this->parseBitField( $rawParams['7::nfield'] );
+ if ( !is_array( $rawParams['5::ids'] ) ) {
+ $rawParams['5::ids'] = explode( ',', $rawParams['5::ids'] );
+ }
+
+ $params = [
+ '::type' => $rawParams['4::type'],
+ ':array:ids' => $rawParams['5::ids'],
+ ':assoc:old' => [ 'bitmask' => $old ],
+ ':assoc:new' => [ 'bitmask' => $new ],
+ ];
+
+ static $fields = [
+ Revision::DELETED_TEXT => 'content',
+ Revision::DELETED_COMMENT => 'comment',
+ Revision::DELETED_USER => 'user',
+ Revision::DELETED_RESTRICTED => 'restricted',
+ ];
+ foreach ( $fields as $bit => $key ) {
+ $params[':assoc:old'][$key] = (bool)( $old & $bit );
+ $params[':assoc:new'][$key] = (bool)( $new & $bit );
+ }
+ }
+
+ return $params;
+ }
+
+ public function formatParametersForApi() {
+ $ret = parent::formatParametersForApi();
+ if ( isset( $ret['ids'] ) ) {
+ ApiResult::setIndexedTagName( $ret['ids'], 'id' );
+ }
+ return $ret;
+ }
}