jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/362199 )
Change subject: Make file purging also purge old versions
......................................................................
Make file purging also purge old versions
Also fixes purging for repos with sha1 thumb URLs.
Bug: T169198
Change-Id: Ibb98ecce83d690cc46769644038b54e37aea0b0d
---
M includes/filerepo/file/LocalFile.php
M includes/page/WikiFilePage.php
2 files changed, 22 insertions(+), 6 deletions(-)
Approvals:
Krinkle: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/filerepo/file/LocalFile.php
b/includes/filerepo/file/LocalFile.php
index a412250..f71e1dc 100644
--- a/includes/filerepo/file/LocalFile.php
+++ b/includes/filerepo/file/LocalFile.php
@@ -1032,9 +1032,15 @@
$purgeList = [];
foreach ( $files as $file ) {
- # Check that the base file name is part of the thumb
name
+ if ( $this->repo->supportsSha1URLs() ) {
+ $reference = $this->getSha1();
+ } else {
+ $reference = $this->getName();
+ }
+
+ # Check that the reference (filename or sha1) is part
of the thumb name
# This is a basic sanity check to avoid erasing
unrelated directories
- if ( strpos( $file, $this->getName() ) !== false
+ if ( strpos( $file, $reference ) !== false
|| strpos( $file, "-thumbnail" ) !== false //
"short" thumb name
) {
$purgeList[] = "{$dir}/{$file}";
diff --git a/includes/page/WikiFilePage.php b/includes/page/WikiFilePage.php
index 66fadf5..972a397 100644
--- a/includes/page/WikiFilePage.php
+++ b/includes/page/WikiFilePage.php
@@ -170,21 +170,31 @@
*/
public function doPurge() {
$this->loadFile();
+
if ( $this->mFile->exists() ) {
wfDebug( 'ImagePage::doPurge purging ' .
$this->mFile->getName() . "\n" );
DeferredUpdates::addUpdate( new HTMLCacheUpdate(
$this->mTitle, 'imagelinks' ) );
- $this->mFile->purgeCache( [ 'forThumbRefresh' => true ]
);
} else {
wfDebug( 'ImagePage::doPurge no image for '
. $this->mFile->getName() . "; limiting purge
to cache only\n" );
- // even if the file supposedly doesn't exist, force any
cached information
- // to be updated (in case the cached information is
wrong)
- $this->mFile->purgeCache( [ 'forThumbRefresh' => true ]
);
}
+
+ // even if the file supposedly doesn't exist, force any cached
information
+ // to be updated (in case the cached information is wrong)
+
+ // Purge current version and its thumbnails
+ $this->mFile->purgeCache( [ 'forThumbRefresh' => true ] );
+
+ // Purge the old versions and their thumbnails
+ foreach ( $this->mFile->getHistory() as $oldFile ) {
+ $oldFile->purgeCache( [ 'forThumbRefresh' => true ] );
+ }
+
if ( $this->mRepo ) {
// Purge redirect cache
$this->mRepo->invalidateImageRedirect( $this->mTitle );
}
+
return parent::doPurge();
}
--
To view, visit https://gerrit.wikimedia.org/r/362199
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ibb98ecce83d690cc46769644038b54e37aea0b0d
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Gilles <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Filippo Giunchedi <[email protected]>
Gerrit-Reviewer: Gilles <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits