diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/downloadBL.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/downloadBL.php index 9c9479a..56967c1 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/downloadBL.php +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/downloadBL.php @@ -38,56 +38,66 @@ require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentTransactio require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); +require_once(KT_LIB_DIR . '/storage/storagemanager.inc.php'); +$oStorage =& KTStorageManagerUtil::getSingleton(); + // start the session for a download- workaround for the IE SSL bug -if (checkSession(true)) { - if (isset($fDocumentID)) { - $oDocument = Document::get($fDocumentID); - if (Permission::userHasDocumentReadPermission($oDocument)) { - if (isset($fForInlineView)) { - $oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Inline view", VIEW); - $oDocumentTransaction->create(); - PhysicalDocumentManager::inlineViewPhysicalDocument($fDocumentID); - } else { - //if the user has document read permission, perform the download - if (isset($fVersion)) { - // we're downloading an old version of the document - $oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Document version $fVersion downloaded", DOWNLOAD); - $oDocumentTransaction->create(); - - // if the document is currently checked out, and we're the version we're downloading - // is the same as the current version, then download the current version of the document - if ($oDocument->getIsCheckedOut() && ($fVersion == $oDocument->getVersion())) { - PhysicalDocumentManager::downloadPhysicalDocument($fDocumentID); - } else { - PhysicalDocumentManager::downloadVersionedPhysicalDocument($fDocumentID, $fVersion); - } - } else { - // download the current version - $oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Document downloaded", DOWNLOAD); - $oDocumentTransaction->create(); - PhysicalDocumentManager::downloadPhysicalDocument($fDocumentID); - } - exit; - } - } else { - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = new PatternCustom(); - if ($oDocument) { - $oPatternCustom->setHtml("\n"); - } else { - $oPatternCustom->setHtml("\n"); - } - $main->setErrorMessage(_("Either you do not have permission to view this document, or the document you have chosen no longer exists on the file system.")); - $main->setCentralPayload($oPatternCustom); - $main->render(); - } +if (!checkSession(true)) { + exit(0); +} + +if (!isset($fDocumentID)) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = new PatternCustom(); + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("You have not chosen a document to view")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +$oDocument = Document::get($fDocumentID); +if (!Permission::userHasDocumentReadPermission($oDocument)) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = new PatternCustom(); + if ($oDocument) { + $oPatternCustom->setHtml("\n"); } else { - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = new PatternCustom(); $oPatternCustom->setHtml("\n"); - $main->setErrorMessage(_("You have not chosen a document to view")); - $main->setCentralPayload($oPatternCustom); - $main->render(); } -} + $main->setErrorMessage(_("Either you do not have permission to view this document, or the document you have chosen no longer exists on the file system.")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +if (isset($fForInlineView)) { + $oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Inline view", VIEW); + $oDocumentTransaction->create(); + PhysicalDocumentManager::inlineViewPhysicalDocument($fDocumentID); + exit(0); +} + +//if the user has document read permission, perform the download +if (isset($fVersion)) { + // we're downloading an old version of the document + $oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Document version $fVersion downloaded", DOWNLOAD); + $oDocumentTransaction->create(); + + // if the document is currently checked out, and we're the version we're downloading + // is the same as the current version, then download the current version of the document + if ($oDocument->getIsCheckedOut() && ($fVersion == $oDocument->getVersion())) { + $oStorage->download($oDocument); + } else { + PhysicalDocumentManager::downloadVersionedPhysicalDocument($fDocumentID, $fVersion); + } + exit(0); +} + +// download the current version +$oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Document downloaded", DOWNLOAD); +$oDocumentTransaction->create(); +$oStorage->download($oDocument); +exit(0); + ?>