Index: .buildpath =================================================================== --- .buildpath (revision 0) +++ .buildpath (revision 0) @@ -0,0 +1,5 @@ + + + + + Index: includes/media/Generic.php =================================================================== --- includes/media/Generic.php (revision 104407) +++ includes/media/Generic.php (working copy) @@ -504,6 +504,15 @@ } return false; } + /** + * Remove files from the purge list + * + * @param array $files + * @param array $options + */ + public function filterThumbnailPurgeList( &$files, $options ) { + // Do nothing + } } /** Index: includes/filerepo/file/File.php =================================================================== --- includes/filerepo/file/File.php (revision 104407) +++ includes/filerepo/file/File.php (working copy) @@ -863,8 +863,9 @@ * Purge shared caches such as thumbnails and DB data caching * STUB * Overridden by LocalFile + * @param array $options Array with options, currently undefined */ - function purgeCache() {} + function purgeCache( $options = array() ) {} /** * Purge the file description page, but don't go after Index: includes/filerepo/file/ForeignAPIFile.php =================================================================== --- includes/filerepo/file/ForeignAPIFile.php (revision 104407) +++ includes/filerepo/file/ForeignAPIFile.php (working copy) @@ -214,8 +214,11 @@ return $files; } - function purgeCache() { - $this->purgeThumbnails(); + /** + * @see File::purgeCache() + */ + function purgeCache( $options = array() ) { + $this->purgeThumbnails( $options ); $this->purgeDescriptionPage(); } @@ -226,11 +229,17 @@ $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 ); Index: includes/filerepo/file/LocalFile.php =================================================================== --- includes/filerepo/file/LocalFile.php (revision 104407) +++ includes/filerepo/file/LocalFile.php (working copy) @@ -675,12 +675,12 @@ /** * 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() ) ); @@ -723,11 +723,18 @@ /** * 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 );