12use InvalidArgumentException;
30 private const ALLOWED_TYPES = [
32 'class' => RevDelRevisionList::class,
34 'DBLoadBalancerFactory',
38 'DomainEventDispatcher'
42 'class' => RevDelArchiveList::class,
44 'DBLoadBalancerFactory',
48 'DomainEventDispatcher'
52 'class' => RevDelFileList::class,
54 'DBLoadBalancerFactory',
60 'class' => RevDelArchivedFileList::class,
62 'DBLoadBalancerFactory',
68 'class' => RevDelLogList::class,
70 'DBLoadBalancerFactory',
72 'LogFormatterFactory',
78 private const DEPRECATED_TYPE_MAP = [
79 'oldid' =>
'revision',
80 'artimestamp' =>
'archive',
81 'oldimage' =>
'oldimage',
82 'fileid' =>
'filearchive',
93 return array_keys( self::ALLOWED_TYPES );
104 if ( isset( self::DEPRECATED_TYPE_MAP[$typeName] ) ) {
105 $typeName = self::DEPRECATED_TYPE_MAP[$typeName];
107 return isset( self::ALLOWED_TYPES[$typeName] ) ? $typeName :
null;
123 throw new InvalidArgumentException( __METHOD__ .
": Unknown RevDel type '$typeName'" );
125 $spec = self::ALLOWED_TYPES[$typeName];
130 return $objectFactory->createObject(
133 'extraArgs' => [ $context, $page, $ids ],
134 'assertClass' => RevDelList::class,
150 protected static function checkItem( $desc, $field, $diff, $new, &$arr ) {
151 if ( $diff & $field ) {
152 $arr[( $new & $field ) ? 0 : 1][] = $desc;
176 $ret = [ 0 => [], 1 => [], 2 => [] ];
179 RevisionRecord::DELETED_TEXT, $diff, $n, $ret );
181 RevisionRecord::DELETED_COMMENT, $diff, $n, $ret );
183 RevisionRecord::DELETED_USER, $diff, $n, $ret );
185 if ( $diff & RevisionRecord::DELETED_RESTRICTED ) {
186 if ( $n & RevisionRecord::DELETED_RESTRICTED ) {
187 $ret[2][] =
'revdelete-restricted';
189 $ret[2][] =
'revdelete-unrestricted';
206 $class = self::ALLOWED_TYPES[$typeName][
'class'];
207 return $class::getRelationType();
221 $class = self::ALLOWED_TYPES[$typeName][
'class'];
222 return $class::getRestriction();
236 $class = self::ALLOWED_TYPES[$typeName][
'class'];
237 return $class::getRevdelConstant();
253 $class = self::ALLOWED_TYPES[$typeName][
'class'];
254 return $class::suggestTarget(
274 $newBits = $oldfield;
275 foreach ( $bitPars as $const => $val ) {
280 } elseif ( $val == 0 ) {
289class_alias( RevisionDeleter::class,
'RevisionDeleter' );
Interface for objects which can provide a MediaWiki context on request.
Interface for objects (potentially) representing an editable wiki page.