$mediawiki = new MediaWiki();
$mediawiki->doPostOutputShutdown( 'fast' );
-//--------------------------------------------------------------------------
+// --------------------------------------------------------------------------
/**
* Handle a thumbnail request via thumbnail file URL
try {
$thumbName = $img->thumbName( $params );
if ( !strlen( $thumbName ) ) { // invalid params?
- throw new MediaTransformInvalidParametersException( 'Empty return from File::thumbName' );
+ throw new MediaTransformInvalidParametersException(
+ 'Empty return from File::thumbName'
+ );
}
$thumbName2 = $img->thumbName( $params, File::THUMB_FULL_NAME ); // b/c; "long" style
} catch ( MediaTransformInvalidParametersException $e ) {
- wfThumbError( 400, 'The specified thumbnail parameters are not valid: ' . $e->getMessage() );
+ wfThumbError(
+ 400,
+ 'The specified thumbnail parameters are not valid: ' . $e->getMessage()
+ );
return;
} catch ( MWException $e ) {
wfThumbError( 500, $e->getHTML() );
$dispositionType = isset( $params['download'] ) ? 'attachment' : 'inline';
// Suggest a good name for users downloading this thumbnail
- $headers[] = "Content-Disposition: {$img->getThumbDisposition( $thumbName, $dispositionType )}";
+ $headers[] =
+ "Content-Disposition: {$img->getThumbDisposition( $thumbName, $dispositionType )}";
if ( count( $varyHeader ) ) {
$headers[] = 'Vary: ' . implode( ', ', $varyHeader );
$errorCode = 500;
if ( !$thumb ) {
$errorMsg = $errorMsg ?: $msg->rawParams( 'File::transform() returned false' )->escaped();
- if ( $errorMsg instanceof MessageSpecifier && $errorMsg->getKey() === 'thumbnail_image-failure-limit' ) {
+ if ( $errorMsg instanceof MessageSpecifier &&
+ $errorMsg->getKey() === 'thumbnail_image-failure-limit'
+ ) {
$errorCode = 429;
}
} elseif ( $thumb->isError() ) {
} elseif ( !$thumb->hasFile() ) {
$errorMsg = $msg->rawParams( 'No path supplied in thumbnail object' )->escaped();
} elseif ( $thumb->fileIsSource() ) {
- $errorMsg = $msg->
- rawParams( 'Image was not scaled, is the requested width bigger than the source?' )->escaped();
+ $errorMsg = $msg
+ ->rawParams( 'Image was not scaled, is the requested width bigger than the source?' )
+ ->escaped();
$errorCode = 400;
}
* @return array (MediaTransformOutput|bool, string|bool error message HTML)
*/
function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath ) {
- global $wgMemc, $wgAttemptFailureEpoch;
+ global $wgAttemptFailureEpoch;
- $key = wfMemcKey( 'attempt-failures', $wgAttemptFailureEpoch,
- $file->getRepo()->getName(), $file->getSha1(), md5( $thumbName ) );
+ $cache = ObjectCache::getLocalClusterInstance();
+ $key = $cache->makeKey(
+ 'attempt-failures',
+ $wgAttemptFailureEpoch,
+ $file->getRepo()->getName(),
+ $file->getSha1(),
+ md5( $thumbName )
+ );
// Check if this file keeps failing to render
- if ( $wgMemc->get( $key ) >= 4 ) {
+ if ( $cache->get( $key ) >= 4 ) {
return array( false, wfMessage( 'thumbnail_image-failure-limit', 4 ) );
}
$done = false;
// Record failures on PHP fatals in addition to caching exceptions
- register_shutdown_function( function () use ( &$done, $key ) {
+ register_shutdown_function( function () use ( $cache, &$done, $key ) {
if ( !$done ) { // transform() gave a fatal
- global $wgMemc;
// Randomize TTL to reduce stampedes
- $wgMemc->incrWithInit( $key, 3600 + mt_rand( 0, 300 ) );
+ $cache->incrWithInit( $key, $cache::TTL_HOUR + mt_rand( 0, 300 ) );
}
} );
if ( !$thumb || $thumb->isError() ) {
// Randomize TTL to reduce stampedes
- $wgMemc->incrWithInit( $key, 3600 + mt_rand( 0, 300 ) );
+ $cache->incrWithInit( $key, $cache::TTL_HOUR + mt_rand( 0, 300 ) );
}
return array( $thumb, $errorHtml );
}
if ( $wgShowHostnames ) {
header( 'X-MW-Thumbnail-Renderer: ' . wfHostname() );
- $url = htmlspecialchars( isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '' );
+ $url = htmlspecialchars(
+ isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : ''
+ );
$hostname = htmlspecialchars( wfHostname() );
$debug = "<!-- $url -->\n<!-- $hostname -->\n";
} else {