MediaWiki REL1_35
RevDelFileList.php
Go to the documentation of this file.
1<?php
24
31
34
37
38 public function getType() {
39 return 'oldimage';
40 }
41
42 public static function getRelationType() {
43 return 'oi_archive_name';
44 }
45
46 public static function getRestriction() {
47 return 'deleterevision';
48 }
49
50 public static function getRevdelConstant() {
51 return File::DELETED_FILE;
52 }
53
58 public function doQuery( $db ) {
59 $archiveNames = [];
60 foreach ( $this->ids as $timestamp ) {
61 $archiveNames[] = $timestamp . '!' . $this->title->getDBkey();
62 }
63
64 $oiQuery = OldLocalFile::getQueryInfo();
65 return $db->select(
66 $oiQuery['tables'],
67 $oiQuery['fields'],
68 [
69 'oi_name' => $this->title->getDBkey(),
70 'oi_archive_name' => $archiveNames
71 ],
72 __METHOD__,
73 [ 'ORDER BY' => 'oi_timestamp DESC' ],
74 $oiQuery['joins']
75 );
76 }
77
78 public function newItem( $row ) {
79 return new RevDelFileItem( $this, $row );
80 }
81
82 public function clearFileOps() {
83 $this->deleteBatch = [];
84 $this->storeBatch = [];
85 $this->cleanupBatch = [];
86 }
87
88 public function doPreCommitUpdates() {
89 $status = Status::newGood();
90 $repo = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo();
91 if ( $this->storeBatch ) {
92 $status->merge( $repo->storeBatch( $this->storeBatch, FileRepo::OVERWRITE_SAME ) );
93 }
94 if ( !$status->isOK() ) {
95 return $status;
96 }
97 if ( $this->deleteBatch ) {
98 $status->merge( $repo->deleteBatch( $this->deleteBatch ) );
99 }
100 if ( !$status->isOK() ) {
101 // Running cleanupDeletedBatch() after a failed storeBatch() with the DB already
102 // modified (but destined for rollback) causes data loss
103 return $status;
104 }
105 if ( $this->cleanupBatch ) {
106 $status->merge( $repo->cleanupDeletedBatch( $this->cleanupBatch ) );
107 }
108
109 return $status;
110 }
111
112 public function doPostCommitUpdates( array $visibilityChangeMap ) {
113 $file = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo()
114 ->newFile( $this->title );
115 $file->purgeCache();
116 $file->purgeDescription();
117
118 // Purge full images from cache
119 $purgeUrls = [];
120 foreach ( $this->ids as $timestamp ) {
121 $archiveName = $timestamp . '!' . $this->title->getDBkey();
122 $file->purgeOldThumbnails( $archiveName );
123 $purgeUrls[] = $file->getArchiveUrl( $archiveName );
124 }
125
126 $hcu = MediaWikiServices::getInstance()->getHtmlCacheUpdater();
127 $hcu->purgeUrls( $purgeUrls, $hcu::PURGE_INTENT_TXROUND_REFLECTED );
128
129 return Status::newGood();
130 }
131
132 public function getSuppressBit() {
133 return File::DELETED_RESTRICTED;
134 }
135}
const OVERWRITE_SAME
Definition FileRepo.php:44
MediaWikiServices is the service locator for the application scope of MediaWiki.
static getQueryInfo(array $options=[])
Return the tables, fields, and join conditions to be selected to create a new oldlocalfile object.
Item class for an oldimage table row.
List for oldimage table items.
getSuppressBit()
Get the integer value of the flag used for suppression.
static getRelationType()
Get the DB field name associated with the ID list.
doPostCommitUpdates(array $visibilityChangeMap)
A hook for setVisibility(): do any necessary updates post-commit.
doPreCommitUpdates()
A hook for setVisibility(): do batch updates pre-commit.
clearFileOps()
Clear any data structures needed for doPreCommitUpdates() and doPostCommitUpdates() STUB.
newItem( $row)
Create an item object from a DB result row.
getType()
Get the internal type name of this list.
static getRevdelConstant()
Get the revision deletion constant for this list type Override this function.
static getRestriction()
Get the user right required for this list type Override this function.
Basic database interface for live and lazy-loaded relation database handles.
Definition IDatabase.php:38
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
Definition router.php:42