1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
<?php
namespace MediaWiki\CommentFormatter;
use MediaWiki\Permissions\Authority;
use MediaWiki\Revision\RevisionRecord;
/**
* Fluent interface for revision comment batch inputs.
*
* @since 1.38
*/
class RevisionCommentBatch {
/** @var CommentFormatter */
private $formatter;
/** @var Authority|null */
private $authority;
/** @var iterable<RevisionRecord> */
private $revisions;
/** @var bool */
private $samePage = false;
/** @var bool */
private $isPublic = false;
/** @var bool */
private $useParentheses = false;
/** @var bool */
private $indexById = false;
public function __construct( CommentFormatter $formatter ) {
$this->formatter = $formatter;
}
/**
* Set the authority to use for permission checks. This must be called
* prior to execute().
*
* @param Authority $authority
* @return $this
*/
public function authority( Authority $authority ) {
$this->authority = $authority;
return $this;
}
/**
* Set the revisions to extract comments from.
*
* @param iterable<RevisionRecord> $revisions
* @return $this
*/
public function revisions( $revisions ) {
$this->revisions = $revisions;
return $this;
}
/**
* Set the same-page option. If this is true, section links and fragment-
* only wikilinks are rendered with an href that is a fragment-only URL.
* If it is false (the default), such links go to the self link title.
*
* This is equivalent to $local in the old Linker methods.
*
* @param bool $samePage
* @return $this
*/
public function samePage( $samePage = true ) {
$this->samePage = $samePage;
return $this;
}
/**
* Wrap the comment with parentheses. This has no effect if the useBlock
* option is not enabled.
*
* Unlike the legacy Linker::commentBlock(), this option defaults to false
* if this method is not called, since that better preserves the fluent
* style.
*
* @param bool $useParentheses
* @return $this
*/
public function useParentheses( $useParentheses = true ) {
$this->useParentheses = $useParentheses;
return $this;
}
/**
* If this is true, show the comment only if all users can see it.
*
* We'll call it hideIfDeleted() since public is a keyword and isPublic()
* has an inappropriate verb.
*
* @param bool $isPublic
* @return $this
*/
public function hideIfDeleted( $isPublic = true ) {
$this->isPublic = $isPublic;
return $this;
}
/**
* If this is true, the array keys in the return value will be the revision
* IDs instead of the keys from the input array.
*
* @param bool $indexById
* @return $this
*/
public function indexById( $indexById = true ) {
$this->indexById = $indexById;
return $this;
}
/**
* Format the comments.
*
* @return string[] Formatted comments. The array key is either the field
* value specified by indexField(), or if that was not called, it is the
* key from the array passed to revisions().
*/
public function execute() {
return $this->formatter->formatRevisions(
$this->revisions,
$this->authority,
$this->samePage,
$this->isPublic,
$this->useParentheses,
$this->indexById
);
}
}
|