Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 48 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 1 |
BallotStatus | |
0.00% |
0 / 48 |
|
0.00% |
0 / 4 |
240 | |
0.00% |
0 / 1 |
spFatal | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
2 | |||
getIds | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
spGetHTML | |
0.00% |
0 / 34 |
|
0.00% |
0 / 1 |
90 | |||
spGetMessageText | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
20 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Extension\SecurePoll\Ballots; |
4 | |
5 | use MediaWiki\Status\Status; |
6 | use OOUI\ButtonInputWidget; |
7 | use OOUI\MessageWidget; |
8 | use Wikimedia\Message\MessageParam; |
9 | use Wikimedia\Message\MessageSpecifier; |
10 | |
11 | class BallotStatus extends Status { |
12 | /** @var true[] */ |
13 | public $ids = []; |
14 | |
15 | /** |
16 | * @param string|MessageSpecifier $message |
17 | * @param string $id |
18 | * @param bool $localized |
19 | * @phpcs:ignore Generic.Files.LineLength |
20 | * @param MessageParam|MessageSpecifier|string|int|float|list<MessageParam|MessageSpecifier|string|int|float> ...$params |
21 | */ |
22 | public function spFatal( $message, $id, $localized, ...$params ) { |
23 | $this->errors[] = [ |
24 | 'type' => 'error', |
25 | 'securepoll-id' => $id, |
26 | 'message' => $message, |
27 | 'params' => $params, |
28 | 'localized' => $localized |
29 | ]; |
30 | $this->ids[$id] = true; |
31 | $this->ok = false; |
32 | } |
33 | |
34 | /** |
35 | * @return true[] |
36 | */ |
37 | public function getIds() { |
38 | return $this->ids; |
39 | } |
40 | |
41 | /** |
42 | * @param array $usedIds |
43 | * @return string |
44 | */ |
45 | public function spGetHTML( $usedIds ) { |
46 | if ( !$this->errors ) { |
47 | return ''; |
48 | } |
49 | $s = '<ul>'; |
50 | $usedIds = []; |
51 | $text = ''; |
52 | foreach ( $this->errors as $error ) { |
53 | if ( !isset( $error['localized'] ) || !$error['localized'] ) { |
54 | $text = wfMessage( $error['message'], $error['params'] )->text(); |
55 | if ( isset( $error['securepoll-id'] ) ) { |
56 | $id = $error['securepoll-id']; |
57 | if ( !isset( $usedIds[$id] ) ) { |
58 | $name = explode( '_', urlencode( "$id" ) ); |
59 | $usedIds[ $name[0] . '_' . $name[1] ][] = urlencode( "$id" ); |
60 | } |
61 | } elseif ( !isset( $error['securepoll-id'] ) ) { |
62 | $s .= new MessageWidget( [ |
63 | 'type' => 'error', |
64 | 'label' => htmlspecialchars( $text ) |
65 | ] ) . "\n"; |
66 | } |
67 | } |
68 | } |
69 | |
70 | if ( count( $usedIds ) > 0 ) { |
71 | $error = new MessageWidget( [ |
72 | 'type' => 'error', |
73 | 'label' => htmlspecialchars( $text ) |
74 | ] ); |
75 | $buttonWidget = new ButtonInputWidget( [ |
76 | 'label' => wfMessage( 'securepoll-ballot-show-warnings' )->text(), |
77 | 'classes' => [ 'highlight-warnings-button' ], |
78 | 'infusable' => true, |
79 | 'data' => json_encode( $usedIds ), |
80 | 'showErrors' => false |
81 | ] ); |
82 | $error->appendContent( $buttonWidget ); |
83 | $s .= $error . "<br>"; |
84 | } |
85 | |
86 | $s .= "</ul>\n"; |
87 | return $s; |
88 | } |
89 | |
90 | /** |
91 | * @param string $id |
92 | * @return string |
93 | */ |
94 | public function spGetMessageText( $id ) { |
95 | foreach ( $this->errors as $error ) { |
96 | if ( !isset( $error['securepoll-id'] ) || $error['securepoll-id'] !== $id ) { |
97 | continue; |
98 | } |
99 | |
100 | return wfMessage( $error['message'], $error['params'] )->text(); |
101 | } |
102 | } |
103 | } |