diff options
Diffstat (limited to 'lib/preview')
-rw-r--r-- | lib/preview/image.php | 36 | ||||
-rw-r--r-- | lib/preview/movies.php | 47 | ||||
-rw-r--r-- | lib/preview/mp3.php | 48 | ||||
-rw-r--r-- | lib/preview/office-cl.php | 134 | ||||
-rw-r--r-- | lib/preview/office-fallback.php | 142 | ||||
-rw-r--r-- | lib/preview/office.php | 22 | ||||
-rw-r--r-- | lib/preview/pdf.php | 40 | ||||
-rw-r--r-- | lib/preview/provider.php | 19 | ||||
-rw-r--r-- | lib/preview/svg.php | 46 | ||||
-rw-r--r-- | lib/preview/txt.php | 83 | ||||
-rw-r--r-- | lib/preview/unknown.php | 27 |
11 files changed, 0 insertions, 644 deletions
diff --git a/lib/preview/image.php b/lib/preview/image.php deleted file mode 100644 index 9aec967282d..00000000000 --- a/lib/preview/image.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Frank Karlitschek frank@owncloud.org - * 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 Image extends Provider { - - public function getMimeType() { - return '/image\/.*/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - //get fileinfo - $fileInfo = $fileview->getFileInfo($path); - if(!$fileInfo) { - return false; - } - - //check if file is encrypted - if($fileInfo['encrypted'] === true) { - $image = new \OC_Image(stream_get_contents($fileview->fopen($path, 'r'))); - }else{ - $image = new \OC_Image(); - $image->loadFromFile($fileview->getLocalFile($path)); - } - - return $image->valid() ? $image : false; - } -} - -\OC\Preview::registerProvider('OC\Preview\Image');
\ No newline at end of file diff --git a/lib/preview/movies.php b/lib/preview/movies.php deleted file mode 100644 index c318137ff0e..00000000000 --- a/lib/preview/movies.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Frank Karlitschek frank@owncloud.org - * 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; - -$isShellExecEnabled = !in_array('shell_exec', explode(', ', ini_get('disable_functions'))); -$whichAVCONV = shell_exec('which avconv'); -$isAVCONVAvailable = !empty($whichAVCONV); - -if($isShellExecEnabled && $isAVCONVAvailable) { - - class Movie extends Provider { - - public function getMimeType() { - return '/video\/.*/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - $absPath = \OC_Helper::tmpFile(); - $tmpPath = \OC_Helper::tmpFile(); - - $handle = $fileview->fopen($path, 'rb'); - - $firstmb = stream_get_contents($handle, 1048576); //1024 * 1024 = 1048576 - file_put_contents($absPath, $firstmb); - - //$cmd = 'ffmpeg -y -i ' . escapeshellarg($absPath) . ' -f mjpeg -vframes 1 -ss 1 -s ' . escapeshellarg($maxX) . 'x' . escapeshellarg($maxY) . ' ' . $tmpPath; - $cmd = 'avconv -an -y -ss 1 -i ' . escapeshellarg($absPath) . ' -f mjpeg -vframes 1 ' . escapeshellarg($tmpPath); - - shell_exec($cmd); - - $image = new \OC_Image($tmpPath); - - unlink($absPath); - unlink($tmpPath); - - return $image->valid() ? $image : false; - } - } - - \OC\Preview::registerProvider('OC\Preview\Movie'); -}
\ No newline at end of file diff --git a/lib/preview/mp3.php b/lib/preview/mp3.php deleted file mode 100644 index 1eed566315c..00000000000 --- a/lib/preview/mp3.php +++ /dev/null @@ -1,48 +0,0 @@ -<?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 MP3 extends Provider { - - public function getMimeType() { - return '/audio\/mpeg/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - require_once('getid3/getid3.php'); - - $getID3 = new \getID3(); - - $tmpPath = $fileview->toTmpFile($path); - - $tags = $getID3->analyze($tmpPath); - \getid3_lib::CopyTagsToComments($tags); - if(isset($tags['id3v2']['APIC'][0]['data'])) { - $picture = @$tags['id3v2']['APIC'][0]['data']; - unlink($tmpPath); - $image = new \OC_Image($picture); - return $image->valid() ? $image : $this->getNoCoverThumbnail(); - } - - return $this->getNoCoverThumbnail(); - } - - private function getNoCoverThumbnail() { - $icon = \OC::$SERVERROOT . '/core/img/filetypes/audio.png'; - - if(!file_exists($icon)) { - return false; - } - - $image = new \OC_Image($icon); - return $image->valid() ? $image : false; - } - -} - -\OC\Preview::registerProvider('OC\Preview\MP3');
\ No newline at end of file diff --git a/lib/preview/office-cl.php b/lib/preview/office-cl.php deleted file mode 100644 index 112909d6523..00000000000 --- a/lib/preview/office-cl.php +++ /dev/null @@ -1,134 +0,0 @@ -<?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; - -//we need imagick to convert -class Office extends Provider { - - private $cmd; - - public function getMimeType() { - return null; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - $this->initCmd(); - if(is_null($this->cmd)) { - return false; - } - - $absPath = $fileview->toTmpFile($path); - - $tmpDir = get_temp_dir(); - - $defaultParameters = ' --headless --nologo --nofirststartwizard --invisible --norestore -convert-to pdf -outdir '; - $clParameters = \OCP\Config::getSystemValue('preview_office_cl_parameters', $defaultParameters); - - $exec = $this->cmd . $clParameters . escapeshellarg($tmpDir) . ' ' . escapeshellarg($absPath); - $export = 'export HOME=/' . $tmpDir; - - shell_exec($export . "\n" . $exec); - - //create imagick object from pdf - try{ - $pdf = new \imagick($absPath . '.pdf' . '[0]'); - $pdf->setImageFormat('jpg'); - } catch (\Exception $e) { - unlink($absPath); - unlink($absPath . '.pdf'); - \OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR); - return false; - } - - $image = new \OC_Image($pdf); - - unlink($absPath); - unlink($absPath . '.pdf'); - - return $image->valid() ? $image : false; - } - - private function initCmd() { - $cmd = ''; - - if(is_string(\OC_Config::getValue('preview_libreoffice_path', null))) { - $cmd = \OC_Config::getValue('preview_libreoffice_path', null); - } - - $whichLibreOffice = shell_exec('which libreoffice'); - if($cmd === '' && !empty($whichLibreOffice)) { - $cmd = 'libreoffice'; - } - - $whichOpenOffice = shell_exec('which openoffice'); - if($cmd === '' && !empty($whichOpenOffice)) { - $cmd = 'openoffice'; - } - - if($cmd === '') { - $cmd = null; - } - - $this->cmd = $cmd; - } -} - -//.doc, .dot -class MSOfficeDoc extends Office { - - public function getMimeType() { - return '/application\/msword/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\MSOfficeDoc'); - -//.docm, .dotm, .xls(m), .xlt(m), .xla(m), .ppt(m), .pot(m), .pps(m), .ppa(m) -class MSOffice2003 extends Office { - - public function getMimeType() { - return '/application\/vnd.ms-.*/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\MSOffice2003'); - -//.docx, .dotx, .xlsx, .xltx, .pptx, .potx, .ppsx -class MSOffice2007 extends Office { - - public function getMimeType() { - return '/application\/vnd.openxmlformats-officedocument.*/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\MSOffice2007'); - -//.odt, .ott, .oth, .odm, .odg, .otg, .odp, .otp, .ods, .ots, .odc, .odf, .odb, .odi, .oxt -class OpenDocument extends Office { - - public function getMimeType() { - return '/application\/vnd.oasis.opendocument.*/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\OpenDocument'); - -//.sxw, .stw, .sxc, .stc, .sxd, .std, .sxi, .sti, .sxg, .sxm -class StarOffice extends Office { - - public function getMimeType() { - return '/application\/vnd.sun.xml.*/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\StarOffice');
\ No newline at end of file diff --git a/lib/preview/office-fallback.php b/lib/preview/office-fallback.php deleted file mode 100644 index e69ab0ab8cb..00000000000 --- a/lib/preview/office-fallback.php +++ /dev/null @@ -1,142 +0,0 @@ -<?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; - -/* //There is no (good) php-only solution for converting 2003 word documents to pdfs / pngs ... -class DOC extends Provider { - - public function getMimeType() { - return '/application\/msword/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - require_once(''); - } - -} - -\OC\Preview::registerProvider('OC\Preview\DOC'); -*/ - -class DOCX extends Provider { - - public function getMimeType() { - return '/application\/vnd.openxmlformats-officedocument.wordprocessingml.document/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - require_once('phpdocx/classes/TransformDoc.inc'); - - $tmpDoc = $fileview->toTmpFile($path); - - $transformdoc = new \TransformDoc(); - $transformdoc->setStrFile($tmpDoc); - $transformdoc->generatePDF($tmpDoc); - - $pdf = new \imagick($tmpDoc . '[0]'); - $pdf->setImageFormat('jpg'); - - unlink($tmpDoc); - - $image = new \OC_Image($pdf); - - return $image->valid() ? $image : false; - } - -} - -\OC\Preview::registerProvider('OC\Preview\DOCX'); - -class MSOfficeExcel extends Provider { - - public function getMimeType() { - return null; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - require_once('PHPExcel/Classes/PHPExcel.php'); - require_once('PHPExcel/Classes/PHPExcel/IOFactory.php'); - - $absPath = $fileview->toTmpFile($path); - $tmpPath = \OC_Helper::tmpFile(); - - $rendererName = \PHPExcel_Settings::PDF_RENDERER_DOMPDF; - $rendererLibraryPath = \OC::$THIRDPARTYROOT . '/3rdparty/dompdf'; - - \PHPExcel_Settings::setPdfRenderer($rendererName, $rendererLibraryPath); - - $phpexcel = new \PHPExcel($absPath); - $excel = \PHPExcel_IOFactory::createWriter($phpexcel, 'PDF'); - $excel->save($tmpPath); - - $pdf = new \imagick($tmpPath . '[0]'); - $pdf->setImageFormat('jpg'); - - unlink($absPath); - unlink($tmpPath); - - $image = new \OC_Image($pdf); - - return $image->valid() ? $image : false; - } - -} - -class XLS extends MSOfficeExcel { - - public function getMimeType() { - return '/application\/vnd.ms-excel/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\XLS'); - -class XLSX extends MSOfficeExcel { - - public function getMimeType() { - return '/application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\XLSX'); - -/* //There is no (good) php-only solution for converting powerpoint documents to pdfs / pngs ... -class MSOfficePowerPoint extends Provider { - - public function getMimeType() { - return null; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - return false; - } - -} - -class PPT extends MSOfficePowerPoint { - - public function getMimeType() { - return '/application\/vnd.ms-powerpoint/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\PPT'); - -class PPTX extends MSOfficePowerPoint { - - public function getMimeType() { - return '/application\/vnd.openxmlformats-officedocument.presentationml.presentation/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\PPTX'); -*/
\ No newline at end of file diff --git a/lib/preview/office.php b/lib/preview/office.php deleted file mode 100644 index 5287bbd6ac1..00000000000 --- a/lib/preview/office.php +++ /dev/null @@ -1,22 +0,0 @@ -<?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. - */ -//both, libreoffice backend and php fallback, need imagick -if (extension_loaded('imagick')) { - $isShellExecEnabled = !in_array('shell_exec', explode(', ', ini_get('disable_functions'))); - $whichLibreOffice = shell_exec('which libreoffice'); - $isLibreOfficeAvailable = !empty($whichLibreOffice); - $whichOpenOffice = shell_exec('which libreoffice'); - $isOpenOfficeAvailable = !empty($whichOpenOffice); - //let's see if there is libreoffice or openoffice on this machine - if($isShellExecEnabled && ($isLibreOfficeAvailable || $isOpenOfficeAvailable || is_string(\OC_Config::getValue('preview_libreoffice_path', null)))) { - require_once('office-cl.php'); - }else{ - //in case there isn't, use our fallback - require_once('office-fallback.php'); - } -}
\ No newline at end of file diff --git a/lib/preview/pdf.php b/lib/preview/pdf.php deleted file mode 100644 index cc974b68818..00000000000 --- a/lib/preview/pdf.php +++ /dev/null @@ -1,40 +0,0 @@ -<?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; - -if (extension_loaded('imagick')) { - - class PDF extends Provider { - - public function getMimeType() { - return '/application\/pdf/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - $tmpPath = $fileview->toTmpFile($path); - - //create imagick object from pdf - try{ - $pdf = new \imagick($tmpPath . '[0]'); - $pdf->setImageFormat('jpg'); - } catch (\Exception $e) { - \OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR); - return false; - } - - unlink($tmpPath); - - //new image object - $image = new \OC_Image($pdf); - //check if image object is valid - return $image->valid() ? $image : false; - } - } - - \OC\Preview::registerProvider('OC\Preview\PDF'); -} diff --git a/lib/preview/provider.php b/lib/preview/provider.php deleted file mode 100644 index e4a730bafc8..00000000000 --- a/lib/preview/provider.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -namespace OC\Preview; - -abstract class Provider { - private $options; - - public function __construct($options) { - $this->options=$options; - } - - abstract public function getMimeType(); - - /** - * search for $query - * @param string $query - * @return - */ - abstract public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview); -} diff --git a/lib/preview/svg.php b/lib/preview/svg.php deleted file mode 100644 index b49e51720fa..00000000000 --- a/lib/preview/svg.php +++ /dev/null @@ -1,46 +0,0 @@ -<?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; - -if (extension_loaded('imagick')) { - - class SVG extends Provider { - - public function getMimeType() { - return '/image\/svg\+xml/'; - } - - 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; - } - - $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; - } - } - - \OC\Preview::registerProvider('OC\Preview\SVG'); - -}
\ No newline at end of file diff --git a/lib/preview/txt.php b/lib/preview/txt.php deleted file mode 100644 index 77e728eb364..00000000000 --- a/lib/preview/txt.php +++ /dev/null @@ -1,83 +0,0 @@ -<?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 TXT extends Provider { - - private static $blacklist = array( - 'text/calendar', - 'text/vcard', - ); - - public function getMimeType() { - return '/text\/.*/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - $mimetype = $fileview->getMimeType($path); - if(in_array($mimetype, self::$blacklist)) { - return false; - } - - $content = $fileview->fopen($path, 'r'); - $content = stream_get_contents($content); - - //don't create previews of empty text files - if(trim($content) === '') { - return false; - } - - $lines = preg_split("/\r\n|\n|\r/", $content); - - $fontSize = 5; //5px - $lineSize = ceil($fontSize * 1.25); - - $image = imagecreate($maxX, $maxY); - imagecolorallocate($image, 255, 255, 255); - $textColor = imagecolorallocate($image, 0, 0, 0); - - foreach($lines as $index => $line) { - $index = $index + 1; - - $x = (int) 1; - $y = (int) ($index * $lineSize) - $fontSize; - - imagestring($image, 1, $x, $y, $line, $textColor); - - if(($index * $lineSize) >= $maxY) { - break; - } - } - - $image = new \OC_Image($image); - - return $image->valid() ? $image : false; - } -} - -\OC\Preview::registerProvider('OC\Preview\TXT'); - -class PHP extends TXT { - - public function getMimeType() { - return '/application\/x-php/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\PHP'); - -class JavaScript extends TXT { - - public function getMimeType() { - return '/application\/javascript/'; - } - -} - -\OC\Preview::registerProvider('OC\Preview\JavaScript');
\ No newline at end of file diff --git a/lib/preview/unknown.php b/lib/preview/unknown.php deleted file mode 100644 index 9e6cd68d401..00000000000 --- a/lib/preview/unknown.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Frank Karlitschek frank@owncloud.org - * 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 Unknown extends Provider { - - public function getMimeType() { - return '/.*/'; - } - - public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { - $mimetype = $fileview->getMimeType($path); - - $path = \OC_Helper::mimetypeIcon($mimetype); - $path = \OC::$SERVERROOT . substr($path, strlen(\OC::$WEBROOT)); - - return new \OC_Image($path); - } -} - -\OC\Preview::registerProvider('OC\Preview\Unknown');
\ No newline at end of file |