fileSystemRoot/lib/security/permission.inc"); require_once("$default->fileSystemRoot/lib/email/Email.inc"); require_once("$default->fileSystemRoot/lib/users/User.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/PhysicalDocumentManager.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentTransaction.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/DependantDocumentInstance.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentCollaboration.inc"); require_once("$default->fileSystemRoot/lib/archiving/DocumentArchiving.inc"); require_once("$default->fileSystemRoot/lib/foldermanagement/FolderCollaboration.inc"); require_once("$default->fileSystemRoot/lib/foldermanagement/FolderUserRole.inc"); require_once("$default->fileSystemRoot/lib/roles/Role.inc"); require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListFromQuery.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListFromQuery.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); require_once("$default->fileSystemRoot/lib/web/WebDocument.inc"); require_once("$default->fileSystemRoot/lib/subscriptions/Subscription.inc"); require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionEngine.inc"); require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/documentmanagement/archiving/restoreArchivedDocumentUI.inc"); require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentUI.inc"); require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc"); require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); require_once("$default->fileSystemRoot/presentation/Html.inc"); if (checkSession()) { require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); $oPatternCustom = & new PatternCustom(); if (isset($fDocumentID)) { $oDocument = & Document::get($fDocumentID); if (isset($fCollaborationEdit) && Permission::userHasDocumentWritePermission($fDocumentID)) { //return value from collaborationBL.php. User attempted to edit //a step in the document collaboration process that is currently being //executed $sStatusMessage = "You cannot edit a document collaboration step that is completed or currently underway"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); $main->setDHTMLScrolling(false); } else if (isset($fBeginCollaboration) && Permission::userHasDocumentWritePermission($fDocumentID)) { //begin the collaboration process //first ensure that all steps in the collaboration process are assigned $aFolderCollaboration = FolderCollaboration::getList("WHERE folder_id = " . $oDocument->getFolderID()); if (count($aFolderCollaboration) > 0) { //if the the folder has collaboration steps set up $aFolderUserRoles = FolderUserRole::getList("document_id = " . $fDocumentID); if (count($aFolderCollaboration) == count($aFolderUserRoles)) { //if all the roles have been assigned we can start the collaboration process //TODO: check if this collaboration has already occured, and then reset all the steps before beginning it again //DocumentCollaboration::resetDocumentCollaborationSteps($fDocumentID); $oDocument->beginCollaborationProcess(); $sStatusMessage = "Document collaboration successfully started"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); } else { //not all the roles have actual users assigned to them, so we must assign the //default users and then proceed FolderUserRole::createDefaultFolderUserRoles($oDocument); $oDocument->beginCollaborationProcess(); $sStatusMessage = "Document collaboration successfully started"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); } } else { //the folder has no collaboration set up yet, so we can't start document collaboration $sStatusMessage = "The collaboration steps for the folder must be set up before collaboration can begin"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); } $main->setDHTMLScrolling(false); } else if ((isset($fCollaborationStepComplete)) && (DocumentCollaboration::userIsPerformingCurrentCollaborationStep($fDocumentID))) { //the user has signled that they have completed their step in the collaboration process if (DocumentCollaboration::isLastStepInCollaborationProcess($fDocumentID)) { //the last step in the collaboration process has been performed- email the document creator $oDocument->endCollaborationProcess(); // on the last collaboration step- trigger a major revision // major version number rollover $oDocument->setMajorVersionNumber($oDocument->getMajorVersionNumber()+1); // reset minor version number $oDocument->setMinorVersionNumber(0); $oDocument->update(); // TODO: create a transaction? $oUser = User::get($oDocument->getCreatorID()); $sBody = $oUser->getName() . ", the collaboration process for the document, '" . generateLink("/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewBL.php", "fDocumentID=" . $oDocument->getID(), $oDocument->getName()) . "', has been completed. "; $oEmail = & new Email(); $oEmail->send($oUser->getEmail(), "Document collaboration complete", $sBody); //possibly set the document up for web publishing???? $sStatusMessage = "Document collaboration complete. The document initiator has been notified"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); } else { //start the next steps if all criteria are met DocumentCollaboration::beginNextStepInCollaborationProcess($fDocumentID, $_SESSION["userID"]); $sStatusMessage = "The next steps in the collaboration process have been started"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); } $main->setDHTMLScrolling(false); } else if ((isset($fForPublish)) && (!DocumentCollaboration::documentIsPendingWebPublishing($fDocumentID))) { if ($fSubmit) { // user wishes to publish document $aWebDocument = WebDocument::getList("document_id = $fDocumentID"); $oWebDocument = $aWebDocument[0]; if (strlen($fWebSiteID) > 0) { $oWebDocument->setStatusID(PENDING); $oWebDocument->setWebSiteID($fWebSiteID); $oWebDocument->setDateTime(getCurrentDateTime()); } else { $oWebDocument->setStatusID(PUBLISHED); $oWebDocument->setWebSiteID(-1); $oWebDocument->setDateTime(getCurrentDateTime()); } if ($oWebDocument->update()) { $oDocumentTransaction = & new DocumentTransaction($fDocumentID, "Document sent for web publishing", UPDATE); $oDocumentTransaction->create(); if ((strlen($fWebSiteID) > 0) && (strlen($fComment) > 0)) { DocumentCollaboration::notifyWebMaster($fDocumentID, $fComment); } if ((strlen($fWebSiteID) > 0) && (strlen($fComment) > 0)) { $sStatusMessage = "The document has been marked as pending publishing and the web publisher has been notified"; } else { $sStatusMessage = "The document has been published"; } $oPatternCustom->setHtml(getPage($oDocument, true, $sStatusMessage)); } else { $sStatusMessage = "An error occured while attempting to update the document for publishing"; $oPatternCustom->setHtml(getStatusPage($oDocument, $sStatusMessage)); } } else { // prompt for the website to publish to $oPatternCustom->setHtml(getWebPublishPage($oDocument)); $main->setFormAction($_SERVER['PHP_SELF']); } $main->setDHTMLScrolling(false); } else if (Permission::userHasDocumentWritePermission($fDocumentID) || Permission::userHasDocumentReadPermission($fDocumentID)) { // check subscription flag // ?? if (isset($fFireSubscription)) { // fire subscription alerts for the modified document $count = SubscriptionEngine::fireSubscription($fDocumentID, SubscriptionConstants::subscriptionAlertType("ModifyDocument"), SubscriptionConstants::subscriptionType("DocumentSubscription"), array( "folderID" => $oDocument->getFolderID(), "modifiedDocumentName" => $oDocument->getName())); $default->log->info("viewBL.php fired $count subscription alerts for modified document $fFolderName"); } if ($oDocument->isLive()) { if (Permission::userHasDocumentWritePermission($fDocumentID)) { $oPatternCustom->setHtml(getPage($oDocument, true)); } else if (Permission::userHasDocumentReadPermission($fDocumentID)) { $oPatternCustom->setHtml(getPage($oDocument, false)); } $main->setDHTMLScrolling(false); $main->setOnLoadJavaScript("switchDiv('" . (isset($fShowSection) ? $fShowSection : "documentData") . "', 'document')"); } else if ($oDocument->isArchived()) { // allow admins to restore the document if (Permission::userIsSystemAdministrator() || Permission::userIsUnitAdministrator()) { $oPatternCustom->setHtml(getRestoreArchivedDocumentPage($oDocument)); } else { // and ordinary users to request that the document be restored $oPatternCustom->setHtml(getRequestRestoreDocumentPage($oDocument)); } } else { $oPatternCustom->setHtml("graphicsUrl/widgets/back.gif\" border=\"0\" />\n"); $main->setErrorMessage("The document you have chosen no longer exists in the DMS."); } $main->setFormAction("$default->rootUrl/control.php?action=modifyDocument&fDocumentID=" . $oDocument->getID()); } else { if ($oDocument) { $oPatternCustom->setHtml("graphicsUrl/widgets/back.gif\" border=\"0\" />\n"); } else { $oPatternCustom->setHtml("graphicsUrl/widgets/back.gif\" border=\"0\" />\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."); } } else { require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); $oPatternCustom->setHtml("graphicsUrl/widgets/back.gif\" border=\"0\" />\n"); $main->setErrorMessage("You have not chosen a document to view"); } $main->setCentralPayload($oPatternCustom); $main->render(); } ?>