* @return bool
*/
function wfIsBadImage( $name, $contextTitle = false, $blacklist = null ) {
- static $badImageCache = null; // based on bad_image_list msg
-
# Handle redirects
$redirectTitle = RepoGroup::singleton()->checkRedirect( Title::makeTitle( NS_FILE, $name ) );
if ( $redirectTitle ) {
return $bad;
}
- $cacheable = ( $blacklist === null );
- if ( $cacheable && $badImageCache !== null ) {
- $badImages = $badImageCache;
- } else { // cache miss
+ $cache = ObjectCache::newAccelerator( 'hash' );
+ $key = wfMemcKey( 'bad-image-list', ( $blacklist === null ) ? 'default' : md5( $blacklist ) );
+ $badImages = $cache->get( $key );
+
+ if ( $badImages === false ) { // cache miss
if ( $blacklist === null ) {
$blacklist = wfMessage( 'bad_image_list' )->inContentLanguage()->plain(); // site list
}
$badImages[$imageDBkey] = $exceptions;
}
}
- if ( $cacheable ) {
- $badImageCache = $badImages;
- }
+ $cache->set( $key, $badImages, 60 );
}
$contextKey = $contextTitle ? $contextTitle->getPrefixedDBkey() : false;
$bad = isset( $badImages[$name] ) && !isset( $badImages[$name][$contextKey] );
+
return $bad;
}