checkRedirect( Title::makeTitle( NS_FILE, $name ) ); if( $redirectTitle ) { $name = $redirectTitle->getDbKey(); } # Run the extension hook $bad = false; if( !wfRunHooks( 'BadImage', array( $name, &$bad ) ) ) { wfProfileOut( __METHOD__ ); return $bad; } $cacheable = ( $blacklist === null ); if( $cacheable && $badImageCache !== null ) { $badImages = $badImageCache; } else { // cache miss if ( $blacklist === null ) { $blacklist = wfMsgForContentNoTrans( 'bad_image_list' ); // site list } # Build the list now $badImages = array(); $lines = explode( "\n", $blacklist ); foreach( $lines as $line ) { # List items only if ( substr( $line, 0, 1 ) !== '*' ) { continue; } # Find all links $m = array(); if ( !preg_match_all( '/\[\[:?(.*?)\]\]/', $line, $m ) ) { continue; } $exceptions = array(); $imageDBkey = false; foreach ( $m[1] as $i => $titleText ) { $title = Title::newFromText( $titleText ); if ( !is_null( $title ) ) { if ( $i == 0 ) { $imageDBkey = $title->getDBkey(); } else { $exceptions[$title->getPrefixedDBkey()] = true; } } } if ( $imageDBkey !== false ) { $badImages[$imageDBkey] = $exceptions; } } if ( $cacheable ) { $badImageCache = $badImages; } } $contextKey = $contextTitle ? $contextTitle->getPrefixedDBkey() : false; $bad = isset( $badImages[$name] ) && !isset( $badImages[$name][$contextKey] ); wfProfileOut( __METHOD__ ); return $bad; }