summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <morris.jobke@gmail.com>2013-11-28 12:48:19 -0800
committerMorris Jobke <morris.jobke@gmail.com>2013-11-28 12:48:19 -0800
commit0cbe9d79baec7aa3a38dfc9b5db8b5a1eee7b930 (patch)
tree5158888d5484c74ebbeadb78087f56c664ac4846
parentf723bf744a2c32e310461fa51f85fd3bb0e9fa44 (diff)
parentb3724cd9c699522c8ec3c6754670b505d3481736 (diff)
downloadnextcloud-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.php10
-rw-r--r--apps/files_versions/ajax/preview.php5
-rwxr-xr-xlib/private/preview.php41
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) === '/') {