/** * @param $file File * @param array $params Rotate parameters. * 'rotation' clockwise rotation in degrees, allowed are multiples of 90 * @since 1.21 * @return bool */ public function rotate($file, $params) { global $wgJpegTran; $rotation = ($params['rotation'] + $this->getRotation($file)) % 360; if ($wgJpegTran && is_file($wgJpegTran)) { $cmd = wfEscapeShellArg($wgJpegTran) . " -rotate " . wfEscapeShellArg($rotation) . " -outfile " . wfEscapeShellArg($params['dstPath']) . " " . wfEscapeShellArg($params['srcPath']) . " 2>&1"; wfDebug(__METHOD__ . ": running jpgtran: {$cmd}\n"); wfProfileIn('jpegtran'); $retval = 0; $err = wfShellExec($cmd, $retval, $env); wfProfileOut('jpegtran'); if ($retval !== 0) { $this->logErrorForExternalProcess($retval, $err, $cmd); return new MediaTransformError('thumbnail_error', 0, 0, $err); } return false; } else { return parent::rotate($file, $params); } }