diff options
author | Morris Jobke <morris.jobke@gmail.com> | 2013-11-28 12:48:19 -0800 |
---|---|---|
committer | Morris Jobke <morris.jobke@gmail.com> | 2013-11-28 12:48:19 -0800 |
commit | 0cbe9d79baec7aa3a38dfc9b5db8b5a1eee7b930 (patch) | |
tree | 5158888d5484c74ebbeadb78087f56c664ac4846 | |
parent | f723bf744a2c32e310461fa51f85fd3bb0e9fa44 (diff) | |
parent | b3724cd9c699522c8ec3c6754670b505d3481736 (diff) | |
download | nextcloud-server-0cbe9d79baec7aa3a38dfc9b5db8b5a1eee7b930.tar.gz nextcloud-server-0cbe9d79baec7aa3a38dfc9b5db8b5a1eee7b930.zip |
Merge pull request #6106 from owncloud/fix_preview_creation
Fix preview creation
-rw-r--r-- | apps/files_trashbin/ajax/preview.php | 10 | ||||
-rw-r--r-- | apps/files_versions/ajax/preview.php | 5 | ||||
-rwxr-xr-x | lib/private/preview.php | 41 |
3 files changed, 37 insertions, 19 deletions
diff --git a/apps/files_trashbin/ajax/preview.php b/apps/files_trashbin/ajax/preview.php index a0846b051c7..ce432f4d14e 100644 --- a/apps/files_trashbin/ajax/preview.php +++ b/apps/files_trashbin/ajax/preview.php @@ -29,8 +29,14 @@ if($maxX === 0 || $maxY === 0) { } try{ - $preview = new \OC\Preview(\OC_User::getUser(), 'files_trashbin/files'); - $preview->setFile($file); + $preview = new \OC\Preview(\OC_User::getUser(), 'files_trashbin/files', $file); + $view = new \OC\Files\View('/'.\OC_User::getUser(). '/files_trashbin/files'); + if ($view->is_dir($file)) { + $mimetype = 'httpd/unix-directory'; + } else { + $mimetype = \OC_Helper::getFileNameMimeType(pathinfo($file, PATHINFO_FILENAME)); + } + $preview->setMimetype($mimetype); $preview->setMaxX($maxX); $preview->setMaxY($maxY); $preview->setScalingUp($scalingUp); diff --git a/apps/files_versions/ajax/preview.php b/apps/files_versions/ajax/preview.php index 62bcc03f522..31525028ef3 100644 --- a/apps/files_versions/ajax/preview.php +++ b/apps/files_versions/ajax/preview.php @@ -37,8 +37,9 @@ if($maxX === 0 || $maxY === 0) { } try{ - $preview = new \OC\Preview($user, 'files_versions'); - $preview->setFile($file.'.v'.$version); + $preview = new \OC\Preview($user, 'files_versions', $file.'.v'.$version); + $mimetype = \OC_Helper::getFileNameMimeType($file); + $preview->setMimetype($mimetype); $preview->setMaxX($maxX); $preview->setMaxY($maxY); $preview->setScalingUp($scalingUp); diff --git a/lib/private/preview.php b/lib/private/preview.php index 266f7795f12..ff93f438f73 100755 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -9,7 +9,7 @@ * Thumbnails: * structure of filename: * /data/user/thumbnails/pathhash/x-y.png - * + * */ namespace OC; @@ -40,6 +40,7 @@ class Preview { private $maxX; private $maxY; private $scalingup; + private $mimetype; //preview images object /** @@ -59,11 +60,18 @@ class Preview { * @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 bool $scalingUp Disable/Enable upscaling of previews - * @return mixed (bool / string) + * @return mixed (bool / string) * false if thumbnail does not exist * path to thumbnail if thumbnail exists */ public function __construct($user='', $root='/', $file='', $maxX=1, $maxY=1, $scalingUp=true) { + //init fileviews + if($user === ''){ + $user = \OC_User::getUser(); + } + $this->fileView = new \OC\Files\View('/' . $user . '/' . $root); + $this->userView = new \OC\Files\View('/' . $user); + //set config $this->configMaxX = \OC_Config::getValue('preview_max_x', null); $this->configMaxY = \OC_Config::getValue('preview_max_y', null); @@ -75,13 +83,6 @@ class Preview { $this->setMaxY($maxY); $this->setScalingUp($scalingUp); - //init fileviews - if($user === ''){ - $user = \OC_User::getUser(); - } - $this->fileView = new \OC\Files\View('/' . $user . '/' . $root); - $this->userView = new \OC\Files\View('/' . $user); - $this->preview = null; //check if there are preview backends @@ -166,10 +167,21 @@ class Preview { */ public function setFile($file) { $this->file = $file; + if ($file !== '') { + $this->mimetype = $this->fileView->getMimeType($this->file); + } return $this; } /** + * @brief set mimetype explicitely + * @param string $mimetype + */ + public function setMimetype($mimetype) { + $this->mimetype = $mimetype; + } + + /** * @brief set the the max width of the preview * @param int $maxX * @return $this @@ -265,7 +277,7 @@ class Preview { $fileInfo = $this->fileView->getFileInfo($file); $fileId = $fileInfo['fileid']; - + $previewPath = $this->getThumbnailsFolder() . '/' . $fileId . '/'; $this->userView->deleteAll($previewPath); $this->userView->rmdir($previewPath); @@ -274,7 +286,7 @@ class Preview { /** * @brief check if thumbnail or bigger version of thumbnail of file is cached - * @return mixed (bool / string) + * @return mixed (bool / string) * false if thumbnail does not exist * path to thumbnail if thumbnail exists */ @@ -386,11 +398,10 @@ class Preview { } if(is_null($this->preview)) { - $mimetype = $this->fileView->getMimeType($file); $preview = null; foreach(self::$providers as $supportedMimetype => $provider) { - if(!preg_match($supportedMimetype, $mimetype)) { + if(!preg_match($supportedMimetype, $this->mimetype)) { continue; } @@ -516,7 +527,7 @@ class Preview { $cropY = 0; $image->crop($cropX, $cropY, $x, $y); - + $this->preview = $image; return; } @@ -598,7 +609,7 @@ class Preview { public static function post_write($args) { self::post_delete($args); } - + public static function post_delete($args) { $path = $args['path']; if(substr($path, 0, 1) === '/') { |