68 if ( $this->parsedParametersDeleteLog !==
null ) {
69 return $this->parsedParametersDeleteLog;
72 $params = parent::getMessageParameters();
73 $subtype = $this->entry->getSubtype();
74 if ( in_array( $subtype, [
'event',
'revision' ] ) ) {
80 ( $subtype ===
'event' && count( $params ) === 6 )
82 $subtype ===
'revision' && isset( $params[3] ) && count( $params ) === 7
83 && in_array( $params[3], [
'revision',
'archive',
'oldimage',
'filearchive' ] )
87 $paramStart = $subtype ===
'revision' ? 4 : 3;
91 [ $hid, $unhid, $extra ] = RevisionDeleter::getChanges( $new, $old );
94 foreach ( $hid as $v ) {
95 $changes[] = $this->
msg(
"$v-hid" )->plain();
99 foreach ( $unhid as $v ) {
100 $changes[] = $this->
msg(
"$v-unhid" )->plain();
102 foreach ( $extra as $v ) {
103 $changes[] = $this->
msg( $v )->plain();
105 $changeText = $this->context->getLanguage()->listToText( $changes );
107 $newParams = array_slice( $params, 0, 3 );
108 $newParams[3] = $changeText;
109 $ids = is_array( $params[$paramStart] )
110 ? $params[$paramStart]
111 : explode(
',', $params[$paramStart] );
112 $newParams[4] = $this->context->getLanguage()->formatNum( count( $ids ) );
114 $this->parsedParametersDeleteLog = $newParams;
115 return $this->parsedParametersDeleteLog;
117 $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
118 return $this->parsedParametersDeleteLog;
120 } elseif ( $subtype ===
'restore' ) {
121 $rawParams = $this->entry->getParameters();
122 if ( isset( $rawParams[
':assoc:count'] ) ) {
124 foreach ( $rawParams[
':assoc:count'] as $type => $count ) {
127 $countList[] = $this->context->msg(
'restore-count-' . $type )
128 ->numParams( $count )->plain();
131 $params[3] = $this->context->getLanguage()->listToText( $countList );
135 $this->parsedParametersDeleteLog = $params;
136 return $this->parsedParametersDeleteLog;
152 if ( !$this->context->getAuthority()->isAllowed(
'deletedhistory' )
158 switch ( $this->entry->getSubtype() ) {
161 case 'delete_redir2':
162 if ( $this->context->getAuthority()->isAllowed(
'undelete' ) ) {
163 $message =
'undeletelink';
165 $message =
'undeleteviewlink';
167 $revert = $linkRenderer->makeKnownLink(
169 $this->
msg( $message )->text(),
171 [
'target' => $this->entry->getTarget()->getPrefixedDBkey() ]
174 return $this->
msg(
'parentheses' )->rawParams( $revert )->escaped();
178 if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
185 $ids = is_array( $params[4] )
187 : explode(
',', $params[4] );
192 if ( count( $ids ) == 1 ) {
194 if ( $key ==
'oldid' || $key ==
'revision' ) {
195 $links[] = $linkRenderer->makeKnownLink(
196 $this->entry->getTarget(),
197 $this->msg(
'diff' )->text(),
200 'diff' => intval( $ids[0] ),
205 } elseif ( $key ==
'artimestamp' || $key ==
'archive' ) {
206 $links[] = $linkRenderer->makeKnownLink(
208 $this->
msg(
'diff' )->text(),
211 'target' => $this->entry->getTarget()->getPrefixedDBkey(),
213 'timestamp' => $ids[0]
220 $links[] = $linkRenderer->makeKnownLink(
222 $this->
msg(
'revdel-restore' )->text(),
225 'target' => $this->entry->getTarget()->getPrefixedText(),
227 'ids' => implode(
',', $ids ),
231 return $this->
msg(
'parentheses' )->rawParams(
232 $this->context->getLanguage()->pipeList( $links ) )->escaped();
236 if ( !isset( $params[3] ) ) {
241 if ( is_array( $query ) ) {
242 $query = implode(
',', $query );
245 $revert = $linkRenderer->makeKnownLink(
247 $this->
msg(
'revdel-restore' )->text(),
250 'target' => $this->entry->getTarget()->getPrefixedText(),
256 return $this->
msg(
'parentheses' )->rawParams( $revert )->escaped();
266 $subtype = $this->entry->getSubtype();
267 if ( in_array( $subtype, [
'event',
'revision' ] ) ) {
269 if ( $subtype ===
'event' ) {
270 array_unshift( $rawParams,
'logging' );
278 '4::ids' =>
'5::ids',
279 '5::ofield' =>
'6::ofield',
280 '6::nfield' =>
'7::nfield',
282 foreach ( $map as $index => $key ) {
283 if ( isset( $rawParams[$index] ) ) {
284 $rawParams[$key] = $rawParams[$index];
285 unset( $rawParams[$index] );
289 if ( !is_array( $rawParams[
'5::ids'] ) ) {
290 $rawParams[
'5::ids'] = explode(
',', $rawParams[
'5::ids'] );
294 '::type' => $rawParams[
'4::type'],
295 ':array:ids' => $rawParams[
'5::ids'],
299 RevisionRecord::DELETED_TEXT =>
'content',
300 RevisionRecord::DELETED_COMMENT =>
'comment',
301 RevisionRecord::DELETED_USER =>
'user',
302 RevisionRecord::DELETED_RESTRICTED =>
'restricted',
305 if ( isset( $rawParams[
'6::ofield'] ) ) {
307 $params[
':assoc:old'] = [
'bitmask' => $old ];
308 foreach ( $fields as $bit => $key ) {
309 $params[
':assoc:old'][$key] = (bool)( $old & $bit );
312 if ( isset( $rawParams[
'7::nfield'] ) ) {
314 $params[
':assoc:new'] = [
'bitmask' => $new ];
315 foreach ( $fields as $bit => $key ) {
316 $params[
':assoc:new'][$key] = (bool)( $new & $bit );
319 } elseif ( $subtype ===
'restore' ) {
321 if ( isset( $rawParams[
':assoc:count'] ) ) {
322 $params[
':assoc:count'] = $rawParams[
':assoc:count'];