Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 55
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
TranslatableBundleLogFormatter
0.00% covered (danger)
0.00%
0 / 55
0.00% covered (danger)
0.00%
0 / 3
342
0.00% covered (danger)
0.00%
0 / 1
 getMessageParameters
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 1
156
 getComment
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
6
 getMessageKey
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\MessageGroupProcessing;
5
6use LogFormatter;
7use MediaWiki\Extension\Translate\Utilities\Utilities;
8use MediaWiki\MediaWikiServices;
9use MediaWiki\Title\Title;
10use Message;
11
12/**
13 * Class for formatting translatable bundle logs.
14 * @author Niklas Laxström
15 * @license GPL-2.0-or-later
16 */
17class TranslatableBundleLogFormatter extends LogFormatter {
18    protected function getMessageParameters(): array {
19        $params = parent::getMessageParameters();
20        $legacy = $this->entry->getParameters();
21
22        $type = $this->entry->getFullType();
23        switch ( $type ) {
24            case 'pagetranslation/mark':
25                $revision = $legacy['revision'];
26
27                $targetPage = $this->makePageLink(
28                    $this->entry->getTarget(),
29                    [ 'oldid' => $revision ]
30                );
31
32                $params[2] = Message::rawParam( $targetPage );
33                break;
34
35            case 'pagetranslation/moveok':
36            case 'pagetranslation/movenok':
37            case 'pagetranslation/deletefnok':
38            case 'pagetranslation/deletelnok':
39            case 'messagebundle/moveok':
40            case 'messagebundle/movenok':
41                $target = $legacy['target'];
42
43                $moveTarget = $this->makePageLink( Title::newFromText( $target ) );
44                $params[3] = Message::rawParam( $moveTarget );
45                break;
46
47            case 'pagetranslation/prioritylanguages':
48                $params[3] = $legacy['force'];
49                $languages = $legacy['languages'];
50                if ( $languages !== false ) {
51                    $lang = $this->context->getLanguage();
52                    $inLanguage = $lang->getCode();
53
54                    $languages = array_map(
55                        static function ( string $code ) use ( $inLanguage ): string {
56                            return Utilities::getLanguageName( trim( $code ), $inLanguage );
57                        },
58                        preg_split( '/,/', $languages, -1, PREG_SPLIT_NO_EMPTY )
59                    );
60
61                    $params[4] = $lang->listToText( $languages );
62                }
63                break;
64
65            case 'pagetranslation/associate':
66            case 'pagetranslation/dissociate':
67                $params[3] = $legacy['aggregategroup'];
68                break;
69        }
70
71        return $params;
72    }
73
74    public function getComment(): string {
75        $legacy = $this->entry->getParameters();
76        if ( isset( $legacy['reason'] ) ) {
77            $commentFormatter = MediaWikiServices::getInstance()->getCommentFormatter();
78            $comment = $commentFormatter->formatBlock( (string)$legacy['reason'] );
79
80            // No hard coded spaces thanx
81            return ltrim( $comment );
82        }
83
84        return parent::getComment();
85    }
86
87    protected function getMessageKey(): string {
88        $key = parent::getMessageKey();
89        $type = $this->entry->getFullType();
90
91        // logentry-pagetranslation-prioritylanguages-unset
92        // logentry-pagetranslation-prioritylanguages-force
93        if ( $type === 'pagetranslation/prioritylanguages' ) {
94            $params = $this->getMessageParameters();
95            if ( !isset( $params[4] ) ) {
96                $key .= '-unset';
97            } elseif ( $params['3'] === 'on' ) {
98                $key .= '-force';
99            }
100        }
101
102        return $key;
103    }
104}