Commit 9cb54e38 authored by Joas Schilling's avatar Joas Schilling
Browse files

Fix intendation and doc blocks of preview providers

parent fca9d325
...@@ -16,11 +16,6 @@ namespace OC; ...@@ -16,11 +16,6 @@ namespace OC;
use OC\Preview\Provider; use OC\Preview\Provider;
use OCP\Files\NotFoundException; use OCP\Files\NotFoundException;
require_once 'preview/image.php';
require_once 'preview/movie.php';
require_once 'preview/mp3.php';
require_once 'preview/svg.php';
require_once 'preview/txt.php';
require_once 'preview/office-cl.php'; require_once 'preview/office-cl.php';
require_once 'preview/bitmap.php'; require_once 'preview/bitmap.php';
......
...@@ -9,11 +9,16 @@ ...@@ -9,11 +9,16 @@
namespace OC\Preview; namespace OC\Preview;
class Image extends Provider { class Image extends Provider {
/**
* {@inheritDoc}
*/
public function getMimeType() { public function getMimeType() {
return '/image\/(?!tiff$)(?!svg.*).*/'; return '/image\/(?!tiff$)(?!svg.*).*/';
} }
/**
* {@inheritDoc}
*/
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
//get fileinfo //get fileinfo
$fileInfo = $fileview->getFileInfo($path); $fileInfo = $fileview->getFileInfo($path);
......
<?php
/**
* Copyright (c) 2013 Georg Ehrke georg@ownCloud.com
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OC\Preview;
class MarkDown extends TXT {
/**
* {@inheritDoc}
*/
public function getMimeType() {
return '/text\/(x-)?markdown/';
}
}
...@@ -8,83 +8,87 @@ ...@@ -8,83 +8,87 @@
*/ */
namespace OC\Preview; namespace OC\Preview;
class Movie extends Provider { class Movie extends Provider {
public static $avconvBinary; public static $avconvBinary;
public static $ffmpegBinary; public static $ffmpegBinary;
public function getMimeType() { /**
return '/video\/.*/'; * {@inheritDoc}
} */
public function getMimeType() {
return '/video\/.*/';
}
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { /**
// TODO: use proc_open() and stream the source file ? * {@inheritDoc}
*/
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
// TODO: use proc_open() and stream the source file ?
$fileInfo = $fileview->getFileInfo($path); $fileInfo = $fileview->getFileInfo($path);
$useFileDirectly = (!$fileInfo->isEncrypted() && !$fileInfo->isMounted()); $useFileDirectly = (!$fileInfo->isEncrypted() && !$fileInfo->isMounted());
if ($useFileDirectly) { if ($useFileDirectly) {
$absPath = $fileview->getLocalFile($path); $absPath = $fileview->getLocalFile($path);
} else { } else {
$absPath = \OC_Helper::tmpFile(); $absPath = \OC_Helper::tmpFile();
$handle = $fileview->fopen($path, 'rb'); $handle = $fileview->fopen($path, 'rb');
// we better use 5MB (1024 * 1024 * 5 = 5242880) instead of 1MB. // we better use 5MB (1024 * 1024 * 5 = 5242880) instead of 1MB.
// in some cases 1MB was no enough to generate thumbnail // in some cases 1MB was no enough to generate thumbnail
$firstmb = stream_get_contents($handle, 5242880); $firstmb = stream_get_contents($handle, 5242880);
file_put_contents($absPath, $firstmb); file_put_contents($absPath, $firstmb);
} }
$result = $this->generateThumbNail($maxX, $maxY, $absPath, 5); $result = $this->generateThumbNail($maxX, $maxY, $absPath, 5);
if ($result === false) { if ($result === false) {
$result = $this->generateThumbNail($maxX, $maxY, $absPath, 1); $result = $this->generateThumbNail($maxX, $maxY, $absPath, 1);
if ($result === false) { if ($result === false) {
$result = $this->generateThumbNail($maxX, $maxY, $absPath, 0); $result = $this->generateThumbNail($maxX, $maxY, $absPath, 0);
} }
} }
if (!$useFileDirectly) { if (!$useFileDirectly) {
unlink($absPath); unlink($absPath);
} }
return $result; return $result;
} }
/** /**
* @param int $maxX * @param int $maxX
* @param int $maxY * @param int $maxY
* @param string $absPath * @param string $absPath
* @param string $tmpPath * @param int $second
* @param int $second * @return bool|\OC_Image
* @return bool|\OC_Image */
*/ private function generateThumbNail($maxX, $maxY, $absPath, $second) {
private function generateThumbNail($maxX, $maxY, $absPath, $second) $tmpPath = \OC_Helper::tmpFile();
{
$tmpPath = \OC_Helper::tmpFile();
if (self::$avconvBinary) { if (self::$avconvBinary) {
$cmd = self::$avconvBinary . ' -an -y -ss ' . escapeshellarg($second) . $cmd = self::$avconvBinary . ' -an -y -ss ' . escapeshellarg($second) .
' -i ' . escapeshellarg($absPath) . ' -i ' . escapeshellarg($absPath) .
' -f mjpeg -vframes 1 -vsync 1 ' . escapeshellarg($tmpPath) . ' -f mjpeg -vframes 1 -vsync 1 ' . escapeshellarg($tmpPath) .
' > /dev/null 2>&1'; ' > /dev/null 2>&1';
} else { } else {
$cmd = self::$ffmpegBinary . ' -y -ss ' . escapeshellarg($second) . $cmd = self::$ffmpegBinary . ' -y -ss ' . escapeshellarg($second) .
' -i ' . escapeshellarg($absPath) . ' -i ' . escapeshellarg($absPath) .
' -f mjpeg -vframes 1' . ' -f mjpeg -vframes 1' .
' -s ' . escapeshellarg($maxX) . 'x' . escapeshellarg($maxY) . ' -s ' . escapeshellarg($maxX) . 'x' . escapeshellarg($maxY) .
' ' . escapeshellarg($tmpPath) . ' ' . escapeshellarg($tmpPath) .
' > /dev/null 2>&1'; ' > /dev/null 2>&1';
} }
exec($cmd, $output, $returnCode); exec($cmd, $output, $returnCode);
if ($returnCode === 0) { if ($returnCode === 0) {
$image = new \OC_Image(); $image = new \OC_Image();
$image->loadFromFile($tmpPath); $image->loadFromFile($tmpPath);
unlink($tmpPath); unlink($tmpPath);
return $image->valid() ? $image : false; return $image->valid() ? $image : false;
}
unlink($tmpPath);
return false;
}
} }
unlink($tmpPath);
return false;
}
}
...@@ -8,11 +8,16 @@ ...@@ -8,11 +8,16 @@
namespace OC\Preview; namespace OC\Preview;
class MP3 extends Provider { class MP3 extends Provider {
/**
* {@inheritDoc}
*/
public function getMimeType() { public function getMimeType() {
return '/audio\/mpeg/'; return '/audio\/mpeg/';
} }
/**
* {@inheritDoc}
*/
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
$getID3 = new \getID3(); $getID3 = new \getID3();
...@@ -31,6 +36,12 @@ class MP3 extends Provider { ...@@ -31,6 +36,12 @@ class MP3 extends Provider {
return $this->getNoCoverThumbnail(); return $this->getNoCoverThumbnail();
} }
/**
* Generates a default image when the file has no cover
*
* @return false|\OC_Image False if the default image is missing or invalid,
* otherwise the image is returned as \OC_Image
*/
private function getNoCoverThumbnail() { private function getNoCoverThumbnail() {
$icon = \OC::$SERVERROOT . '/core/img/filetypes/audio.png'; $icon = \OC::$SERVERROOT . '/core/img/filetypes/audio.png';
......
...@@ -29,7 +29,7 @@ abstract class Provider { ...@@ -29,7 +29,7 @@ abstract class Provider {
* @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image * @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image
* @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image
* @param bool $scalingup Disable/Enable upscaling of previews * @param bool $scalingup Disable/Enable upscaling of previews
* @param object $fileview fileview object of user folder * @param \OC\Files\View $fileview fileview object of user folder
* @return mixed * @return mixed
* false if no preview was generated * false if no preview was generated
* OC_Image object of the preview * OC_Image object of the preview
......
...@@ -7,41 +7,43 @@ ...@@ -7,41 +7,43 @@
*/ */
namespace OC\Preview; namespace OC\Preview;
use Imagick; class SVG extends Provider {
/**
class SVG extends Provider { * {@inheritDoc}
*/
public function getMimeType() { public function getMimeType() {
return '/image\/svg\+xml/'; return '/image\/svg\+xml/';
}
/**
* {@inheritDoc}
*/
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
try{
$svg = new \Imagick();
$svg->setBackgroundColor(new \ImagickPixel('transparent'));
$content = stream_get_contents($fileview->fopen($path, 'r'));
if(substr($content, 0, 5) !== '<?xml') {
$content = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $content;
} }
public function getThumbnail($path,$maxX,$maxY,$scalingup,$fileview) { // Do not parse SVG files with references
try{ if(stripos($content, 'xlink:href') !== false) {
$svg = new Imagick(); return false;
$svg->setBackgroundColor(new \ImagickPixel('transparent'));
$content = stream_get_contents($fileview->fopen($path, 'r'));
if(substr($content, 0, 5) !== '<?xml') {
$content = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $content;
}
// Do not parse SVG files with references
if(stripos($content, 'xlink:href') !== false) {
return false;
}
$svg->readImageBlob($content);
$svg->setImageFormat('png32');
} catch (\Exception $e) {
\OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR);
return false;
}
//new image object
$image = new \OC_Image();
$image->loadFromData($svg);
//check if image object is valid
return $image->valid() ? $image : false;
} }
$svg->readImageBlob($content);
$svg->setImageFormat('png32');
} catch (\Exception $e) {
\OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR);
return false;
} }
//new image object
$image = new \OC_Image();
$image->loadFromData($svg);
//check if image object is valid
return $image->valid() ? $image : false;
}
}
...@@ -26,7 +26,6 @@ class TXT extends Provider { ...@@ -26,7 +26,6 @@ class TXT extends Provider {
* {@inheritDoc} * {@inheritDoc}
*/ */
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
$content = $fileview->fopen($path, 'r'); $content = $fileview->fopen($path, 'r');
$content = stream_get_contents($content,3000); $content = stream_get_contents($content,3000);
...@@ -73,10 +72,3 @@ class TXT extends Provider { ...@@ -73,10 +72,3 @@ class TXT extends Provider {
return $image->valid() ? $image : false; return $image->valid() ? $image : false;
} }
} }
class MarkDown extends TXT {
public function getMimeType() {
return '/text\/(x-)?markdown/';
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment