// logentry-suppress-event-legacy, logentry-suppress-revision-legacy
return "$key-legacy";
}
+ } elseif ( $this->entry->getSubtype() === 'restore' ) {
+ $rawParams = $this->entry->getParameters();
+ if ( !isset( $rawParams[':assoc:count'] ) ) {
+ // Message: logentry-delete-restore-nocount
+ return $key . '-nocount';
+ }
}
return $key;
$this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
return $this->parsedParametersDeleteLog;
}
+ } elseif ( $subtype === 'restore' ) {
+ $rawParams = $this->entry->getParameters();
+ if ( isset( $rawParams[':assoc:count'] ) ) {
+ $countList = [];
+ foreach ( $rawParams[':assoc:count'] as $type => $count ) {
+ if ( $count ) {
+ // Messages: restore-count-revisions, restore-count-files
+ $countList[] = $this->context->msg( 'restore-count-' . $type )
+ ->numParams( $count )->plain();
+ }
+ }
+ $params[3] = $this->context->getLanguage()->listToText( $countList );
+ }
}
$this->parsedParametersDeleteLog = $params;
$params[':assoc:old'][$key] = (bool)( $old & $bit );
$params[':assoc:new'][$key] = (bool)( $new & $bit );
}
+ } elseif ( $subtype === 'restore' ) {
+ $rawParams = $entry->getParameters();
+ if ( isset( $rawParams[':assoc:count'] ) ) {
+ $params[':assoc:count'] = $rawParams[':assoc:count'];
+ }
}
return $params;
// Touch the log!
- if ( $textRestored && $filesRestored ) {
- $reason = wfMessage( 'undeletedrevisions-files' )
- ->numParams( $textRestored, $filesRestored )->inContentLanguage()->text();
- } elseif ( $textRestored ) {
- $reason = wfMessage( 'undeletedrevisions' )->numParams( $textRestored )
- ->inContentLanguage()->text();
- } elseif ( $filesRestored ) {
- $reason = wfMessage( 'undeletedfiles' )->numParams( $filesRestored )
- ->inContentLanguage()->text();
- } else {
+ if ( !$textRestored && !$filesRestored ) {
wfDebug( "Undelete: nothing undeleted...\n" );
return false;
}
- if ( trim( $comment ) != '' ) {
- $reason .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $comment;
- }
-
if ( $user === null ) {
global $wgUser;
$user = $wgUser;
$logEntry = new ManualLogEntry( 'delete', 'restore' );
$logEntry->setPerformer( $user );
$logEntry->setTarget( $this->title );
- $logEntry->setComment( $reason );
+ $logEntry->setComment( $comment );
$logEntry->setTags( $tags );
+ $logEntry->setParameters( [
+ ':assoc:count' => [
+ 'revisions' => $textRestored,
+ 'files' => $filesRestored,
+ ],
+ ] );
Hooks::run( 'ArticleUndeleteLogEntry', [ $this, &$logEntry, $user ] );
$logid = $logEntry->insert();
$logEntry->publish( $logid );
- return [ $textRestored, $filesRestored, $reason ];
+ return [ $textRestored, $filesRestored, $comment ];
}
/**
"undeleteviewlink": "view",
"undeleteinvert": "Invert selection",
"undeletecomment": "Reason:",
- "undeletedrevisions": "{{PLURAL:$1|1 revision|$1 revisions}} restored",
- "undeletedrevisions-files": "{{PLURAL:$1|1 revision|$1 revisions}} and {{PLURAL:$2|1 file|$2 files}} restored",
- "undeletedfiles": "{{PLURAL:$1|1 file|$1 files}} restored",
"cannotundelete": "Some or all of the undeletion failed:\n$1",
"undeletedpage": "<strong>$1 has been restored</strong>\n\nConsult the [[Special:Log/delete|deletion log]] for a record of recent deletions and restorations.",
"undelete-header": "See [[Special:Log/delete|the deletion log]] for recently deleted pages.",
"rawmessage": "$1",
"logentry-delete-delete": "$1 {{GENDER:$2|deleted}} page $3",
"logentry-delete-delete_redir": "$1 {{GENDER:$2|deleted}} redirect $3 by overwriting",
- "logentry-delete-restore": "$1 {{GENDER:$2|restored}} page $3",
+ "logentry-delete-restore": "$1 {{GENDER:$2|restored}} page $3 ($4)",
+ "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restored}} page $3",
+ "restore-count-revisions": "{{PLURAL:$1|1 revision|$1 revisions}}",
+ "restore-count-files": "{{PLURAL:$1|1 file|$1 files}}",
"logentry-delete-event": "$1 {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a log event|$5 log events}} on $3: $4",
"logentry-delete-revision": "$1 {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a revision|$5 revisions}} on page $3: $4",
"logentry-delete-event-legacy": "$1 {{GENDER:$2|changed}} visibility of log events on $3",
"undeleteviewlink": "First part of {{msg-mw|undeletelink}}.\nDisplay name of link to view a deleted page used on [[Special:Log/delete]].\n{{Identical|View}}",
"undeleteinvert": "{{Identical|Invert selection}}",
"undeletecomment": "{{Identical|Reason}}",
- "undeletedrevisions": "Used as reason in the log entry. Parameters:\n* $1 - number of revisions\nSee also:\n* {{msg-mw|Undeletedrevisions-files}}\n* {{msg-mw|Undeletedfiles}}",
- "undeletedrevisions-files": "Used as reason in the log entry. Parameters:\n* $1 - number of revisions\n* $2 - number of files\nSee also:\n* {{msg-mw|Undeletedrevisions}}\n* {{msg-mw|Undeletedfiles}}",
- "undeletedfiles": "Used as reason in the log entry. Parameters:\n* $1 - number of files\nSee also:\n* {{msg-mw|Undeletedrevisions-files}}\n* {{msg-mw|Undeletedrevisions}}",
"cannotundelete": "Message shown when undeletion failed for some reason. Parameters:\n* $1 - the combined wikitext of messages for all errors that caused the failure",
"undeletedpage": "Used as success message. Parameters:\n* $1 - page title, with link",
"undelete-header": "Used in [[Special:Undelete]].",
"rawmessage": "{{notranslate}} Used to pass arbitrary text as a message specifier array",
"logentry-delete-delete": "{{Logentry|[[Special:Log/delete]]}}",
"logentry-delete-delete_redir": "{{Logentry|[[Special:Log/delete]]}}",
- "logentry-delete-restore": "{{Logentry|[[Special:Log/delete]]}}",
+ "logentry-delete-restore": "{{Logentry|[[Special:Log/delete]]}}\n* $4 - {{msg-mw|restore-count-revisions}} or/and {{msg-mw|restore-count-files}}",
+ "logentry-delete-restore-nocount": "{{Logentry|[[Special:Log/delete]]}}",
+ "restore-count-revisions": "Used as parameter in {{msg-mw|logentry-delete-restore}}",
+ "restore-count-files": "Used as parameter in {{msg-mw|logentry-delete-restore}}",
"logentry-delete-event": "{{Logentry|[[Special:Log/delete]]}}\n{{Logentryparam}}\n* $5 - count of affected log events",
"logentry-delete-revision": "{{Logentry|[[Special:Log/delete]]}}\n{{Logentryparam}}\n* $5 - the number of affected revisions of the page $3",
"logentry-delete-event-legacy": "{{Logentry|[[Special:Log/delete]]}}",
public static function provideRestoreLogDatabaseRows() {
return [
// Current format
+ [
+ [
+ 'type' => 'delete',
+ 'action' => 'restore',
+ 'comment' => 'delete comment',
+ 'namespace' => NS_MAIN,
+ 'title' => 'Page',
+ 'params' => [
+ ':assoc:count' => [
+ 'revisions' => 2,
+ 'files' => 1,
+ ],
+ ],
+ ],
+ [
+ 'text' => 'User restored page Page (2 revisions and 1 file)',
+ 'api' => [
+ 'count' => [
+ 'revisions' => 2,
+ 'files' => 1,
+ ],
+ ],
+ ],
+ ],
+
+ // Legacy format without counts
[
[
'type' => 'delete',