summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tag/PageTranslationLogFormatter.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tag/PageTranslationLogFormatter.php')
-rw-r--r--www/wiki/extensions/Translate/tag/PageTranslationLogFormatter.php97
1 files changed, 97 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/tag/PageTranslationLogFormatter.php b/www/wiki/extensions/Translate/tag/PageTranslationLogFormatter.php
new file mode 100644
index 00000000..7e0d4938
--- /dev/null
+++ b/www/wiki/extensions/Translate/tag/PageTranslationLogFormatter.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Class for formatting Translate page translation logs.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @license GPL-2.0-or-later
+ */
+
+/**
+ * Class for formatting Translate page translation logs.
+ */
+class PageTranslationLogFormatter extends LogFormatter {
+ public function getMessageParameters() {
+ $params = parent::getMessageParameters();
+ $legacy = $this->entry->getParameters();
+
+ $type = $this->entry->getFullType();
+ switch ( $type ) {
+ case 'pagetranslation/mark':
+ $revision = $legacy['revision'];
+
+ $targetPage = $this->makePageLink(
+ $this->entry->getTarget(),
+ [ 'oldid' => $revision ]
+ );
+
+ $params[2] = Message::rawParam( $targetPage );
+ break;
+
+ case 'pagetranslation/moveok':
+ case 'pagetranslation/movenok':
+ case 'pagetranslation/deletefnok':
+ case 'pagetranslation/deletelnok':
+ $target = $legacy['target'];
+
+ $moveTarget = $this->makePageLink( Title::newFromText( $target ) );
+ $params[3] = Message::rawParam( $moveTarget );
+ break;
+
+ case 'pagetranslation/prioritylanguages':
+ $params[3] = $legacy['force'];
+ $languages = $legacy['languages'];
+ if ( $languages !== false ) {
+ $lang = $this->context->getLanguage();
+
+ $languages = array_map(
+ 'trim',
+ preg_split( '/,/', $languages, -1, PREG_SPLIT_NO_EMPTY )
+ );
+ $languages = array_map( function ( $code ) use ( $lang ) {
+ return TranslateUtils::getLanguageName( $code, $lang->getCode() );
+ }, $languages );
+
+ $params[4] = $lang->listToText( $languages );
+ }
+ break;
+
+ case 'pagetranslation/associate':
+ case 'pagetranslation/dissociate':
+ $params[3] = $legacy['aggregategroup'];
+ break;
+ }
+
+ return $params;
+ }
+
+ public function getComment() {
+ $legacy = $this->entry->getParameters();
+ if ( isset( $legacy['reason'] ) ) {
+ $comment = Linker::commentBlock( $legacy['reason'] );
+
+ // No hard coded spaces thanx
+ return ltrim( $comment );
+ }
+
+ return parent::getComment();
+ }
+
+ protected function getMessageKey() {
+ $key = parent::getMessageKey();
+ $type = $this->entry->getFullType();
+
+ // logentry-pagetranslation-prioritylanguages-unset
+ // logentry-pagetranslation-prioritylanguages-force
+ if ( $type === 'pagetranslation/prioritylanguages' ) {
+ $params = $this->getMessageParameters();
+ if ( !isset( $params[4] ) ) {
+ $key .= '-unset';
+ } elseif ( $params['3'] === 'on' ) {
+ $key .= '-force';
+ }
+ }
+
+ return $key;
+ }
+}