$update = new HTMLCacheUpdate( $this->mTitle, 'imagelinks' );
$update->doUpdate();
$this->mFile->upgradeRow();
- $this->mFile->purgeCache();
+ $this->mFile->purgeCache( array( 'forRefresh' => 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();
+ $this->mFile->purgeCache( array( 'forRefresh' => true ) );
}
parent::doPurge();
}
* Purge shared caches such as thumbnails and DB data caching
* STUB
* Overridden by LocalFile
+ * @param $options Array Options, which include:
+ * 'forRefresh' : The purging is only to refresh thumbnails
*/
- function purgeCache() {}
+ function purgeCache( $options = array() ) {}
/**
* Purge the file description page, but don't go after
return $files;
}
- function purgeCache() {
- $this->purgeThumbnails();
+ /**
+ * @see File::purgeCache()
+ */
+ function purgeCache( $options = array() ) {
+ $this->purgeThumbnails( $options );
$this->purgeDescriptionPage();
}
$wgMemc->delete( $key );
}
- function purgeThumbnails() {
+ function purgeThumbnails( $options = array() ) {
global $wgMemc;
$key = $this->repo->getLocalCacheKey( 'ForeignAPIRepo', 'ThumbUrl', $this->getName() );
$wgMemc->delete( $key );
$files = $this->getThumbnails();
+ // Give media handler a chance to filter the purge list
+ $handler = $this->getHandler();
+ if ( $handler ) {
+ $handler->filterThumbnailPurgeList( $files, $options );
+ }
+
$dir = $this->getThumbPath( $this->getName() );
foreach ( $files as $file ) {
unlink( $dir . $file );
/**
* Delete all previously generated thumbnails, refresh metadata in memcached and purge the squid
*/
- function purgeCache() {
+ function purgeCache( $options = array() ) {
// Refresh metadata cache
$this->purgeMetadataCache();
// Delete thumbnails
- $this->purgeThumbnails();
+ $this->purgeThumbnails( $options );
// Purge squid cache for this file
SquidUpdate::purge( array( $this->getURL() ) );
/**
* Delete cached transformed files for the current version only.
*/
- function purgeThumbnails() {
+ function purgeThumbnails( $options ) {
global $wgUseSquid;
// Delete thumbnails
$files = $this->getThumbnails();
+
+ // Give media handler a chance to filter the purge list
+ $handler = $this->getHandler();
+ if ( $handler ) {
+ $handler->filterThumbnailPurgeList( $files, $options );
+ }
+
$dir = array_shift( $files );
$this->purgeThumbList( $dir, $files );
}
return false;
}
+
+ /**
+ * Remove files from the purge list
+ *
+ * @param array $files
+ * @param array $options
+ */
+ public function filterThumbnailPurgeList( &$files, $options ) {
+ // Do nothing
+ }
}
/**