X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FGlobalFunctions.php;h=6fbc11d0d84f4759909850e48abe31eda3e346fe;hb=ddbba62d03e8d5d586d73a20cbc6544b41c574a6;hp=404d2cf1bbb4375f543ffe9a23a379331ec52bef;hpb=bdabeab02a5bb58aafd60f34d905d4b9b016d332;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 404d2cf1bb..6fbc11d0d8 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -2542,7 +2542,7 @@ function wfMkdirParents( $dir, $mode = null, $caller = null ) { MediaWiki\restoreWarnings(); if ( !$ok ) { - //directory may have been created on another request since we last checked + // directory may have been created on another request since we last checked if ( is_dir( $dir ) ) { return true; } @@ -4072,13 +4072,10 @@ function wfUnpack( $format, $data, $length = false ) { * @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 ) { - $name = $redirectTitle->getDBkey(); - } + # Handle redirects; callers almost always hit wfFindFile() anyway, + # so just use that method because it has a fast process cache. + $file = wfFindFile( $name ); // get the final name + $name = $file ? $file->getTitle()->getDBkey() : $name; # Run the extension hook $bad = false; @@ -4086,10 +4083,11 @@ function wfIsBadImage( $name, $contextTitle = false, $blacklist = null ) { 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 } @@ -4125,13 +4123,12 @@ function wfIsBadImage( $name, $contextTitle = false, $blacklist = null ) { $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; }