* @ingroup Media
*/
+use MediaWiki\Shell\Shell;
+
/**
* JPEG specific handler.
* Inherits most stuff from BitmapHandler, just here to do the metadata handler differently.
$rotation = ( $params['rotation'] + $this->getRotation( $file ) ) % 360;
if ( $wgJpegTran && is_executable( $wgJpegTran ) ) {
- $cmd = wfEscapeShellArg( $wgJpegTran ) .
- " -rotate " . wfEscapeShellArg( $rotation ) .
- " -outfile " . wfEscapeShellArg( $params['dstPath'] ) .
- " " . wfEscapeShellArg( $params['srcPath'] );
- wfDebug( __METHOD__ . ": running jpgtran: $cmd\n" );
- $retval = 0;
- $err = wfShellExecWithStderr( $cmd, $retval );
- if ( $retval !== 0 ) {
- $this->logErrorForExternalProcess( $retval, $err, $cmd );
-
- return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
+ $command = Shell::command( $wgJpegTran,
+ '-rotate',
+ $rotation,
+ '-outfile',
+ $params['dstPath'],
+ $params['srcPath']
+ );
+ $result = $command
+ ->includeStderr()
+ ->execute();
+ if ( $result->getExitCode() !== 0 ) {
+ $this->logErrorForExternalProcess( $result->getExitCode(),
+ $result->getStdout(),
+ $command
+ );
+
+ return new MediaTransformError( 'thumbnail_error', 0, 0, $result->getStdout() );
}
return false;
return false;
}
- $cmd = wfEscapeShellArg( $wgExiftool,
+ $result = Shell::command(
+ $wgExiftool,
'-EXIF:ColorSpace',
'-ICC_Profile:ProfileDescription',
'-S',
'-T',
$filepath
- );
-
- $output = wfShellExecWithStderr( $cmd, $retval );
+ )
+ ->includeStderr()
+ ->execute();
// Explode EXIF data into an array with [0 => Color Space, 1 => Device Model Desc]
- $data = explode( "\t", trim( $output ) );
+ $data = explode( "\t", trim( $result->getStdout() ) );
- if ( $retval !== 0 ) {
+ if ( $result->getExitCode() !== 0 ) {
return false;
}
return false;
}
- $cmd = wfEscapeShellArg( $wgExiftool,
+ $command = Shell::command( $wgExiftool,
'-overwrite_original',
'-icc_profile<=' . $profileFilepath,
$filepath
);
-
- $output = wfShellExecWithStderr( $cmd, $retval );
-
- if ( $retval !== 0 ) {
- $this->logErrorForExternalProcess( $retval, $output, $cmd );
+ $result = $command
+ ->includeStderr()
+ ->execute();
+
+ if ( $result->getExitCode() !== 0 ) {
+ $this->logErrorForExternalProcess( $result->getExitCode(),
+ $result->getStdout(),
+ $command
+ );
return false;
}
*
* File must be in the path returned by getFilePath()
* @param string $name File name
- * @param string|null $type MIME type [optional]
+ * @param string|false $type MIME type [optional]
* @return UnregisteredLocalFile
*/
- protected function dataFile( $name, $type = null ) {
- if ( !$type ) {
- // Autodetect by file extension for the lazy.
- $magic = MediaWiki\MediaWikiServices::getInstance()->getMimeAnalyzer();
- $parts = explode( $name, '.' );
- $type = $magic->guessTypesForExtension( $parts[count( $parts ) - 1] );
- }
+ protected function dataFile( $name, $type = false ) {
return new UnregisteredLocalFile( false, $this->repo,
"mwstore://localtesting/data/$name", $type );
}