Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
94.74% covered (success)
94.74%
18 / 19
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
PageLangLogFormatter
94.74% covered (success)
94.74%
18 / 19
50.00% covered (danger)
50.00%
1 / 2
6.01
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getMessageParameters
94.12% covered (success)
94.12%
16 / 17
0.00% covered (danger)
0.00%
0 / 1
5.01
1<?php
2/**
3 * Formatter for changelang log entries.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * http://www.gnu.org/copyleft/gpl.html
19 *
20 * @file
21 * @author Kunal Grover
22 * @license GPL-2.0-or-later
23 * @since 1.24
24 */
25
26use MediaWiki\Languages\LanguageNameUtils;
27
28/**
29 * This class formats language change log entries.
30 *
31 * @since 1.24
32 */
33class PageLangLogFormatter extends LogFormatter {
34    private LanguageNameUtils $languageNameUtils;
35
36    public function __construct(
37        LogEntry $entry,
38        LanguageNameUtils $languageNameUtils
39    ) {
40        parent::__construct( $entry );
41        $this->languageNameUtils = $languageNameUtils;
42    }
43
44    protected function getMessageParameters() {
45        // Get the user language for displaying language names
46        $userLang = $this->context->getLanguage()->getCode();
47        $params = parent::getMessageParameters();
48
49        // Get the language codes from log
50        $oldLang = $params[3];
51        $kOld = strrpos( $oldLang, '[' );
52        if ( $kOld ) {
53            $oldLang = substr( $oldLang, 0, $kOld );
54        }
55
56        $newLang = $params[4];
57        $kNew = strrpos( $newLang, '[' );
58        if ( $kNew ) {
59            $newLang = substr( $newLang, 0, $kNew );
60        }
61
62        // Convert language codes to names in user language
63        $logOld = $this->languageNameUtils->getLanguageName( $oldLang, $userLang )
64            . ' (' . $oldLang . ')';
65        $logNew = $this->languageNameUtils->getLanguageName( $newLang, $userLang )
66            . ' (' . $newLang . ')';
67
68        // Add the default message to languages if required
69        $params[3] = !$kOld ? $logOld : $logOld . ' [' . $this->msg( 'default' ) . ']';
70        $params[4] = !$kNew ? $logNew : $logNew . ' [' . $this->msg( 'default' ) . ']';
71        return $params;
72    }
73}