54 if ( $this->parsedParametersDeleteLog !==
null ) {
55 return $this->parsedParametersDeleteLog;
58 $params = parent::getMessageParameters();
59 $subtype = $this->entry->getSubtype();
60 if ( in_array( $subtype, [
'event',
'revision' ] ) ) {
66 ( $subtype ===
'event' && count( $params ) === 6 )
68 $subtype ===
'revision' && isset( $params[3] ) && count( $params ) === 7
69 && in_array( $params[3], [
'revision',
'archive',
'oldimage',
'filearchive' ] )
73 $paramStart = $subtype ===
'revision' ? 4 : 3;
77 [ $hid, $unhid, $extra ] = RevisionDeleter::getChanges( $new, $old );
80 foreach ( $hid as $v ) {
81 $changes[] = $this->
msg(
"$v-hid" )->plain();
85 foreach ( $unhid as $v ) {
86 $changes[] = $this->
msg(
"$v-unhid" )->plain();
88 foreach ( $extra as $v ) {
89 $changes[] = $this->
msg( $v )->plain();
91 $changeText = $this->context->getLanguage()->listToText( $changes );
93 $newParams = array_slice( $params, 0, 3 );
94 $newParams[3] = $changeText;
95 $ids = is_array( $params[$paramStart] )
96 ? $params[$paramStart]
97 : explode(
',', $params[$paramStart] );
98 $newParams[4] = $this->context->getLanguage()->formatNum( count( $ids ) );
100 $this->parsedParametersDeleteLog = $newParams;
101 return $this->parsedParametersDeleteLog;
103 $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
104 return $this->parsedParametersDeleteLog;
106 } elseif ( $subtype ===
'restore' ) {
107 $rawParams = $this->entry->getParameters();
108 if ( isset( $rawParams[
':assoc:count'] ) ) {
110 foreach ( $rawParams[
':assoc:count'] as $type => $count ) {
113 $countList[] = $this->context->msg(
'restore-count-' . $type )
114 ->numParams( $count )->plain();
117 $params[3] = $this->context->getLanguage()->listToText( $countList );
121 $this->parsedParametersDeleteLog = $params;
122 return $this->parsedParametersDeleteLog;
138 $linkRenderer = $this->getLinkRenderer();
139 if ( !$this->context->getAuthority()->isAllowed(
'deletedhistory' )
145 switch ( $this->entry->getSubtype() ) {
148 case 'delete_redir2':
149 if ( $this->context->getAuthority()->isAllowed(
'undelete' ) ) {
150 $message =
'undeletelink';
152 $message =
'undeleteviewlink';
154 $revert = $linkRenderer->makeKnownLink(
156 $this->msg( $message )->text(),
158 [
'target' => $this->entry->getTarget()->getPrefixedDBkey() ]
161 return $this->msg(
'parentheses' )->rawParams( $revert )->escaped();
164 $params = $this->extractParameters();
165 if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
172 $ids = is_array( $params[4] )
174 : explode(
',', $params[4] );
179 if ( count( $ids ) == 1 ) {
181 if ( $key ==
'oldid' || $key ==
'revision' ) {
182 $links[] = $linkRenderer->makeKnownLink(
183 $this->entry->getTarget(),
184 $this->msg(
'diff' )->text(),
187 'diff' => intval( $ids[0] ),
192 } elseif ( $key ==
'artimestamp' || $key ==
'archive' ) {
193 $links[] = $linkRenderer->makeKnownLink(
195 $this->msg(
'diff' )->text(),
198 'target' => $this->entry->getTarget()->getPrefixedDBkey(),
200 'timestamp' => $ids[0]
207 $links[] = $linkRenderer->makeKnownLink(
209 $this->msg(
'revdel-restore' )->text(),
212 'target' => $this->entry->getTarget()->getPrefixedText(),
214 'ids' => implode(
',', $ids ),
218 return $this->msg(
'parentheses' )->rawParams(
219 $this->context->getLanguage()->pipeList( $links ) )->escaped();
222 $params = $this->extractParameters();
223 if ( !isset( $params[3] ) ) {
228 if ( is_array( $query ) ) {
229 $query = implode(
',', $query );
232 $revert = $linkRenderer->makeKnownLink(
234 $this->msg(
'revdel-restore' )->text(),
237 'target' => $this->entry->getTarget()->getPrefixedText(),
243 return $this->msg(
'parentheses' )->rawParams( $revert )->escaped();
251 $entry = $this->entry;
254 $subtype = $this->entry->getSubtype();
255 if ( in_array( $subtype, [
'event',
'revision' ] ) ) {
256 $rawParams = $entry->getParameters();
257 if ( $subtype ===
'event' ) {
258 array_unshift( $rawParams,
'logging' );
266 '4::ids' =>
'5::ids',
267 '5::ofield' =>
'6::ofield',
268 '6::nfield' =>
'7::nfield',
270 foreach ( $map as $index => $key ) {
271 if ( isset( $rawParams[$index] ) ) {
272 $rawParams[$key] = $rawParams[$index];
273 unset( $rawParams[$index] );
277 if ( !is_array( $rawParams[
'5::ids'] ) ) {
278 $rawParams[
'5::ids'] = explode(
',', $rawParams[
'5::ids'] );
282 '::type' => $rawParams[
'4::type'],
283 ':array:ids' => $rawParams[
'5::ids'],
287 RevisionRecord::DELETED_TEXT =>
'content',
288 RevisionRecord::DELETED_COMMENT =>
'comment',
289 RevisionRecord::DELETED_USER =>
'user',
290 RevisionRecord::DELETED_RESTRICTED =>
'restricted',
293 if ( isset( $rawParams[
'6::ofield'] ) ) {
294 $old = $this->parseBitField( $rawParams[
'6::ofield'] );
295 $params[
':assoc:old'] = [
'bitmask' => $old ];
296 foreach ( $fields as $bit => $key ) {
297 $params[
':assoc:old'][$key] = (bool)( $old & $bit );
300 if ( isset( $rawParams[
'7::nfield'] ) ) {
301 $new = $this->parseBitField( $rawParams[
'7::nfield'] );
302 $params[
':assoc:new'] = [
'bitmask' => $new ];
303 foreach ( $fields as $bit => $key ) {
304 $params[
':assoc:new'][$key] = (bool)( $new & $bit );
307 } elseif ( $subtype ===
'restore' ) {
308 $rawParams = $entry->getParameters();
309 if ( isset( $rawParams[
':assoc:count'] ) ) {
310 $params[
':assoc:count'] = $rawParams[
':assoc:count'];