From ceb6808c689de93d7d03acb72d891c28290c6c09 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 22 Mar 2020 09:26:47 +0100 Subject: [PATCH 01/21] pass $target to hasRawPreview and getRawPreview just like createRawPreview --- SeedDMS_Preview/Preview/PdfPreviewer.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/SeedDMS_Preview/Preview/PdfPreviewer.php b/SeedDMS_Preview/Preview/PdfPreviewer.php index 6ce557810..202fe4e18 100644 --- a/SeedDMS_Preview/Preview/PdfPreviewer.php +++ b/SeedDMS_Preview/Preview/PdfPreviewer.php @@ -152,10 +152,11 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base { * @param string $dir directory relative to $this->previewDir * @return boolean true if preview exists, otherwise false */ - public function hasRawPreview($infile, $dir) { /* {{{ */ + public function hasRawPreview($infile, $dir, $target='') { /* {{{ */ if(!$this->previewDir) return false; - $target = $this->previewDir.$dir.md5($infile); + if(!$target) + $target = $this->previewDir.$dir.md5($infile); if($target !== false && file_exists($target.'.pdf') && filectime($target.'.pdf') >= filectime($infile)) { return true; } @@ -193,11 +194,12 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base { * @param string $dir directory relative to $this->previewDir * @return boolean/string image content if preview exists, otherwise false */ - public function getRawPreview($infile, $dir) { /* {{{ */ + public function getRawPreview($infile, $dir, $target='') { /* {{{ */ if(!$this->previewDir) return false; - $target = $this->previewDir.$dir.md5($infile); + if(!$target) + $target = $this->previewDir.$dir.md5($infile); if($target && file_exists($target.'.pdf')) { $this->sendFile($target.'.pdf'); } From 80348ec0c39486722e6677d323495500d6a087f7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 22 Mar 2020 09:27:41 +0100 Subject: [PATCH 02/21] set timeout from settings --- controllers/class.Preview.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/class.Preview.php b/controllers/class.Preview.php index 4ddd7b5cc..e0cc065f2 100644 --- a/controllers/class.Preview.php +++ b/controllers/class.Preview.php @@ -52,7 +52,7 @@ class SeedDMS_Controller_Preview extends SeedDMS_Controller_Common { $this->params['content'] = $content; if(null === $this->callHook('version')) { if($width) - $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width); + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width, $settings->_cmdTimeout); else $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir); $previewer->setConverters($settings->_converters['preview']); From 7a25859a1923d1fe36b27d15ca926d09e33c6fe5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 22 Mar 2020 09:30:42 +0100 Subject: [PATCH 03/21] new version 1.3.1 --- SeedDMS_Preview/package.xml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/SeedDMS_Preview/package.xml b/SeedDMS_Preview/package.xml index 47a068c53..9bb36ad03 100644 --- a/SeedDMS_Preview/package.xml +++ b/SeedDMS_Preview/package.xml @@ -11,11 +11,11 @@ uwe@steinmann.cx yes - 2020-02-17 + 2020-03-21 - 1.3.0 - 1.3.0 + 1.3.1 + 1.3.1 stable @@ -23,7 +23,7 @@ GPL License -add new methode getPreviewFile() +add parameter $target to SeedDMS_Preview_pdfPreviewer::hasRawPreview() and SeedDMS_Preview_pdfPreviewer::getRawPreview() @@ -420,5 +420,21 @@ new parameter for enabling/disabling xsendfile fix creation of pdf preview if document content class is not SeedDMS_Core_DocumentContent + + 2020-02-17 + + + 1.3.0 + 1.3.0 + + + stable + stable + + GPL License + +add new methode getPreviewFile() + + From f17b120126d53595f4f5c66f554638c49b12747c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 22 Mar 2020 09:31:31 +0100 Subject: [PATCH 04/21] move code into controller and add hooks --- controllers/class.PdfPreview.php | 74 ++++++++++++++++++++++++++++++++ op/op.PdfPreview.php | 18 ++++---- 2 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 controllers/class.PdfPreview.php diff --git a/controllers/class.PdfPreview.php b/controllers/class.PdfPreview.php new file mode 100644 index 000000000..dfe10ef71 --- /dev/null +++ b/controllers/class.PdfPreview.php @@ -0,0 +1,74 @@ + + * @copyright Copyright (C) 2010-2013 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Class which does the busines logic for previewing a document + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2010-2013 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_Controller_PdfPreview extends SeedDMS_Controller_Common { + + public function run() { + global $theme; + $dms = $this->params['dms']; + $type = $this->params['type']; + $settings = $this->params['settings']; + + switch($type) { + case "version": + $version = $this->params['version']; + $document = $this->params['document']; + if($version < 1) { + $content = $this->callHook('documentLatestContent', $document); + if($content === null) + $content = $document->getLatestContent(); + } else { + $content = $this->callHook('documentContent', $document, $version); + if($content === null) + $content = $document->getContentByVersion($version); + } + if (!is_object($content)) { + $this->errormsg = 'invalid_version'; + return false; + } + /* set params['content'] for compatiblity with older extensions which + * expect the content in the controller + */ + $this->params['content'] = $content; + if(null === $this->callHook('version')) { + $previewer = new SeedDMS_Preview_PdfPreviewer($settings->_cacheDir, $settings->_cmdTimeout); + $previewer->setConverters(isset($settings->_converters['pdf']) ? $settings->_converters['pdf'] : array()); + $previewer->setXsendfile($settings->_enableXsendfile); + if(!$previewer->hasPreview($content)) { + add_log_line(""); + if(!$previewer->createPreview($content)) { + add_log_line("", PEAR_LOG_ERR); + } + } + if(!$previewer->hasPreview($content)) { + header('Content-Type: application/pdf'); + readfile('../views/'.$theme.'/images/empty.pdf'); + exit; + } + header('Content-Type: application/pdf'); + $previewer->getPreview($content); + } + break; + } + return true; + } +} diff --git a/op/op.PdfPreview.php b/op/op.PdfPreview.php index 62bc00dcb..00fae0395 100644 --- a/op/op.PdfPreview.php +++ b/op/op.PdfPreview.php @@ -27,12 +27,11 @@ include("../inc/inc.Init.php"); include("../inc/inc.Extension.php"); include("../inc/inc.DBInit.php"); include("../inc/inc.ClassUI.php"); +include("../inc/inc.ClassController.php"); include("../inc/inc.Authentication.php"); -/** - * Include class to preview documents - */ -require_once("SeedDMS/Preview.php"); +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user)); $documentid = $_GET["documentid"]; if (!isset($documentid) || !is_numeric($documentid) || intval($documentid)<1) { @@ -52,10 +51,13 @@ if(isset($_GET['version'])) { $version = $_GET["version"]; if (!is_numeric($version)) exit; - if(intval($version)<1) - $object = $document->getLatestContent(); - else - $object = $document->getContentByVersion($version); + $controller->setParam('document', $document); + $controller->setParam('version', $version); + $controller->setParam('type', 'version'); + if(!$controller->run()) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); + } + exit; } elseif(isset($_GET['file'])) { $file = $_GET['file']; if (!is_numeric($file) || intval($file)<1) From cf1e635c09596662b309ca9646aad704fc564734 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 23 Mar 2020 06:47:18 +0100 Subject: [PATCH 05/21] include Preview class --- op/op.PdfPreview.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/op/op.PdfPreview.php b/op/op.PdfPreview.php index 00fae0395..9f0ad2849 100644 --- a/op/op.PdfPreview.php +++ b/op/op.PdfPreview.php @@ -30,6 +30,11 @@ include("../inc/inc.ClassUI.php"); include("../inc/inc.ClassController.php"); include("../inc/inc.Authentication.php"); +/** + * Include class to preview documents + */ +require_once("SeedDMS/Preview.php"); + $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user)); From 072d203379123428401da62853c3e798c065aaee Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 23 Mar 2020 12:10:04 +0100 Subject: [PATCH 06/21] return false if hooks preRemove[Document|Folder] return false --- controllers/class.RemoveDocument.php | 2 +- controllers/class.RemoveFolder.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/class.RemoveDocument.php b/controllers/class.RemoveDocument.php index e522ed268..187fec2e8 100644 --- a/controllers/class.RemoveDocument.php +++ b/controllers/class.RemoveDocument.php @@ -39,7 +39,7 @@ class SeedDMS_Controller_RemoveDocument extends SeedDMS_Controller_Common { if(false === $this->callHook('preRemoveDocument')) { if(empty($this->errormsg)) $this->errormsg = 'hook_preRemoveDocument_failed'; - return null; + return false; } $result = $this->callHook('removeDocument', $document); diff --git a/controllers/class.RemoveFolder.php b/controllers/class.RemoveFolder.php index c7c4e01b0..b12c10eae 100644 --- a/controllers/class.RemoveFolder.php +++ b/controllers/class.RemoveFolder.php @@ -37,7 +37,7 @@ class SeedDMS_Controller_RemoveFolder extends SeedDMS_Controller_Common { if(false === $this->callHook('preRemoveFolder')) { if(empty($this->errormsg)) $this->errormsg = 'hook_preRemoveFolder_failed'; - return null; + return false; } $result = $this->callHook('removeFolder', $folder); From bab648b98812b5b575735083310e86c9b288a866 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 24 Mar 2020 06:46:22 +0100 Subject: [PATCH 07/21] check if index and indexconf is set --- out/out.Indexer.php | 37 ++++++++++++++++--------------- views/bootstrap/class.Indexer.php | 5 ++++- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/out/out.Indexer.php b/out/out.Indexer.php index 623fe8c2c..24c8f5467 100644 --- a/out/out.Indexer.php +++ b/out/out.Indexer.php @@ -40,30 +40,31 @@ if(!$settings->_enableFullSearch) { UI::exitError(getMLText("admin_tools"),getMLText("fulltextsearch_disabled")); } +$index = null; if(!isset($_GET['action']) || $_GET['action'] == 'show') { - if(isset($_GET['create']) && $_GET['create'] == 1) { - if(isset($_GET['confirm']) && $_GET['confirm'] == 1) { - $index = $indexconf['Indexer']::create($settings->_luceneDir); + if($indexconf) { + if(isset($_GET['create']) && $_GET['create'] == 1) { + if(isset($_GET['confirm']) && $_GET['confirm'] == 1) { + $index = $indexconf['Indexer']::create($settings->_luceneDir); + if(!$index) { + UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); + } + $indexconf['Indexer']::init($settings->_stopWordsFile); + } else { + header('Location: out.CreateIndex.php'); + exit; + } + } else { + $index = $indexconf['Indexer']::open($settings->_luceneDir); if(!$index) { - UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); + $index = $indexconf['Indexer']::create($settings->_luceneDir); + if(!$index) { + UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); + } } $indexconf['Indexer']::init($settings->_stopWordsFile); - } else { - header('Location: out.CreateIndex.php'); - exit; } - } else { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - if(!$index) { - $index = $indexconf['Indexer']::create($settings->_luceneDir); - if(!$index) { - UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); - } - } - $indexconf['Indexer']::init($settings->_stopWordsFile); } -} else { - $index = null; } if (!isset($_GET["folderid"]) || !is_numeric($_GET["folderid"]) || intval($_GET["folderid"])<1) { diff --git a/views/bootstrap/class.Indexer.php b/views/bootstrap/class.Indexer.php index 5fb16c326..a28cffd5f 100644 --- a/views/bootstrap/class.Indexer.php +++ b/views/bootstrap/class.Indexer.php @@ -201,6 +201,7 @@ $(document).ready( function() { $this->contentStart(); $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("update_fulltext_index")); + if($index) { ?>