Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
TranslatableBundleLogFormatter.php
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\MessageGroupProcessing;
5
6use Linker;
7use LogFormatter;
8use MediaWiki\MediaWikiServices;
9use Message;
10use Title;
12
18class TranslatableBundleLogFormatter extends LogFormatter {
19 public function getMessageParameters(): array {
20 $params = parent::getMessageParameters();
21 $legacy = $this->entry->getParameters();
22
23 $type = $this->entry->getFullType();
24 switch ( $type ) {
25 case 'pagetranslation/mark':
26 $revision = $legacy['revision'];
27
28 $targetPage = $this->makePageLink(
29 $this->entry->getTarget(),
30 [ 'oldid' => $revision ]
31 );
32
33 $params[2] = Message::rawParam( $targetPage );
34 break;
35
36 case 'pagetranslation/moveok':
37 case 'pagetranslation/movenok':
38 case 'pagetranslation/deletefnok':
39 case 'pagetranslation/deletelnok':
40 case 'messagebundle/moveok':
41 case 'messagebundle/movenok':
42 $target = $legacy['target'];
43
44 $moveTarget = $this->makePageLink( Title::newFromText( $target ) );
45 $params[3] = Message::rawParam( $moveTarget );
46 break;
47
48 case 'pagetranslation/prioritylanguages':
49 $params[3] = $legacy['force'];
50 $languages = $legacy['languages'];
51 if ( $languages !== false ) {
52 $lang = $this->context->getLanguage();
53 $inLanguage = $lang->getCode();
54
55 $languages = array_map(
56 static function ( string $code ) use ( $inLanguage ): string {
57 return TranslateUtils::getLanguageName( trim( $code ), $inLanguage );
58 },
59 preg_split( '/,/', $languages, -1, PREG_SPLIT_NO_EMPTY )
60 );
61
62 $params[4] = $lang->listToText( $languages );
63 }
64 break;
65
66 case 'pagetranslation/associate':
67 case 'pagetranslation/dissociate':
68 $params[3] = $legacy['aggregategroup'];
69 break;
70 }
71
72 return $params;
73 }
74
75 public function getComment(): string {
76 $legacy = $this->entry->getParameters();
77 if ( isset( $legacy['reason'] ) ) {
78 if ( method_exists( MediaWikiServices::class, 'getCommentFormatter' ) ) {
79 $commentFormatter = MediaWikiServices::getInstance()->getCommentFormatter();
80 $comment = $commentFormatter->formatBlock( (string)$legacy['reason'] );
81 } else {
82 // < MW 1.38
83 $comment = Linker::commentBlock( (string)$legacy['reason'] );
84 }
85
86 // No hard coded spaces thanx
87 return ltrim( $comment );
88 }
89
90 return parent::getComment();
91 }
92
93 protected function getMessageKey(): string {
94 $key = parent::getMessageKey();
95 $type = $this->entry->getFullType();
96
97 // logentry-pagetranslation-prioritylanguages-unset
98 // logentry-pagetranslation-prioritylanguages-force
99 if ( $type === 'pagetranslation/prioritylanguages' ) {
100 $params = $this->getMessageParameters();
101 if ( !isset( $params[4] ) ) {
102 $key .= '-unset';
103 } elseif ( $params['3'] === 'on' ) {
104 $key .= '-force';
105 }
106 }
107
108 return $key;
109 }
110}
Essentially random collection of helper functions, similar to GlobalFunctions.php.