12use InvalidArgumentException;
30 private const ALLOWED_TYPES = [
32 'class' => RevDelRevisionList::class,
34 'DBLoadBalancerFactory',
38 'DomainEventDispatcher',
39 'ChangeTagsFormatter',
43 'class' => RevDelArchiveList::class,
45 'DBLoadBalancerFactory',
49 'DomainEventDispatcher',
50 'ChangeTagsFormatter',
54 'class' => RevDelFileList::class,
56 'DBLoadBalancerFactory',
62 'class' => RevDelArchivedFileList::class,
64 'DBLoadBalancerFactory',
70 'class' => RevDelLogList::class,
72 'DBLoadBalancerFactory',
74 'LogFormatterFactory',
75 'ChangeTagsFormatter',
81 private const DEPRECATED_TYPE_MAP = [
82 'oldid' =>
'revision',
83 'artimestamp' =>
'archive',
84 'oldimage' =>
'oldimage',
85 'fileid' =>
'filearchive',
96 return array_keys( self::ALLOWED_TYPES );
107 if ( isset( self::DEPRECATED_TYPE_MAP[$typeName] ) ) {
108 $typeName = self::DEPRECATED_TYPE_MAP[$typeName];
110 return isset( self::ALLOWED_TYPES[$typeName] ) ? $typeName :
null;
126 throw new InvalidArgumentException( __METHOD__ .
": Unknown RevDel type '$typeName'" );
128 $spec = self::ALLOWED_TYPES[$typeName];
131 return $objectFactory->createObject(
134 'extraArgs' => [ $context, $page, $ids ],
135 'assertClass' => RevDelList::class,
151 protected static function checkItem( $desc, $field, $diff, $new, &$arr ) {
152 if ( $diff & $field ) {
153 $arr[( $new & $field ) ? 0 : 1][] = $desc;
177 $ret = [ 0 => [], 1 => [], 2 => [] ];
180 RevisionRecord::DELETED_TEXT, $diff, $n, $ret );
182 RevisionRecord::DELETED_COMMENT, $diff, $n, $ret );
184 RevisionRecord::DELETED_USER, $diff, $n, $ret );
186 if ( $diff & RevisionRecord::DELETED_RESTRICTED ) {
187 if ( $n & RevisionRecord::DELETED_RESTRICTED ) {
188 $ret[2][] =
'revdelete-restricted';
190 $ret[2][] =
'revdelete-unrestricted';
207 $class = self::ALLOWED_TYPES[$typeName][
'class'];
208 return $class::getRelationType();
222 $class = self::ALLOWED_TYPES[$typeName][
'class'];
223 return $class::getRestriction();
237 $class = self::ALLOWED_TYPES[$typeName][
'class'];
238 return $class::getRevdelConstant();
254 $class = self::ALLOWED_TYPES[$typeName][
'class'];
255 return $class::suggestTarget(
275 $newBits = $oldfield;
276 foreach ( $bitPars as $const => $val ) {
281 } elseif ( $val == 0 ) {
290class_alias( RevisionDeleter::class,
'RevisionDeleter' );
Interface for objects which can provide a MediaWiki context on request.
Interface for objects (potentially) representing an editable wiki page.