From fc8c1ba6ca635c937d131d109f5817b06f28a757 Mon Sep 17 00:00:00 2001 From: Megan Watson Date: Sat, 28 Nov 2009 11:27:07 +0200 Subject: [PATCH] Moved the thumbnails behind a view controller and moved them into the external var directory. PT: 1829778 --- plugins/thumbnails/thumbnail_view.php | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ plugins/thumbnails/thumbnails.php | 33 +++++++++++++++++++-------------- 2 files changed, 75 insertions(+), 14 deletions(-) create mode 100644 plugins/thumbnails/thumbnail_view.php diff --git a/plugins/thumbnails/thumbnail_view.php b/plugins/thumbnails/thumbnail_view.php new file mode 100644 index 0000000..78124ca --- /dev/null +++ b/plugins/thumbnails/thumbnail_view.php @@ -0,0 +1,56 @@ +verify(); + +if(PEAR::isError($sessionStatus)){ + echo $sessionStatus->getMessage(); + exit; +} + +if(!$sessionStatus){ + exit; +} + +// Get the document +$documentId = $_GET['documentId']; +$oDocument = Document::get($documentId); + +if (PEAR::isError($oDocument)) { + exit; +} + +// Check the document is available and the user has permission to view it +if ($oDocument->getStatusID() == ARCHIVED) { + exit; +} else if ($oDocument->getStatusID() == DELETED) { + exit; +}else if (!Permission::userHasDocumentReadPermission($oDocument)) { + exit; +} + +// Get and render the thumbnail +// Check for the thumbnail +$varDir = $default->varDirectory; +$thumbnailCheck = $varDir . '/thumbnails/'.$documentId.'.jpg'; + +if(!file_exists($thumbnailCheck)){ + exit; +} + +// Use correct slashes for windows +if (strpos(PHP_OS, 'WIN') !== false) { + $thumbnailCheck = str_replace('/', '\\', $thumbnailCheck); +} + +$fileSize = filesize($thumbnailCheck); + +header("Content-Type: image/jpeg"); +header("Content-Length: {$fileSize}"); + +echo readfile($thumbnailCheck); +exit; +?> \ No newline at end of file diff --git a/plugins/thumbnails/thumbnails.php b/plugins/thumbnails/thumbnails.php index c99060f..4fbf99b 100755 --- a/plugins/thumbnails/thumbnails.php +++ b/plugins/thumbnails/thumbnails.php @@ -155,7 +155,7 @@ class thumbnailGenerator extends BaseProcessor $pdfFile = $pdfDir .DIRECTORY_SEPARATOR. $this->document->iId.'.pdf'; } - $thumbnaildir = $default->internalVarDirectory.DIRECTORY_SEPARATOR.'thumbnails'; + $thumbnaildir = $default->varDirectory.DIRECTORY_SEPARATOR.'thumbnails'; if (stristr(PHP_OS,'WIN')) { $thumbnaildir = str_replace('/', '\\', $thumbnaildir); @@ -189,7 +189,7 @@ class thumbnailGenerator extends BaseProcessor else { $cmd = "{$pathConvert} {$pdfFile}[0] -resize 200x200 $thumbnailfile"; } - + $result = KTUtil::pexec($cmd); return true; } @@ -216,17 +216,16 @@ class ThumbnailViewlet extends KTDocumentViewlet { return ''; } - // Check for the thumbnail + // Check that the thumbnail exists on disk global $default; - $varDir = $default->internalVarDirectory; - $thumbnailfile = $varDir . '/thumbnails/'.$documentId.'.jpg'; + $varDir = $default->varDirectory; + $thumbnailCheck = $varDir . '/thumbnails/'.$documentId.'.jpg'; - if (stristr(PHP_OS,'WIN')) { - $varDir = str_replace('/', '\\', $varDir); + // Use correct slashes for windows + if (strpos(PHP_OS, 'WIN') !== false) { + $thumbnailCheck = str_replace('/', '\\', $thumbnailCheck); } - $thumbnailCheck = $varDir . '/thumbnails/'.$documentId.'.jpg'; - // if the thumbnail doesn't exist try to create it if (!file_exists($thumbnailCheck)){ $thumbnailer = new thumbnailGenerator(); @@ -239,18 +238,24 @@ class ThumbnailViewlet extends KTDocumentViewlet { } } - // check for existence and status of instant view plugin + // check for existence and status of the instant view plugin $url = ''; if (KTPluginUtil::pluginIsActive('instaview.processor.plugin')) { require_once KTPluginUtil::getPluginPath('instaview.processor.plugin') . 'instaViewLinkAction.php'; $ivLinkAction = new instaViewLinkAction(); $url = $ivLinkAction->getViewLink($documentId, 'document'); - } + } // Get the url to the thumbnail and render it - $thumbnailUrl = str_replace($default->internalVarDirectory, 'var', $thumbnailfile); - $oTemplate->setData(array( + // Ensure url has correct slashes + $sHostPath = KTUtil::kt_url(); + $plugin_path = KTPluginUtil::getPluginPath('thumbnails.generator.processor.plugin'); + $thumbnailUrl = $plugin_path . 'thumbnail_view.php?documentId='.$documentId; + $thumbnailUrl = str_replace('\\', '/', $thumbnailUrl); + $thumbnailUrl = str_replace(KT_DIR, $sHostPath, $thumbnailUrl); + + $oTemplate->setData(array( 'thumbnail' => $thumbnailUrl, 'url' => $url )); @@ -259,7 +264,7 @@ class ThumbnailViewlet extends KTDocumentViewlet { public function get_width($documentId){ global $default; - $varDir = $default->internalVarDirectory; + $varDir = $default->varDirectory; $thumbnailfile = $varDir . '/thumbnails/'.$documentId.'.jpg'; if(file_exists($thumbnailfile)){ return 200; -- libgit2 0.21.4