fileSystemRoot/lib/foldermanagement/Folder.inc"); require_once("$default->fileSystemRoot/lib/users/User.inc"); require_once("$default->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/subscriptions/SubscriptionEngine.inc"); require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionManager.inc"); require_once("$default->fileSystemRoot/presentation/Html.inc"); require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); require_once("deleteDocumentUI.inc"); $aNondeletedDocs = array(); if (!checkSession()) { die(); } if (isset($fRememberDocumentID)) { $fDocumentIDs = $_SESSION['documents'][$fRememberDocumentID]; } else { $sUniqueID = KTUtil::randomString(); $_SESSION["documents"][$sUniqueID] = $fDocumentIDs; $fRememberDocumentID = $sUniqueID; } if (!isset($fDocumentIDs)) { //no document selected for deletion require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); $oPatternCustom = & new PatternCustom(); $oPatternCustom->setHtml(renderErrorPage(_("No document currently selected"))); $main->setCentralPayload($oPatternCustom); $main->render(); exit(0); } // Check permission and collaboration for all documents for ($i = 0; $i < count($fDocumentIDs); $i++) { $oDocument = Document::get($fDocumentIDs[$i]); if (!Permission::userHasDocumentWritePermission($oDocument)) { // user does not have permission to delete the document require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); $oPatternCustom = & new PatternCustom(); $oPatternCustom->setHtml(renderErrorPage(_("You do not have, at least, permission to delete one document") . ": " . $oDocument->getName() . "
" . _("Please deselect it and retry."))); $main->setCentralPayload($oPatternCustom); $main->render(); exit(0); } } if (!isset($fDeleteConfirmed)) { //get confirmation first require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); $oPatternCustom = & new PatternCustom(); $oPatternCustom->addHtml(getPage($fRememberDocumentID)); $main->setCentralPayload($oPatternCustom); $main->render(); exit(0); } /* Delete all files If an error occured while deleting a file, then: - make a rollback of the current file - insert document object in $aNondeletedDocs array - delete the other selected file At the end check the $aNondeletedDocs array - if is empty then OK - if is not empty then show the nondeleted files list */ for ($i = 0; $i < count($fDocumentIDs); $i++) { $oDocument = Document::get($fDocumentIDs[$i]); if (!isset($oDocument)) { // Store the doc with problem array_push($aNondeletedDocs, array($oDocument, _("Could not load document in database"))); } // New transaction $sDocumentPath = Folder::getFolderPath($oDocument->getFolderID()) . $oDocument->getFileName(); $oDocumentTransaction = & new DocumentTransaction($fDocumentIDs[$i], "Document deleted", DELETE); $oDocumentTransaction->create(); // flip the status id $oDocument->setStatusID(DELETED); // store if (!$oDocument->update()) { //could not update the documents status in the db $default->log->error("deleteDocumentBL.php DB error deleting document " . $oDocument->getFileName() . " from folder " . Folder::getFolderPath($oDocument->getFolderID()) . " id=" . $oDocument->getFolderID()); //get rid of the document transaction $oDocumentTransaction->delete(); // Store the doc with problem array_push($aNondeletedDocs, array($oDocument, _("Could not update document in database"))); } // now move the document to the delete folder if (PhysicalDocumentManager::delete($oDocument)) { //could not delete the document from the file system $default->log->error("deleteDocumentBL.php Filesystem error deleting document " . $oDocument->getFileName() . " from folder " . Folder::getFolderPath($oDocument->getFolderID()) . " id=" . $oDocument->getFolderID()); //reverse the document deletion $oDocument->setStatusID(LIVE); $oDocument->update(); //get rid of the document transaction $oDocumentTransaction->delete(); // Store the doc with problem array_push($aNondeletedDocs, array($oDocument, _("Could not delete document on file system"))); } // successfully deleted the document $default->log->info("deleteDocumentBL.php successfully deleted document " . $oDocument->getFileName() . " from folder " . Folder::getFolderPath($oDocument->getFolderID()) . " id=" . $oDocument->getFolderID()); // fire subscription alerts for the deleted document $count = SubscriptionEngine::fireSubscription($fDocumentIDs[$i], SubscriptionConstants::subscriptionAlertType("RemoveSubscribedDocument"), SubscriptionConstants::subscriptionType("DocumentSubscription"), array( "folderID" => $oDocument->getFolderID(), "removedDocumentName" => $oDocument->getName(), "folderName" => Folder::getFolderDisplayPath($oDocument->getFolderID()), )); $default->log->info("deleteDocumentBL.php fired $count subscription alerts for removed document " . $oDocument->getName()); // remove all document subscriptions for this document if (SubscriptionManager::removeSubscriptions($fDocumentIDs[$i], SubscriptionConstants::subscriptionType("DocumentSubscription"))) { $default->log->info("deleteDocumentBL.php removed all subscriptions for this document"); } else { $default->log->error("deleteDocumentBL.php couldn't remove document subscriptions"); } } // List nondeleted documents if (!empty($aNondeletedDocs) ) { require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); $oPatternCustom = & new PatternCustom(); $sError = _("An error occured deleting the following document(s):") . "

"; foreach ($aNondeletedDocs as $oDoc) { $sError .= $oDoc[0]->getDisplayPath() . ":   " .$oDoc[1] . "
"; } $sError .= "
" . _("The other documents are been deleted."); $oPatternCustom->addHtml(renderErrorPage($sError)); $main->setCentralPayload($oPatternCustom); $main->render(); exit(0); } // redirect to the browse folder page redirect("$default->rootUrl/control.php?action=browse&fFolderID=" . $oDocument->getFolderID()); exit(0); ?>