RevisionDeleter:
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Wed, 14 Sep 2011 10:36:24 +0000 (10:36 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Wed, 14 Sep 2011 10:36:24 +0000 (10:36 +0000)
* Fixed comment of getChanges and made it public
* Removed getLogMessage and expandMessageArray, now unused
LogFormatter:
* Cache parsed parameters locally, since this function is going to be called few times for every log entry
DefaultSettings:
* Could not find any use of suppress/file log
LogPage:
* Removed old formatting code, now unused
WikiPage:
* Converted (suppress|delete)/delete logs to new format

Added DeleteLogFormatter, handles part of suppression log as well.
Updated messages.
This also addresses bug 18578.

RELEASE-NOTES-1.19
includes/AutoLoader.php
includes/DefaultSettings.php
includes/LogPage.php
includes/WikiPage.php
includes/logging/LogFormatter.php
includes/revisiondelete/RevisionDeleter.php
languages/messages/MessagesEn.php
languages/messages/MessagesFi.php
maintenance/language/messages.inc

index 8f38d35..144e879 100644 (file)
@@ -61,6 +61,8 @@ production.
   to stop it from replace an already existing default sort, and suppress error.
 * (bug 30364) LanguageConverter now depends on the page content language
   instead of the wiki content language
+* (bug 18578) Rewrote revision delete related messages to allow better
+  localisation
 
 === Bug fixes in 1.19 ===
 * $wgUploadNavigationUrl should be used for file redlinks if
index 065a487..73ab7e0 100644 (file)
@@ -542,6 +542,7 @@ $wgAutoloadLocalClasses = array(
        'ManualLogEntry' => 'includes/logging/LogEntry.php',
        'LogFormatter' => 'includes/logging/LogFormatter.php',
        'LegacyLogFormatter' => 'includes/logging/LogFormatter.php',
+       'DeleteLogFormatter' => 'includes/logging/LogFormatter.php',
        'MoveLogFormatter' => 'includes/logging/LogFormatter.php',
 
        # includes/media
index a7a3a18..4b69e71 100644 (file)
@@ -5028,20 +5028,12 @@ $wgLogActions = array(
        'protect/move_prot'  => 'movedarticleprotection',
        'rights/rights'      => 'rightslogentry',
        'rights/autopromote' => 'rightslogentry-autopromote',
-       'delete/delete'      => 'deletedarticle',
-       'delete/restore'     => 'undeletedarticle',
-       'delete/revision'    => 'revdelete-logentry',
-       'delete/event'       => 'logdelete-logentry',
        'upload/upload'      => 'uploadedimage',
        'upload/overwrite'   => 'overwroteimage',
        'upload/revert'      => 'uploadedimage',
        'import/upload'      => 'import-logentry-upload',
        'import/interwiki'   => 'import-logentry-interwiki',
        'merge/merge'        => 'pagemerge-logentry',
-       'suppress/revision'  => 'revdelete-logentry',
-       'suppress/file'      => 'revdelete-logentry',
-       'suppress/event'     => 'logdelete-logentry',
-       'suppress/delete'    => 'suppressedarticle',
        'suppress/block'     => 'blocklogentry',
        'suppress/reblock'   => 'reblock-logentry',
        'patrol/patrol'      => 'patrol-log-line',
@@ -5055,7 +5047,12 @@ $wgLogActions = array(
  */
 $wgLogActionsHandlers = array(
        // move, move_redir
-       'move/*' => 'MoveLogFormatter',
+       'move/*'            => 'MoveLogFormatter',
+       // delete, restore, revision, event
+       'delete/*'          => 'DeleteLogFormatter',
+       'suppress/revision' => 'DeleteLogFormatter',
+       'suppress/event'    => 'DeleteLogFormatter',
+       'suppress/delete'   => 'DeleteLogFormatter',
 );
 
 /**
index aa57929..64f9540 100644 (file)
@@ -286,23 +286,6 @@ class LogPage {
                                                if( $params[2] ) {
                                                        $details .= ' [' . wfMsgExt( 'protect-summary-cascade', array( 'parsemag', 'language' => $langObj ) ) . ']';
                                                }
-                                       // Page moves
-                                       } elseif ( $type == 'move' && count( $params ) == 3 ) {
-                                               if( $params[2] ) {
-                                                       $details .= ' [' . wfMsgExt( 'move-redirect-suppressed', array( 'parsemag', 'language' => $langObj ) ) . ']';
-                                               }
-                                       // Revision deletion
-                                       } elseif ( 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, $langObj, false );
-                                       // Log deletion
-                                       } elseif ( 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, $langObj, true );
                                        }
 
                                        $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'language' => $langObj ), $params ) . $details;
index d13c60a..a99058d 100644 (file)
@@ -1741,10 +1741,13 @@ class WikiPage extends Page {
 
                # Log the deletion, if the page was suppressed, log it at Oversight instead
                $logtype = $suppress ? 'suppress' : 'delete';
-               $log = new LogPage( $logtype );
 
-               # Make sure logging got through
-               $log->addEntry( 'delete', $this->mTitle, $reason, array() );
+               $logEntry = new ManualLogEntry( $logtype, 'delete' );
+               $logEntry->setPerformer( $user );
+               $logEntry->setTarget( $this->mTitle );
+               $logEntry->setComment( $reason );
+               $logid = $logEntry->insert();
+               $logEntry->publish( $logid );
 
                if ( $commit ) {
                        $dbw->commit();
index 4a73ec6..0cbcc69 100644 (file)
@@ -133,7 +133,7 @@ class LogFormatter {
         * @return Message|pre-escaped html
         */
        protected function getActionMessage() {
-               $message =  $this->msg( $this->getMessageKey() );
+               $message = $this->msg( $this->getMessageKey() );
                $message->params( $this->getMessageParameters() );
                return $message;
        }
@@ -162,6 +162,10 @@ class LogFormatter {
         * @return array
         */
        protected function getMessageParameters() {
+               if ( isset( $this->parsedParameters ) ) {
+                       return $this->parsedParameters;
+               }
+
                $entry = $this->entry;
 
                $params = array();
@@ -193,7 +197,7 @@ class LogFormatter {
                        }
                }
 
-               return $params;
+               return $this->parsedParameters = $params;
        }
 
        /**
@@ -341,3 +345,69 @@ class MoveLogFormatter extends LogFormatter {
                return $params;
        }
 }
+
+/**
+ * This class formats delete log entries.
+ * @since 1.19
+ */
+class DeleteLogFormatter extends LogFormatter {
+       protected function getMessageKey() {
+               $key = parent::getMessageKey();
+               if ( in_array( $this->entry->getSubtype(), array( 'event', 'revision' ) ) ) {
+                       if ( count( $this->getMessageParameters() ) < 5 ) {
+                               return "$key-legacy";
+                       }
+               }
+               return $key;
+       }
+
+       protected function getMessageParameters() {
+               if ( isset( $this->parsedParametersDeleteLog ) ) {
+                       return $this->parsedParametersDeleteLog;
+               }
+
+               $params = parent::getMessageParameters();
+               $subtype = $this->entry->getSubtype();
+               if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
+                       if ( count( $params ) > 5 ) {
+                               $paramStart = $subtype === 'revision' ? 4 : 3;
+
+                               $old = $this->parseBitField( $params[$paramStart+1] );
+                               $new = $this->parseBitField( $params[$paramStart+2] );
+                               list( $hid, $unhid, $extra ) = RevisionDeleter::getChanges( $new, $old );
+                               $changes = array();
+                               foreach ( $hid as $v ) {
+                                       $changes[] = $this->msg( "$v-hid" )->plain();
+                               }
+                               foreach ( $unhid as $v ) {
+                                       $changes[] = $this->msg( "$v-unhid" )->plain();
+                               }
+                               foreach ( $extra as $v ) {
+                                       $changes[] = $this->msg( $v )->plain();
+                               }
+                               $changeText =  $this->context->getLang()->listToText( $changes );
+
+
+                               $newParams = array_slice( $params, 0, 3 );
+                               $newParams[3] = $changeText;
+                               $count = count( explode( ',', $params[$paramStart] ) );
+                               $newParams[4] = $this->context->getLang()->formatNum( $count );
+                               return $this->parsedParametersDeleteLog = $newParams;
+                       } else {
+                               return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+                       }
+               }
+
+               return $this->parsedParametersDeleteLog = $params;
+       }
+
+       protected function parseBitField( $string ) {
+               // Input is like ofield=2134 or just the number
+               if ( strpos( $string, 'field=' ) === 1 ) {
+                       list( , $field ) = explode( '=', $string );
+                       return (int) $field;
+               } else {
+                       return (int) $string;
+               }
+       }
+}
index bde586c..0d67774 100644 (file)
@@ -30,16 +30,17 @@ class RevisionDeleter {
        /**
         * Gets an array of message keys describing the changes made to the visibility
         * of the revision. If the resulting array is $arr, then $arr[0] will contain an
-        * array of strings describing the items that were hidden, $arr[2] will contain
-        * an array of strings describing the items that were unhidden, and $arr[3] will
+        * array of strings describing the items that were hidden, $arr[1] will contain
+        * an array of strings describing the items that were unhidden, and $arr[2] will
         * contain an array with a single string, which can be one of "applied
         * restrictions to sysops", "removed restrictions from sysops", or null.
         *
         * @param $n Integer: the new bitfield.
         * @param $o Integer: the old bitfield.
         * @return An array as described above.
+        * @since 1.19 public
         */
-       protected static function getChanges( $n, $o ) {
+       public static function getChanges( $n, $o ) {
                $diff = $n ^ $o;
                $ret = array( 0 => array(), 1 => array(), 2 => array() );
                // Build bitfield changes in language
@@ -59,47 +60,6 @@ class RevisionDeleter {
                return $ret;
        }
 
-       /**
-        * Gets a log message to describe the given revision visibility change. This
-        * message will be of the form "[hid {content, edit summary, username}];
-        * [unhid {...}][applied restrictions to sysops] for $count revisions: $comment".
-        *
-        * @param $count Integer: The number of effected revisions.
-        * @param $nbitfield Integer: The new bitfield for the revision.
-        * @param $obitfield Integer: The old bitfield for the revision.
-        * @param $language Language object to use
-        * @param $isForLog Boolean
-        */
-       public static function getLogMessage( $count, $nbitfield, $obitfield, $language, $isForLog = false ) {
-               $changes = self::getChanges( $nbitfield, $obitfield );
-               array_walk( $changes, array( __CLASS__, 'expandMessageArray' ), $language );
-
-               $changesText = array();
-
-               if( count( $changes[0] ) ) {
-                       $changesText[] = wfMsgExt( 'revdelete-hid', array( 'parsemag', 'language' => $language ), $language->commaList( $changes[0] ) );
-               }
-               if( count( $changes[1] ) ) {
-                       $changesText[] = wfMsgExt( 'revdelete-unhid', array( 'parsemag', 'language' => $language ), $language->commaList( $changes[1] ) );
-               }
-
-               $s = $language->semicolonList( $changesText );
-               if( count( $changes[2] ) ) {
-                       $s .= $s ? ' (' . $changes[2][0] . ')' : ' ' . $changes[2][0];
-               }
-
-               $msg = $isForLog ? 'logdelete-log-message' : 'revdelete-log-message';
-               return wfMsgExt( $msg, array( 'parsemag', 'language' => $language ), $s, $language->formatNum($count) );
-       }
-
-       private static function expandMessageArray( &$msg, $key, $language ) {
-               if ( is_array ( $msg ) ) {
-                       array_walk( $msg, array( __CLASS__, 'expandMessageArray' ), $language );
-               } else {
-                       $msg = wfMsgExt( $msg, array( 'parsemag', 'language' => $language ) );
-               }
-       }
-
        // Get DB field name for URL param...
        // Future code for other things may also track
        // other types of revision-specific changes.
index 553c5a4..fef8150 100644 (file)
@@ -1572,8 +1572,6 @@ Other administrators on {{SITENAME}} will still be able to access the hidden con
 'revdelete-unsuppress'        => 'Remove restrictions on restored revisions',
 'revdelete-log'               => 'Reason:',
 'revdelete-submit'            => 'Apply to selected {{PLURAL:$1|revision|revisions}}',
-'revdelete-logentry'          => 'changed revision visibility of "[[$1]]"',
-'logdelete-logentry'          => 'changed event visibility of "[[$1]]"',
 'revdelete-success'           => "'''Revision visibility successfully updated.'''",
 'revdelete-failure'           => "'''Revision visibility could not be updated:'''
 $1",
@@ -1585,15 +1583,6 @@ $1",
 'revdel-restore-visible'      => 'visible revisions',
 'pagehist'                    => 'Page history',
 'deletedhist'                 => 'Deleted history',
-'revdelete-content'           => 'content',
-'revdelete-summary'           => 'edit summary',
-'revdelete-uname'             => 'username',
-'revdelete-restricted'        => 'applied restrictions to administrators',
-'revdelete-unrestricted'      => 'removed restrictions for administrators',
-'revdelete-hid'               => 'hid $1',
-'revdelete-unhid'             => 'unhid $1',
-'revdelete-log-message'       => '$1 for $2 {{PLURAL:$2|revision|revisions}}',
-'logdelete-log-message'       => '$1 for $2 {{PLURAL:$2|event|events}}',
 'revdelete-hide-current'      => 'Error hiding the item dated $2, $1: this is the current revision.
 It cannot be hidden.',
 'revdelete-show-no-access'    => 'Error showing the item dated $2, $1: this item has been marked "restricted".
@@ -2810,8 +2799,6 @@ Please confirm that you intend to do this, that you understand the consequences,
 'actionfailed'           => 'Action failed',
 'deletedtext'            => '"$1" has been deleted.
 See $2 for a record of recent deletions.',
-'deletedarticle'         => 'deleted "[[$1]]"',
-'suppressedarticle'      => 'suppressed "[[$1]]"',
 'dellogpage'             => 'Deletion log',
 'dellogpagetext'         => 'Below is a list of the most recent deletions.',
 'deletionlog'            => 'deletion log',
@@ -2946,7 +2933,6 @@ You may have a bad link, or the revision may have been restored or removed from
 'undeletereset'                => 'Reset',
 'undeleteinvert'               => 'Invert selection',
 'undeletecomment'              => 'Reason:',
-'undeletedarticle'             => 'restored "[[$1]]"',
 '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',
@@ -4647,6 +4633,25 @@ This site is experiencing technical difficulties.',
 'sqlite-no-fts'  => '$1 without full-text search support',
 
 # New logging system
+'logentry-delete-delete'              => '$1 {{GENDER:$2|deleted}} page $3',
+'logentry-delete-restore'             => '$1 {{GENDER:$2|restored}} page $3',
+'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',
+'logentry-delete-revision-legacy'     => '$1 {{GENDER:$2|changed}} visibility of revisions on page $3',
+'logentry-suppress-delete'            => '$1 {{GENDER:$2|supressed}} page $3',
+'logentry-suppress-event'             => '$1 secretly {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a log event|$5 log events}} on $3: $4',
+'logentry-suppress-revision'          => '$1 secretly {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a revision|$5 revisions}} on page $3: $4',
+'logentry-suppress-event-legacy'      => '$1 secretly {{GENDER:$2|changed}} visibility of log events on $3',
+'logentry-suppress-revision-legacy'   => '$1 secretly {{GENDER:$2|changed}} visibility of revisions on page $3',
+'revdelete-content-hid'               => 'content hidden',
+'revdelete-summary-hid'               => 'edit summary hidden',
+'revdelete-uname-hid'                 => 'username hidden',
+'revdelete-content-unhid'             => 'content unhidden',
+'revdelete-summary-unhid'             => 'edit summary unhidden',
+'revdelete-uname-unhid'               => 'username unhidden',
+'revdelete-restricted'                => 'applied restrictions to administrators',
+'revdelete-unrestricted'              => 'removed restrictions for administrators',
 'logentry-move-move'                  => '$1 {{GENDER:$2|moved}} page $3 to $4',
 'logentry-move-move-noredirect'       => '$1 {{GENDER:$2|moved}} page $3 to $4 without leaving a redirect',
 'logentry-move-move_redir'            => '$1 {{GENDER:$2|moved}} page $3 to $4 over redirect',
index 4e3b0d6..c738b06 100644 (file)
@@ -1136,8 +1136,6 @@ Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti lukea piilote
 'revdelete-unsuppress'        => 'Poista rajoitukset palautetuilta versiolta',
 'revdelete-log'               => 'Syy',
 'revdelete-submit'            => 'Toteuta {{PLURAL:$1|valittuun versioon|valittuihin versioihin}}',
-'revdelete-logentry'          => 'muutti sivun [[$1]] version näkyvyyttä',
-'logdelete-logentry'          => 'muutti sivun [[$1]] näkyvyyttä',
 'revdelete-success'           => "'''Version näkyvyys päivitetty.'''",
 'revdelete-failure'           => "'''Version näkyvyyttä ei voitu päivittää:'''
 $1",
@@ -1149,15 +1147,6 @@ $1",
 'revdel-restore-visible'      => 'näkyvät muutokset',
 'pagehist'                    => 'Sivun muutoshistoria',
 'deletedhist'                 => 'Poistettujen versioiden historia',
-'revdelete-content'           => 'sisällön',
-'revdelete-summary'           => 'yhteenvedon',
-'revdelete-uname'             => 'käyttäjänimen',
-'revdelete-restricted'        => 'asetti rajoitukset ylläpitäjille',
-'revdelete-unrestricted'      => 'poisti rajoitukset ylläpitäjiltä',
-'revdelete-hid'               => 'piilotti $1',
-'revdelete-unhid'             => 'palautti näkyviin $1',
-'revdelete-log-message'       => '$1 koskien $2 {{PLURAL:$2|versiota}}',
-'logdelete-log-message'       => '$1 koskien $2 {{PLURAL:$2|tapahtumaa}}',
 'revdelete-hide-current'      => 'Virhe tapahtui $2, $1 päivätyn kohteen piilottamisessa: tämä on nykyinen versio. Sitä ei voi piilottaa.',
 'revdelete-show-no-access'    => 'Virhe näyttäessä kohtaa $2 kello $1: kohta on merkitty ”rajoitetuksi”.
 Sinulla ei ole oikeutta siihen.',
@@ -2226,8 +2215,6 @@ Palaute ja lisäapu osoitteessa:
 'actionfailed'           => 'Toiminto epäonnistui',
 'deletedtext'            => '”$1” on poistettu.
 Sivulla $2 on lista viimeaikaisista poistoista.',
-'deletedarticle'         => 'poisti sivun [[$1]]',
-'suppressedarticle'      => 'häivytti sivun [[$1]]',
 'dellogpage'             => 'Poistoloki',
 'dellogpagetext'         => 'Alla on loki viimeisimmistä poistoista.',
 'deletionlog'            => 'poistoloki',
@@ -2342,7 +2329,6 @@ Voit palauttaa versiota valikoivasti valitsemalla vain niiden versioiden valinta
 'undeletereset'                => 'Tyhjennä',
 'undeleteinvert'               => 'Käänteinen valinta',
 'undeletecomment'              => 'Syy',
-'undeletedarticle'             => 'palautti sivun [[$1]]',
 'undeletedrevisions'           => '{{PLURAL:$1|Yksi versio|$1 versiota}} palautettiin',
 'undeletedrevisions-files'     => '{{PLURAL:$1|Yksi versio|$1 versiota}} ja {{PLURAL:$2|yksi tiedosto|$2 tiedostoa}} palautettiin',
 'undeletedfiles'               => '{{PLURAL:$1|1 tiedosto|$1 tiedostoa}} palautettiin',
@@ -3671,4 +3657,20 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
 'sqlite-has-fts' => '$1, jossa on tuki kokotekstihaulle',
 'sqlite-no-fts'  => '$1, jossa ei ole tukea kokotekstihaulle',
 
+# New logging system
+'logentry-delete-delete'          => '$1 poisti sivun $3',
+'logentry-delete-restore'         => '$1 palautti sivun $3',
+'logentry-delete-event'           => '$1 muutti {{PLURAL:$5||$5}} lokitapahtuman näkyvyyttä $3: $4',
+'logentry-delete-revision'        => '$1 muutti {{PLURAL:$5||$5}} muutoksen näkyvyyttä sivulla $3: $4',
+'logentry-delete-event-legacy'    => '$1 muutti lokitapahtumien näkyvyyttä $3',
+'logentry-delete-revision-legacy' => '$1 muutti sivun $3 muutosten näkyvyyttä',
+'revdelete-content-hid'           => 'sisältö piilotettu',
+'revdelete-summary-hid'           => 'muokkausyhteenveto piilotettu',
+'revdelete-uname-hid'             => 'käyttäjätunnus piilotettu',
+'revdelete-content-unhid'         => 'sisältö palautettu näkyviin',
+'revdelete-summary-unhid'         => 'muokkausyhteenveto palautettu näkyviin',
+'revdelete-uname-unhid'           => 'käyttäjätunnus palautettu näkyviin',
+'revdelete-restricted'            => 'asetti rajoitukset ylläpitäjille',
+'revdelete-unrestricted'          => 'poisti rajoitukset ylläpitäjiltä',
+
 );
index ac45fc6..427ab44 100644 (file)
@@ -768,10 +768,6 @@ $wgMessageStructure = array(
                'revdelete-unsuppress',
                'revdelete-log',
                'revdelete-submit',
-               'revdelete-logentry',
-               'logdelete-logentry',
-               'revdelete-logaction',
-               'logdelete-logaction',
                'revdelete-success',
                'revdelete-failure',
                'logdelete-success',
@@ -781,15 +777,6 @@ $wgMessageStructure = array(
                'revdel-restore-visible',
                'pagehist',
                'deletedhist',
-               'revdelete-content',
-               'revdelete-summary',
-               'revdelete-uname',
-               'revdelete-restricted',
-               'revdelete-unrestricted',
-               'revdelete-hid',
-               'revdelete-unhid',
-               'revdelete-log-message',
-               'logdelete-log-message',
                'revdelete-hide-current',
                'revdelete-show-no-access',
                'revdelete-modify-no-access',
@@ -1870,8 +1857,6 @@ $wgMessageStructure = array(
                'actioncomplete',
                'actionfailed',
                'deletedtext',
-               'deletedarticle',
-               'suppressedarticle',
                'dellogpage',
                'dellogpagetext',
                'deletionlog',
@@ -1977,7 +1962,6 @@ $wgMessageStructure = array(
                'undeletereset',
                'undeleteinvert',
                'undeletecomment',
-               'undeletedarticle',
                'undeletedrevisions',
                'undeletedrevisions-files',
                'undeletedfiles',
@@ -3513,6 +3497,25 @@ $wgMessageStructure = array(
                'confirm-unwatch-button',
        ),
        'logging' => array(
+               'logentry-delete-delete',
+               'logentry-delete-restore',
+               'logentry-delete-event',
+               'logentry-delete-revision',
+               'logentry-delete-event-legacy',
+               'logentry-delete-revision-legacy',
+               'logentry-suppress-delete',
+               'logentry-suppress-event',
+               'logentry-suppress-revision',
+               'logentry-suppress-event-legacy',
+               'logentry-suppress-revision-legacy',
+               'revdelete-content-hid',
+               'revdelete-summary-hid',
+               'revdelete-uname-hid',
+               'revdelete-content-unhid',
+               'revdelete-summary-unhid',
+               'revdelete-uname-unhid',
+               'revdelete-restricted',
+               'revdelete-unrestricted',
                'logentry-move-move',
                'logentry-move-move-noredirect',
                'logentry-move-move_redir',