Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 44
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
FlaggedRevsStableLogFormatter
0.00% covered (danger)
0.00%
0 / 44
0.00% covered (danger)
0.00%
0 / 4
306
0.00% covered (danger)
0.00%
0 / 1
 getMessageKey
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMessageParameters
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
12
 getActionLinks
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
 stabilitySettings
0.00% covered (danger)
0.00%
0 / 27
0.00% covered (danger)
0.00%
0 / 1
156
1<?php
2
3use MediaWiki\Logging\LogFormatter;
4use MediaWiki\MediaWikiServices;
5use MediaWiki\Message\Message;
6use MediaWiki\Title\Title;
7
8class FlaggedRevsStableLogFormatter extends LogFormatter {
9
10    /**
11     * @inheritDoc
12     */
13    protected function getMessageKey(): string {
14        return 'logentry-stable-' . $this->entry->getSubtype();
15    }
16
17    /**
18     * @inheritDoc
19     */
20    protected function getMessageParameters(): array {
21        $params = parent::getMessageParameters();
22        $action = $this->entry->getSubtype();
23        if ( $action !== 'move_stable' ) {
24            # Add setting change description as a param
25            $settings = $this->entry->getParameters();
26            $settings = $this->entry->isLegacy() ? FlaggedRevsLog::expandParams( $settings ) : $settings;
27            $params[3] = self::stabilitySettings( $settings, false );
28        } else {
29            $oldName = $this->makePageLink( Title::newFromText( $params[3] ), [ 'redirect' => 'no' ] );
30            $params[3] = Message::rawParam( $oldName );
31        }
32        return $params;
33    }
34
35    /**
36     * @inheritDoc
37     */
38    public function getActionLinks(): string {
39        # Add history link showing edits right before the config change
40        $hist = $this->getLinkRenderer()->makeLink(
41            $this->entry->getTarget(),
42            $this->msg( 'hist' )->text(),
43            [],
44            [ 'action' => 'history', 'offset' => $this->entry->getTimestamp() ]
45        );
46        return $this->msg( 'parentheses' )->rawParams( $hist )->escaped();
47    }
48
49    /**
50     * Make a list of stability settings for display
51     * Also used for null edit summary
52     *
53     * @param array $pars assoc array
54     * @param bool $forContent
55     */
56    public static function stabilitySettings( array $pars, bool $forContent ): string {
57        global $wgLang;
58        $set = [];
59        $settings = '';
60        $langObj = $forContent ? MediaWikiServices::getInstance()->getContentLanguage() : $wgLang;
61        // Protection-based or deferral-based configs (precedence never changed)...
62        if ( !isset( $pars['precedence'] ) ) {
63            if ( isset( $pars['autoreview'] ) && strlen( $pars['autoreview'] ) ) {
64                $set[] = wfMessage( 'stable-log-restriction', $pars['autoreview'] )->inLanguage(
65                    $langObj )->escaped();
66            }
67        // General case...
68        } else {
69            // Default version shown on page view
70            if ( isset( $pars['override'] ) ) {
71                // Give grep a chance to find the usages:
72                // stabilization-def-short-0, stabilization-def-short-1
73                $set[] = wfMessage( 'stabilization-def-short' )->inLanguage( $langObj )->escaped() .
74                    wfMessage( 'colon-separator' )->inLanguage( $langObj )->escaped() .
75                    wfMessage( 'stabilization-def-short-' . $pars['override'] )
76                        ->inLanguage( $langObj )->escaped();
77            }
78            // Autoreview restriction
79            if ( isset( $pars['autoreview'] ) && strlen( $pars['autoreview'] ) ) {
80                $set[] = 'autoreview=' . $pars['autoreview'];
81            }
82        }
83        if ( $set ) {
84            $settings = '[' . $langObj->commaList( $set ) . ']';
85        }
86        # Expiry is a MW timestamp or 'infinity'
87        if ( isset( $pars['expiry'] ) && $pars['expiry'] != 'infinity' ) {
88            $expiry_description = wfMessage( 'stabilize-expiring',
89                $langObj->timeanddate( $pars['expiry'], false, false ),
90                $langObj->date( $pars['expiry'], false, false ),
91                $langObj->time( $pars['expiry'], false, false )
92            )->inLanguage( $langObj )->escaped();
93            if ( $settings != '' ) {
94                $settings .= ' ';
95            }
96            $settings .= wfMessage( 'parentheses' )->rawParams( $expiry_description )
97                ->inLanguage( $langObj )->escaped();
98        }
99        return $settings;
100    }
101}