From 578bd5cfbf55b547eb3e573ec0d49bc11cb7900b Mon Sep 17 00:00:00 2001 From: nbm Date: Mon, 19 Sep 2005 21:10:34 +0000 Subject: [PATCH] Flatten the conditionals so that the logic and code is easier to understand. --- presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentBL.php | 311 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 file changed, 153 insertions(+), 158 deletions(-) diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentBL.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentBL.php index 476191a..0cac715 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentBL.php +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentBL.php @@ -30,9 +30,7 @@ require_once("../../../../config/dmsDefaults.php"); KTUtil::extractGPC('fConfirmed', 'fDocumentIDs', 'fFolderID', 'fForMove', 'fRememberDocumentID'); require_once("$default->fileSystemRoot/lib/security/Permission.inc"); - require_once("$default->fileSystemRoot/lib/users/User.inc"); - require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentTransaction.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/PhysicalDocumentManager.inc"); @@ -49,165 +47,162 @@ require_once("$default->fileSystemRoot/presentation/Html.inc"); $aUnmovedDocs = array(); -if (checkSession()) { +if (!checkSession()) { + die(); +} + +if (isset($fRememberDocumentID)) { + $fDocumentIDs = $_SESSION['documents'][$fRememberDocumentID]; +} else { + $sUniqueID = KTUtil::randomString(); + $_SESSION["documents"][$sUniqueID] = $fDocumentIDs; + $fRememberDocumentID = $sUniqueID; +} + + +/* if (!isset($fDocumentIDs) || !isset($fFolderID)) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(""); + $main->setCentralPayload($oPatternCustom); + $main->setErrorMessage(_("No document/folder selected")); + $main->render(); + exit(0); +} */ + +if (!isset($fForMove)) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID)); + $main->setCentralPayload($oPatternCustom); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fRememberDocumentID=$fRememberDocumentID&fFolderID=$fFolderID"); + $main->render(); + exit(0); +} + +if (!$fConfirmed) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + + // Check for all docs + for ($i = 0; $i < count($fDocumentIDs); $i++) { + $oDocument = Document::get($fDocumentIDs[$i]); + + // check if the selected folder has the same document type as the document we're moving + if (!Folder::folderIsLinkedToDocType($fFolderID, $oDocument->getDocumentTypeID())) { + // the right document type isn't mapped + $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID, _("You can't move the document to this folder because it cannot store the document type of your document.") . " " . _("Please choose another directory"))); + break; + } + + // check that there is no filename collision in the destination directory + $sNewDocumentFileSystemPath = Folder::getFolderPath($fFolderID) . $oDocument->getFileName(); + + if (file_exists($sNewDocumentFileSystemPath)) { + // filename collision + $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID, _("This folder already contains a document of the same name.") . " " . _("Please choose another directory"))); + break; + } + // display confirmation page + $oPatternCustom->setHtml(getConfirmationPage($fFolderID, $fRememberDocumentID)); + } + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fRememberDocumentID=$fRememberDocumentID&fFolderID=$fFolderID"); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +for ($i = 0; $i < count($fDocumentIDs); $i++) { + + //we're trying to move a document + $oDocument = & Document::get($fDocumentIDs[$i]); + $oFolder = & Folder::get($fFolderID); + $iOldFolderID = $oDocument->getFolderID(); + + // check that there is no filename collision in the destination directory + $sNewDocumentFileSystemPath = Folder::getFolderPath($fFolderID) . $oDocument->getFileName(); + + if (file_exists($sNewDocumentFileSystemPath)) { + // Store the doc with problem + array_push($aUnmovedDocs, array($oDocument, _("This folder already contains a document of the same name. Please choose another directory"))); + continue; + } + + if (!Permission::userHasDocumentWritePermission($oDocument) || !Permission::userHasFolderWritePermission($oFolder)) { + array_push($aUnmovedDocs, array($oDocument, _("You do not have rights to move this document"))); + continue; + } + + //get the old document path + $sOldDocumentFileSystemPath = Folder::getFolderPath($iOldFolderID) . $oDocument->getFileName(); + + //put the document in the new folder + $oDocument->setFolderID($fFolderID); + if (!$oDocument->update(true)) { + //had a problem with the database + array_push($aUnmovedDocs, array($oDocument, _("Could not update document in database"))); + continue; + } + + //get the old document path + $sOldDocumentFileSystemPath = Folder::getFolderPath($iOldFolderID) . $oDocument->getFileName(); + //move the document on the file system + if (!PhysicalDocumentManager::moveDocument($sOldDocumentFileSystemPath, $oDocument, $oFolder)) { + $oDocument->setFolderID($iOldFolderID); + $oDocument->update(); - if (isset($fRememberDocumentID)) { - $fDocumentIDs = $_SESSION['documents'][$fRememberDocumentID]; - } else { - $sUniqueID = KTUtil::randomString(); - $_SESSION["documents"][$sUniqueID] = $fDocumentIDs; - $fRememberDocumentID = $sUniqueID; + // Store the doc with problem + array_push($aUnmovedDocs, array($oDocument, _("Could not move document on file system"))); + continue; } - - if (isset($fDocumentIDs) && isset($fFolderID)) { - if (isset($fForMove)) { - if ($fConfirmed) { - for ($i = 0; $i < count($fDocumentIDs); $i++) { - - //we're trying to move a document - $oDocument = & Document::get($fDocumentIDs[$i]); - $oFolder = & Folder::get($fFolderID); - $iOldFolderID = $oDocument->getFolderID(); - - // check that there is no filename collision in the destination directory - $sNewDocumentFileSystemPath = Folder::getFolderPath($fFolderID) . $oDocument->getFileName(); - if (!file_exists($sNewDocumentFileSystemPath)) { - - if (Permission::userHasDocumentWritePermission($oDocument) && Permission::userHasFolderWritePermission($oFolder)) { - //if the user has both document and folder write permissions - //get the old document path - $sOldDocumentFileSystemPath = Folder::getFolderPath($iOldFolderID) . $oDocument->getFileName(); - //put the document in the new folder - $oDocument->setFolderID($fFolderID); - if ($oDocument->update(true)) { - //get the old document path - $sOldDocumentFileSystemPath = Folder::getFolderPath($iOldFolderID) . $oDocument->getFileName(); - //move the document on the file system - if (PhysicalDocumentManager::moveDocument($sOldDocumentFileSystemPath, $oDocument, $oFolder)) { - // fire subscription alerts for the moved document (and the folder its in) - $count = SubscriptionEngine::fireSubscription($fDocumentIDs[$i], SubscriptionConstants::subscriptionAlertType("MovedDocument"), - SubscriptionConstants::subscriptionType("DocumentSubscription"), - array( "folderID" => $iOldFolderID, - "modifiedDocumentName" => $oDocument->getName(), - "oldFolderName" => Folder::getFolderName($iOldFolderID), - "newFolderName" => Folder::getFolderName($fFolderID) )); - $default->log->info("moveDocumentBL.php fired $count subscription alerts for moved document " . $oDocument->getName()); - - // fire folder subscriptions for the destination folder - $count = SubscriptionEngine::fireSubscription($fFolderID, SubscriptionConstants::subscriptionAlertType("MovedDocument"), - SubscriptionConstants::subscriptionType("FolderSubscription"), - array( "folderID" => $iOldFolderID, - "modifiedDocumentName" => $oDocument->getName(), - "oldFolderName" => Folder::getFolderName($iOldFolderID), - "newFolderName" => Folder::getFolderName($fFolderID) )); - $default->log->info("moveDocumentBL.php fired $count (folderID=$fFolderID) folder subscription alerts for moved document " . $oDocument->getName()); - } else { - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - //we couldn't move the document on the file system - //so reset the database values - $oDocument->setFolderID($iOldFolderID); - $oDocument->update(); - - // Store the doc with problem - array_push($aUnmovedDocs, array($oDocument, _("Could not move document on file system"))); - } - } else { - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - //had a problem with the database - // Store the doc with problem - array_push($aUnmovedDocs, array($oDocument, _("Could not update document in database"))); - } - } else { - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - - // Permission problem - // Store the doc with problem - array_push($aUnmovedDocs, array($oDocument, _("You do not have rights to move this document"))); - } - - } else { - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - - // Store the doc with problem - array_push($aUnmovedDocs, array($oDocument, _("This folder already contains a document of the same name. Please choose another directory"))); - } - - } - - // Move terminated - - // List undeleted documents - if (!empty($aUnmovedDocs) ) { - - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = & new PatternCustom(); - - $sError = _("An error occured moving the following document(s):") . "

