diff options
Diffstat (limited to 'www/wiki/extensions/Translate/utils/TranslateLogFormatter.php')
-rw-r--r-- | www/wiki/extensions/Translate/utils/TranslateLogFormatter.php | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/utils/TranslateLogFormatter.php b/www/wiki/extensions/Translate/utils/TranslateLogFormatter.php new file mode 100644 index 00000000..2925f2cb --- /dev/null +++ b/www/wiki/extensions/Translate/utils/TranslateLogFormatter.php @@ -0,0 +1,81 @@ +<?php +/** + * Class for formatting Translate logs. + * + * @file + * @author Niklas Laxström + * @copyright Copyright © 2013, Niklas Laxström + * @license GPL-2.0-or-later + */ + +/** + * Class for formatting Translate logs. + */ +class TranslateLogFormatter extends LogFormatter { + + public function getMessageParameters() { + $params = parent::getMessageParameters(); + + $type = $this->entry->getFullType(); + + if ( $type === 'translationreview/message' ) { + $targetPage = $this->makePageLink( + $this->entry->getTarget(), + [ 'oldid' => $params[3] ] + ); + + $params[2] = Message::rawParam( $targetPage ); + } elseif ( $type === 'translationreview/group' ) { + /* + * - 3: language code + * - 4: label of the message group + * - 5: old state + * - 6: new state + */ + + $uiLanguage = $this->context->getLanguage(); + $language = $params[3]; + + $targetPage = $this->makePageLinkWithText( + $this->entry->getTarget(), + $params[4], + [ 'language' => $language ] + ); + + $params[2] = Message::rawParam( $targetPage ); + $params[3] = TranslateUtils::getLanguageName( $language, $uiLanguage->getCode() ); + $params[5] = $this->formatStateMessage( $params[5] ); + $params[6] = $this->formatStateMessage( $params[6] ); + } elseif ( $type === 'translatorsandbox/rejected' ) { + // No point linking to the user page which cannot have existed + $params[2] = $this->entry->getTarget()->getText(); + } elseif ( $type === 'translatorsandbox/promoted' ) { + // Gender for the target + $params[3] = User::newFromId( $params[3] )->getName(); + } + + return $params; + } + + protected function formatStateMessage( $value ) { + $message = $this->msg( "translate-workflow-state-$value" ); + + return $message->isBlank() ? $value : $message->text(); + } + + protected function makePageLinkWithText( + Title $title = null, $text, array $parameters = [] + ) { + if ( !$this->plaintext ) { + $link = Linker::link( $title, htmlspecialchars( $text ), [], $parameters ); + } else { + $target = '***'; + if ( $title instanceof Title ) { + $target = $title->getPrefixedText(); + } + $link = "[[$target|$text]]"; + } + + return $link; + } +} |