* @file
* @ingroup Media
*/
+
+use MediaWiki\Shell\Shell;
use Wikimedia\ScopedCallback;
/**
$params['physicalWidth'] = $wgSVGMaxSize;
$params['physicalHeight'] = File::scaleHeight( $srcWidth, $srcHeight, $wgSVGMaxSize );
}
- } else {
- if ( $params['physicalHeight'] > $wgSVGMaxSize ) {
- $srcWidth = $image->getWidth( $params['page'] );
- $srcHeight = $image->getHeight( $params['page'] );
- $params['physicalWidth'] = File::scaleHeight( $srcHeight, $srcWidth, $wgSVGMaxSize );
- $params['physicalHeight'] = $wgSVGMaxSize;
- }
+ } elseif ( $params['physicalHeight'] > $wgSVGMaxSize ) {
+ $srcWidth = $image->getWidth( $params['page'] );
+ $srcHeight = $image->getHeight( $params['page'] );
+ $params['physicalWidth'] = File::scaleHeight( $srcHeight, $srcWidth, $wgSVGMaxSize );
+ $params['physicalHeight'] = $wgSVGMaxSize;
}
// To prevent the proliferation of thumbnails in languages not present in SVGs, unless
// explicitly forced by user.
- if ( isset( $params['targetlang'] ) ) {
- if ( !$image->getMatchedLanguage( $params['targetlang'] ) ) {
- unset( $params['targetlang'] );
- }
+ if ( isset( $params['targetlang'] ) && !$image->getMatchedLanguage( $params['targetlang'] ) ) {
+ unset( $params['targetlang'] );
}
return $params;
// External command
$cmd = str_replace(
[ '$path/', '$width', '$height', '$input', '$output' ],
- [ $wgSVGConverterPath ? wfEscapeShellArg( "$wgSVGConverterPath/" ) : "",
+ [ $wgSVGConverterPath ? Shell::escape( "$wgSVGConverterPath/" ) : "",
intval( $width ),
intval( $height ),
- wfEscapeShellArg( $srcPath ),
- wfEscapeShellArg( $dstPath ) ],
+ Shell::escape( $srcPath ),
+ Shell::escape( $dstPath ) ],
$wgSVGConverters[$wgSVGConverter]
);
* @param File|FSFile $file
* @param string $path Unused
* @param bool|array $metadata
- * @return array
+ * @return array|false
*/
function getImageSize( $file, $path, $metadata = false ) {
if ( $metadata === false && $file instanceof File ) {
*/
public function getMetadata( $file, $filename ) {
$metadata = [ 'version' => self::SVG_METADATA_VERSION ];
+
try {
- $metadata += SVGMetadataExtractor::getMetadata( $filename );
+ $svgReader = new SVGReader( $filename );
+ $metadata += $svgReader->getMetadata();
} catch ( Exception $e ) { // @todo SVG specific exceptions
// File not found, broken, etc.
$metadata['error'] = [