"; - foreach ($aUnmovedDocs as $oDoc) { - $sError .= $oDoc[0]->getDisplayPath() . ":   " .$oDoc[1] . "
"; - } - $sError .= "
" . _("The other documents are been moved."); - - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(renderErrorPage($sError)); - $main->setCentralPayload($oPatternCustom); - $main->render(); - - reset($aUnmovedDocs); - - } else { - // redirect to the browse folder page - redirect("$default->rootUrl/control.php?action=browse&fFolderID=" . $oDocument->getFolderID()); - } - - } else { // ($fConfirmed) - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = & new PatternCustom(); - - // Check for all docs - for ($i = 0; $i < count($fDocumentIDs); $i++) { - - $oDocument = Document::get($fDocumentIDs[$i]); - - // check if the selected folder has the same document type as the document we're moving - if (Folder::folderIsLinkedToDocType($fFolderID, $oDocument->getDocumentTypeID())) { - // check that there is no filename collision in the destination directory - $sNewDocumentFileSystemPath = Folder::getFolderPath($fFolderID) . $oDocument->getFileName(); - if (!file_exists($sNewDocumentFileSystemPath)) { - // display confirmation page - $oPatternCustom->setHtml(getConfirmationPage($fFolderID, $fRememberDocumentID)); - } else { - // filename collision - $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID, _("This folder already contains a document of the same name.") . " " . _("Please choose another directory"))); - break; - } - } else { - // the right document type isn't mapped - $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID, _("You can't move the document to this folder because it cannot store the document type of your document.") . " " . _("Please choose another directory"))); - break; - } - } - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fRememberDocumentID=$fRememberDocumentID&fFolderID=$fFolderID"); - $main->setCentralPayload($oPatternCustom); - $main->render(); - } - } else { // (isset($fForMove)) - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID)); - $main->setCentralPayload($oPatternCustom); - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fRememberDocumentID=$fRememberDocumentID&fFolderID=$fFolderID"); - $main->render(); - } - } else { // (isset($fDocumentIDs) && isset($fFolderID)) - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(""); - $main->setCentralPayload($oPatternCustom); - $main->setErrorMessage(_("No document/folder selected")); - $main->render(); - } + // fire subscription alerts for the moved document (and the folder its in) + $count = SubscriptionEngine::fireSubscription($fDocumentIDs[$i], SubscriptionConstants::subscriptionAlertType("MovedDocument"), + SubscriptionConstants::subscriptionType("DocumentSubscription"), + array( + "folderID" => $iOldFolderID, + "modifiedDocumentName" => $oDocument->getName(), + "oldFolderName" => Folder::getFolderName($iOldFolderID), + "newFolderName" => Folder::getFolderName($fFolderID), + ) + ); + $default->log->info("moveDocumentBL.php fired $count subscription alerts for moved document " . $oDocument->getName()); + + // fire folder subscriptions for the destination folder + $count = SubscriptionEngine::fireSubscription($fFolderID, SubscriptionConstants::subscriptionAlertType("MovedDocument"), + SubscriptionConstants::subscriptionType("FolderSubscription"), + array( + "folderID" => $iOldFolderID, + "modifiedDocumentName" => $oDocument->getName(), + "oldFolderName" => Folder::getFolderName($iOldFolderID), + "newFolderName" => Folder::getFolderName($fFolderID), + ) + ); + $default->log->info("moveDocumentBL.php fired $count (folderID=$fFolderID) folder subscription alerts for moved document " . $oDocument->getName()); } +// Move terminated + +// List undeleted documents +if (!empty($aUnmovedDocs) ) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + + $sError = _("An error occured moving the following document(s):") . "

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