55 if ( $this->parsedParametersDeleteLog !==
null ) {
56 return $this->parsedParametersDeleteLog;
59 $params = parent::getMessageParameters();
60 $subtype = $this->entry->getSubtype();
61 if ( in_array( $subtype, [
'event',
'revision' ] ) ) {
67 ( $subtype ===
'event' && count( $params ) === 6 )
69 $subtype ===
'revision' && isset( $params[3] ) && count( $params ) === 7
70 && in_array( $params[3], [
'revision',
'archive',
'oldimage',
'filearchive' ] )
74 $paramStart = $subtype ===
'revision' ? 4 : 3;
78 [ $hid, $unhid, $extra ] = RevisionDeleter::getChanges( $new, $old );
81 foreach ( $hid as $v ) {
82 $changes[] = $this->
msg(
"$v-hid" )->plain();
86 foreach ( $unhid as $v ) {
87 $changes[] = $this->
msg(
"$v-unhid" )->plain();
89 foreach ( $extra as $v ) {
90 $changes[] = $this->
msg( $v )->plain();
94 $newParams = array_slice( $params, 0, 3 );
95 $newParams[3] = $changeText;
96 $ids = is_array( $params[$paramStart] )
97 ? $params[$paramStart]
98 : explode(
',', $params[$paramStart] );
99 $newParams[4] = $this->context->getLanguage()->formatNum( count( $ids ) );
101 $this->parsedParametersDeleteLog = $newParams;
102 return $this->parsedParametersDeleteLog;
104 $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
105 return $this->parsedParametersDeleteLog;
107 } elseif ( $subtype ===
'restore' ) {
108 $rawParams = $this->entry->getParameters();
109 if ( isset( $rawParams[
':assoc:count'] ) ) {
111 foreach ( $rawParams[
':assoc:count'] as $type => $count ) {
114 $countList[] = $this->context->msg(
'restore-count-' . $type )
115 ->numParams( $count )->plain();
122 $this->parsedParametersDeleteLog = $params;
123 return $this->parsedParametersDeleteLog;
139 $linkRenderer = $this->getLinkRenderer();
140 if ( !$this->context->getAuthority()->isAllowed(
'deletedhistory' )
146 switch ( $this->entry->getSubtype() ) {
149 case 'delete_redir2':
150 if ( $this->context->getAuthority()->isAllowed(
'undelete' ) ) {
151 $message =
'undeletelink';
153 $message =
'undeleteviewlink';
155 $revert = $linkRenderer->makeKnownLink(
157 $this->msg( $message )->text(),
159 [
'target' => $this->entry->getTarget()->getPrefixedDBkey() ]
162 return $this->msg(
'parentheses' )->rawParams( $revert )->escaped();
165 $params = $this->extractParameters();
166 if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
173 $ids = is_array( $params[4] )
175 : explode(
',', $params[4] );
180 if ( count( $ids ) == 1 ) {
182 if ( $key ==
'oldid' || $key ==
'revision' ) {
183 $links[] = $linkRenderer->makeKnownLink(
184 $this->entry->getTarget(),
185 $this->msg(
'diff' )->text(),
188 'diff' => intval( $ids[0] ),
193 } elseif ( $key ==
'artimestamp' || $key ==
'archive' ) {
194 $links[] = $linkRenderer->makeKnownLink(
196 $this->msg(
'diff' )->text(),
199 'target' => $this->entry->getTarget()->getPrefixedDBkey(),
201 'timestamp' => $ids[0]
208 $links[] = $linkRenderer->makeKnownLink(
210 $this->msg(
'revdel-restore' )->text(),
213 'target' => $this->entry->getTarget()->getPrefixedText(),
215 'ids' => implode(
',', $ids ),
219 return $this->msg(
'parentheses' )->rawParams(
220 $this->context->getLanguage()->pipeList( $links ) )->escaped();
223 $params = $this->extractParameters();
224 if ( !isset( $params[3] ) ) {
229 if ( is_array( $query ) ) {
230 $query = implode(
',', $query );
233 $revert = $linkRenderer->makeKnownLink(
235 $this->msg(
'revdel-restore' )->text(),
238 'target' => $this->entry->getTarget()->getPrefixedText(),
244 return $this->msg(
'parentheses' )->rawParams( $revert )->escaped();
252 $entry = $this->entry;
255 $subtype = $this->entry->getSubtype();
256 if ( in_array( $subtype, [
'event',
'revision' ] ) ) {
257 $rawParams = $entry->getParameters();
258 if ( $subtype ===
'event' ) {
259 array_unshift( $rawParams,
'logging' );
267 '4::ids' =>
'5::ids',
268 '5::ofield' =>
'6::ofield',
269 '6::nfield' =>
'7::nfield',
271 foreach ( $map as $index => $key ) {
272 if ( isset( $rawParams[$index] ) ) {
273 $rawParams[$key] = $rawParams[$index];
274 unset( $rawParams[$index] );
278 if ( !is_array( $rawParams[
'5::ids'] ) ) {
279 $rawParams[
'5::ids'] = explode(
',', $rawParams[
'5::ids'] );
283 '::type' => $rawParams[
'4::type'],
284 ':array:ids' => $rawParams[
'5::ids'],
288 RevisionRecord::DELETED_TEXT =>
'content',
289 RevisionRecord::DELETED_COMMENT =>
'comment',
290 RevisionRecord::DELETED_USER =>
'user',
291 RevisionRecord::DELETED_RESTRICTED =>
'restricted',
294 if ( isset( $rawParams[
'6::ofield'] ) ) {
295 $old = $this->parseBitField( $rawParams[
'6::ofield'] );
296 $params[
':assoc:old'] = [
'bitmask' => $old ];
297 foreach ( $fields as $bit => $key ) {
298 $params[
':assoc:old'][$key] = (bool)( $old & $bit );
301 if ( isset( $rawParams[
'7::nfield'] ) ) {
302 $new = $this->parseBitField( $rawParams[
'7::nfield'] );
303 $params[
':assoc:new'] = [
'bitmask' => $new ];
304 foreach ( $fields as $bit => $key ) {
305 $params[
':assoc:new'][$key] = (bool)( $new & $bit );
308 } elseif ( $subtype ===
'restore' ) {
309 $rawParams = $entry->getParameters();
310 if ( isset( $rawParams[
':assoc:count'] ) ) {
311 $params[
':assoc:count'] = $rawParams[
':assoc:count'];