Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
FlaggedRevsReviewLogFormatter
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 3
110
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getMessageKey
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
 getActionLinks
0.00% covered (danger)
0.00%
0 / 31
0.00% covered (danger)
0.00%
0 / 1
42
1<?php
2
3use MediaWiki\Revision\RevisionLookup;
4
5class FlaggedRevsReviewLogFormatter extends LogFormatter {
6    private bool $isDeapproval = false;
7    private RevisionLookup $revisionLookup;
8
9    public function __construct(
10        LogEntry $entry,
11        RevisionLookup $revisionLookup
12    ) {
13        parent::__construct( $entry );
14        $this->revisionLookup = $revisionLookup;
15    }
16
17    /**
18     * @inheritDoc
19     */
20    protected function getMessageKey(): string {
21        $rawAction = $this->entry->getSubtype();
22        if ( !str_starts_with( $rawAction, 'a' ) ) {
23            // unapprove, unapprove2
24            $this->isDeapproval = true;
25            return 'logentry-review-unapprove';
26        } elseif ( str_ends_with( $rawAction, 'a' ) ) {
27            // approve-a, approve2-a, approve-ia, approve2-ia
28            return 'logentry-review-approve-auto';
29        } else {
30            // approve, approve2, approve-i, approve2-i
31            return 'logentry-review-approve';
32        }
33    }
34
35    /**
36     * @inheritDoc
37     */
38    public function getActionLinks(): string {
39        $title = $this->entry->getTarget();
40        $params = $this->entry->getParameters();
41        $links = '';
42        # Show link to page with oldid=x as well as the diff to the former stable rev.
43        # Param format is <rev id, last stable id, rev timestamp>.
44        if ( isset( $params[0] ) ) {
45            $revId = (int)$params[0]; // the revision reviewed
46            $oldStable = (int)( $params[1] ?? 0 );
47            # Show diff to changes since the prior stable version
48            if ( $oldStable && $revId > $oldStable ) {
49                $msg = $this->isDeapproval
50                    ? 'review-logentry-diff2' // unreviewed
51                    : 'review-logentry-diff'; // reviewed
52                $links .= '(';
53                $links .= $this->getLinkRenderer()->makeKnownLink(
54                    $title,
55                    $this->msg( $msg )->text(),
56                    [],
57                    [ 'oldid' => $oldStable, 'diff' => $revId ]
58                );
59                $links .= ')';
60            }
61            # Show a diff link to this revision
62            $ts = empty( $params[2] )
63                ? $this->revisionLookup->getTimestampFromId( $revId )
64                : $params[2];
65            $time = $this->context->getLanguage()->timeanddate( $ts, true );
66            $links .= ' (';
67            $links .= $this->getLinkRenderer()->makeKnownLink(
68                $title,
69                $this->msg( 'review-logentry-id', $revId, $time )->text(),
70                [],
71                [ 'oldid' => $revId, 'diff' => 'prev' ]
72            );
73            $links .= ')';
74        }
75        return $links;
76    }
77}