Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 43
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 / 43
0.00% covered (danger)
0.00%
0 / 4
272
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 / 26
0.00% covered (danger)
0.00%
0 / 1
132
1<?php
2
3use MediaWiki\Language\Language;
4use MediaWiki\Logging\LogFormatter;
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, $this->context->getLanguage() );
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 Language $langObj Language object (UI language for log display, content language for edit summary)
55     */
56    public static function stabilitySettings( array $pars, Language $langObj ): string {
57        $set = [];
58        $settings = '';
59        // Protection-based or deferral-based configs (precedence never changed)...
60        if ( !isset( $pars['precedence'] ) ) {
61            if ( isset( $pars['autoreview'] ) && strlen( $pars['autoreview'] ) ) {
62                $set[] = wfMessage( 'stable-log-restriction', $pars['autoreview'] )->inLanguage(
63                    $langObj )->escaped();
64            }
65        // General case...
66        } else {
67            // Default version shown on page view
68            if ( isset( $pars['override'] ) ) {
69                // Give grep a chance to find the usages:
70                // stabilization-def-short-0, stabilization-def-short-1
71                $set[] = wfMessage( 'stabilization-def-short' )->inLanguage( $langObj )->escaped() .
72                    wfMessage( 'colon-separator' )->inLanguage( $langObj )->escaped() .
73                    wfMessage( 'stabilization-def-short-' . $pars['override'] )
74                        ->inLanguage( $langObj )->escaped();
75            }
76            // Autoreview restriction
77            if ( isset( $pars['autoreview'] ) && strlen( $pars['autoreview'] ) ) {
78                $set[] = 'autoreview=' . $pars['autoreview'];
79            }
80        }
81        if ( $set ) {
82            $settings = '[' . $langObj->commaList( $set ) . ']';
83        }
84        # Expiry is a MW timestamp or 'infinity'
85        if ( isset( $pars['expiry'] ) && $pars['expiry'] != 'infinity' ) {
86            $expiry_description = wfMessage( 'stabilize-expiring',
87                $langObj->timeanddate( $pars['expiry'], false, false ),
88                $langObj->date( $pars['expiry'], false, false ),
89                $langObj->time( $pars['expiry'], false, false )
90            )->inLanguage( $langObj )->escaped();
91            if ( $settings != '' ) {
92                $settings .= ' ';
93            }
94            $settings .= wfMessage( 'parentheses' )->rawParams( $expiry_description )
95                ->inLanguage( $langObj )->escaped();
96        }
97        return $settings;
98    }
99}