Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 45
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 / 45
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 / 28
0.00% covered (danger)
0.00%
0 / 1
156
1<?php
2
3use MediaWiki\MediaWikiServices;
4use MediaWiki\Title\Title;
5
6class FlaggedRevsStableLogFormatter extends LogFormatter {
7
8    /**
9     * @inheritDoc
10     */
11    protected function getMessageKey(): string {
12        return 'logentry-stable-' . $this->entry->getSubtype();
13    }
14
15    /**
16     * @inheritDoc
17     */
18    protected function getMessageParameters(): array {
19        $params = parent::getMessageParameters();
20        $action = $this->entry->getSubtype();
21        if ( $action !== 'move_stable' ) {
22            # Add setting change description as a param
23            $settings = $this->entry->getParameters();
24            $settings = $this->entry->isLegacy() ? FlaggedRevsLog::expandParams( $settings ) : $settings;
25            $params[3] = self::stabilitySettings( $settings, false );
26        } else {
27            $oldName = $this->makePageLink( Title::newFromText( $params[3] ), [ 'redirect' => 'no' ] );
28            $params[3] = Message::rawParam( $oldName );
29        }
30        return $params;
31    }
32
33    /**
34     * @inheritDoc
35     */
36    public function getActionLinks(): string {
37        # Add history link showing edits right before the config change
38        $hist = $this->getLinkRenderer()->makeLink(
39            $this->entry->getTarget(),
40            $this->msg( 'hist' )->text(),
41            [],
42            [ 'action' => 'history', 'offset' => $this->entry->getTimestamp() ]
43        );
44        return $this->msg( 'parentheses' )->rawParams( $hist )->escaped();
45    }
46
47    /**
48     * Make a list of stability settings for display
49     * Also used for null edit summary
50     *
51     * @param array $pars assoc array
52     * @param bool $forContent
53     */
54    public static function stabilitySettings( array $pars, bool $forContent ): string {
55        global $wgLang;
56        $set = [];
57        $settings = '';
58        $langObj = $forContent ? MediaWikiServices::getInstance()->getContentLanguage() : $wgLang;
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}