From 039f02fe9b225a52f2bb826dd1215701c1bdbdba Mon Sep 17 00:00:00 2001 From: michael Date: Tue, 10 Jun 2003 12:32:26 +0000 Subject: [PATCH] added restore deleted documents admin pages --- presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentBL.php | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentsUI.inc | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+), 0 deletions(-) create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentBL.php create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentsUI.inc diff --git a/presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentBL.php b/presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentBL.php new file mode 100644 index 0000000..2f121d3 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentBL.php @@ -0,0 +1,88 @@ +fileSystemRoot/lib/documentmanagement/Document.inc"); +require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentTransaction.inc"); +require_once("$default->fileSystemRoot/lib/documentmanagement/PhysicalDocumentManager.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternMainPage.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc"); +require_once("$default->uiDirectory/documentmanagement/documentUI.inc"); +require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); +require_once("restoreDeletedDocumentsUI.inc"); +require_once("$default->fileSystemRoot/presentation/Html.inc"); + +/** + * $Id$ + * + * Business logic for restoring deleted documents. + * + * Licensed under the GNU GPL. For full terms see the file DOCS/COPYING. + * + * @version $Revision$ + * @author Michael Joseph , Jam Warehouse (Pty) Ltd, South Africa + * @package presentation.lookAndFeel.knowledgeTree.administration.documentmanagement + */ + +if (checkSession()) { + global $default; + + $oContent = new PatternCustom(); + + if ($fDocumentID && $fFolderID) { + if (isset($fForMove)) { + if ($fConfirmed) { + $oDocument = Document::get($fDocumentID); + $oFolder = Folder::get($fFolderID); + if ($oDocument && $oFolder) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + // restore the document + $oDocument->setStatusID(LIVE); + $oDocument->setFolderID($oFolder->getID()); + + // first try moving the document on the filesystem + if (PhysicalDocumentManager::restore($oDocument)) { + // now update the db + if ($oDocument->update(true)) { + // display confirmation page + $oContent->setHtml(renderStatusPage($oDocument)); + } else { + $default->log->error("restoreDeletedDocumentBL.php couldn't update db for " . arrayToString($oDocument)); + // TODO: display error + $oContent->setHtml(renderErrorPage("The document could not be restored. Please try again later")); + } + } else { + $default->log->error("restoreDeletedDocumentBL.php filesystem restore failed for " . arrayToString($oDocument)); + // TODO: display error + $oContent->setHtml(renderErrorPage("The document could not be restored. Please try again later")); + } + } else { + // no document + $default->log->error("restoreDeletedDocumentBL.php documentID=$fDocumentID folderID=$fFolderID instantiation failed"); + // TODO: redirect to list page with error + controllerRedirect("deletedDocuments", ""); + } + } else { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oContent->setHtml(renderConfirmationPage($fDocumentID, $fFolderID)); + } + } else { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + // display browse page + $oContent->setHtml(renderFolderBrowsePage($fDocumentID, $fFolderID)); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fDocumentID=$fDocumentID&fFolderID=$fFolderID"); + } + } else { + // no document + $default->log->error("restoreDeletedDocumentBL.php no document ID supplied"); + // TODO: redirect to list page with error + controllerRedirect("deletedDocuments", ""); + } + + $main->setCentralPayload($oContent); + if ($main->getFormAction() == "") { + $main->setFormAction($_SERVER["PHP_SELF"]); + } + $main->render(); +} +?> \ No newline at end of file diff --git a/presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentsUI.inc b/presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentsUI.inc new file mode 100644 index 0000000..44e7229 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/documentmanagement/restoreDeletedDocumentsUI.inc @@ -0,0 +1,68 @@ +, Jam Warehouse (Pty) Ltd, South Africa + * @package presentation.lookAndFeel.knowledgeTree.administration.documentmanagement + */ + +/** + * Displays the status of expunged documents + */ +function renderStatusPage($oDocument) { + global $default; + + $sToRender = renderHeading("Restore Deleted Document Status"); + $sToRender .= ""; + $sToRender .= "\n"; + $sToRender .= ""; + + $sToRender .= ""); + $sToRender .= "
The document " . $oDocument->getName() . " was successfully restored:
" . generateControllerLink("viewDocument", "fDocumentID=" . $oDocument->getID(), $oDocument->getDisplayPath(true)) . "\n"; + $sToRender .= "
" . generateControllerLink("deletedDocuments", "", "graphicsUrl/widgets/back.gif\" border=\"0\">
"; + return $sToRender; +} + +/** + * Gives the user a last chance to bail out before restoring the document + */ +function renderConfirmationPage($iDocumentID, $iFolderID) { + global $default; + $sToRender = renderHeading("Restore Deleted Document"); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
Are you sure you want to restore deleted document " . Document::getDocumentName($iDocumentID) . "
to folder " . Folder::getFolderDisplayPath($iFolderID) . "?
" . generateControllerLink("restoreDeletedDocument", "fDocumentID=$iDocumentID&fFolderID=$iFolderID&fForMove=1&fConfirmed=1", "graphicsUrl/widgets/restore.gif\" border=\"0\"/>") . " "; + $sToRender .= generateControllerLink("restoreDeletedDocument", "fDocumentID=$iDocumentID&fFolderID=$iFolderID", "graphicsUrl/widgets/cancel.gif\" border=\"0\"/>") . "
\n"; + return $sToRender; +} + +/** + * Displays the folder browse page + */ +function renderFolderBrowsePage($iDocumentID, $iFolderID) { + global $default; + $sToRender = renderHeading("Restore Deleted Document"); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . renderFolderPath($iFolderID, "/control.php?action=restoreDeletedDocument&fDocumentID=$iDocumentID") . "
\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . renderFolderList($iFolderID, "control.php?action=restoreDeletedDocument&fDocumentID=$iDocumentID") . "
"; + $sToRender .= "
Select the folder you would like to restore deleted document " . Document::getDocumentName($iDocumentID) . " to.
graphicsUrl/widgets/restorehere.gif\" border=\"0\"/> " . generateControllerLink("deletedDocuments", "", "graphicsUrl/widgets/cancel.gif\" border=\"0\">") . "
\n"; + return $sToRender; +} +?> \ No newline at end of file -- libgit2 0.21.4