Commit 00a24fe718e6bb682afbaae5db92c0d657d723c9

Authored by Neil Blakey-Milner
1 parent 5faf3fa9

Deletion of documents now lives in the delete action.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4083 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/documentmanagement/deleteDocumentBL.php deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Business logic concerned with the deletion of a document.  
6 - * Will use deleteDocumentUI for presentation information.  
7 - *  
8 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
9 - *  
10 - * This program is free software; you can redistribute it and/or modify  
11 - * it under the terms of the GNU General Public License as published by  
12 - * the Free Software Foundation; either version 2 of the License, or  
13 - * (at your option) any later version.  
14 - *  
15 - * This program is distributed in the hope that it will be useful,  
16 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
17 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
18 - * GNU General Public License for more details.  
19 - *  
20 - * You should have received a copy of the GNU General Public License  
21 - * along with this program; if not, write to the Free Software  
22 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
23 - *  
24 - * @version $Revision$  
25 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
26 - * @package documentmanagement  
27 - */  
28 -  
29 -require_once("../../../../config/dmsDefaults.php");  
30 -  
31 -KTUtil::extractGPC('fDeleteConfirmed', 'fDocumentIDs', 'fRememberDocumentID');  
32 -  
33 -require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc");  
34 -require_once("$default->fileSystemRoot/lib/users/User.inc");  
35 -require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc");  
36 -require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentTransaction.inc");  
37 -require_once("$default->fileSystemRoot/lib/documentmanagement/PhysicalDocumentManager.inc");  
38 -require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionEngine.inc");  
39 -require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionManager.inc");  
40 -  
41 -require_once("$default->fileSystemRoot/presentation/Html.inc");  
42 -  
43 -require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc");  
44 -  
45 -require_once("deleteDocumentUI.inc");  
46 -  
47 -$aNondeletedDocs = array();  
48 -  
49 -if (!checkSession()) {  
50 - die();  
51 -}  
52 -  
53 -if (isset($fRememberDocumentID)) {  
54 - $fDocumentIDs = $_SESSION['documents'][$fRememberDocumentID];  
55 -} else {  
56 - $sUniqueID = KTUtil::randomString();  
57 - $_SESSION["documents"][$sUniqueID] = $fDocumentIDs;  
58 - $fRememberDocumentID = $sUniqueID;  
59 -}  
60 -  
61 -if (!isset($fDocumentIDs)) {  
62 - //no document selected for deletion  
63 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
64 - $oPatternCustom = & new PatternCustom();  
65 - $oPatternCustom->setHtml(renderErrorPage(_("No document currently selected")));  
66 - $main->setCentralPayload($oPatternCustom);  
67 - $main->render();  
68 - exit(0);  
69 -}  
70 -  
71 -  
72 -// Check permission and collaboration for all documents  
73 -for ($i = 0; $i < count($fDocumentIDs); $i++) {  
74 - $oDocument = Document::get($fDocumentIDs[$i]);  
75 -  
76 - if (!Permission::userHasDocumentWritePermission($oDocument)) {  
77 - // user does not have permission to delete the document  
78 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
79 - $oPatternCustom = & new PatternCustom();  
80 - $oPatternCustom->setHtml(renderErrorPage(_("You do not have, at least, permission to delete one document") . ": " .  
81 - $oDocument->getName() . "<br>" . _("Please deselect it and retry.")));  
82 - $main->setCentralPayload($oPatternCustom);  
83 - $main->render();  
84 - exit(0);  
85 - }  
86 -}  
87 -  
88 -if (!isset($fDeleteConfirmed)) {  
89 - //get confirmation first  
90 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
91 - $oPatternCustom = & new PatternCustom();  
92 - $oPatternCustom->addHtml(getPage($fRememberDocumentID));  
93 - $main->setCentralPayload($oPatternCustom);  
94 - $main->render();  
95 - exit(0);  
96 -}  
97 -  
98 - /* Delete all files  
99 - If an error occured while deleting a file, then:  
100 - - make a rollback of the current file  
101 - - insert document object in $aNondeletedDocs array  
102 - - delete the other selected file  
103 -  
104 - At the end check the $aNondeletedDocs array  
105 - - if is empty then OK  
106 - - if is not empty then show the nondeleted files list  
107 - */  
108 -  
109 -for ($i = 0; $i < count($fDocumentIDs); $i++) {  
110 - $oDocument = Document::get($fDocumentIDs[$i]);  
111 - if (!isset($oDocument)) {  
112 - // Store the doc with problem  
113 - array_push($aNondeletedDocs, array($oDocument, _("Could not load document in database")));  
114 - }  
115 -  
116 - // New transaction  
117 - $sDocumentPath = Folder::getFolderPath($oDocument->getFolderID()) . $oDocument->getFileName();  
118 - $oDocumentTransaction = & new DocumentTransaction($fDocumentIDs[$i], "Document deleted", DELETE);  
119 - $oDocumentTransaction->create();  
120 -  
121 - // flip the status id  
122 - $oDocument->setStatusID(DELETED);  
123 -  
124 - // store  
125 - if (!$oDocument->update()) {  
126 - //could not update the documents status in the db  
127 - $default->log->error("deleteDocumentBL.php DB error deleting document " .  
128 - $oDocument->getFileName() . " from folder " .  
129 - Folder::getFolderPath($oDocument->getFolderID()) .  
130 - " id=" . $oDocument->getFolderID());  
131 -  
132 - //get rid of the document transaction  
133 - $oDocumentTransaction->delete();  
134 -  
135 - // Store the doc with problem  
136 - array_push($aNondeletedDocs, array($oDocument,  
137 - _("Could not update document in database")));  
138 - }  
139 -  
140 - // now move the document to the delete folder  
141 - if (PhysicalDocumentManager::delete($oDocument)) {  
142 - //could not delete the document from the file system  
143 - $default->log->error("deleteDocumentBL.php Filesystem error deleting document " .  
144 - $oDocument->getFileName() . " from folder " .  
145 - Folder::getFolderPath($oDocument->getFolderID()) .  
146 - " id=" . $oDocument->getFolderID());  
147 - //reverse the document deletion  
148 - $oDocument->setStatusID(LIVE);  
149 - $oDocument->update();  
150 - //get rid of the document transaction  
151 - $oDocumentTransaction->delete();  
152 -  
153 - // Store the doc with problem  
154 - array_push($aNondeletedDocs, array($oDocument, _("Could not delete document on file system")));  
155 - }  
156 -  
157 - // successfully deleted the document  
158 - $default->log->info("deleteDocumentBL.php successfully deleted document " .  
159 - $oDocument->getFileName() . " from folder " .  
160 - Folder::getFolderPath($oDocument->getFolderID()) .  
161 - " id=" . $oDocument->getFolderID());  
162 -  
163 - // fire subscription alerts for the deleted document  
164 - $count = SubscriptionEngine::fireSubscription($fDocumentIDs[$i],  
165 - SubscriptionConstants::subscriptionAlertType("RemoveSubscribedDocument"),  
166 - SubscriptionConstants::subscriptionType("DocumentSubscription"),  
167 - array(  
168 - "folderID" => $oDocument->getFolderID(),  
169 - "removedDocumentName" => $oDocument->getName(),  
170 - "folderName" => Folder::getFolderDisplayPath($oDocument->getFolderID()),  
171 - ));  
172 - $default->log->info("deleteDocumentBL.php fired $count subscription alerts for removed document " . $oDocument->getName());  
173 -  
174 - // remove all document subscriptions for this document  
175 - if (SubscriptionManager::removeSubscriptions($fDocumentIDs[$i], SubscriptionConstants::subscriptionType("DocumentSubscription"))) {  
176 - $default->log->info("deleteDocumentBL.php removed all subscriptions for this document");  
177 - } else {  
178 - $default->log->error("deleteDocumentBL.php couldn't remove document subscriptions");  
179 - }  
180 -}  
181 -  
182 -// List nondeleted documents  
183 -if (!empty($aNondeletedDocs) ) {  
184 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
185 - $oPatternCustom = & new PatternCustom();  
186 -  
187 - $sError = _("An error occured deleting the following document(s):") . "<br><br>";  
188 - foreach ($aNondeletedDocs as $oDoc) {  
189 - $sError .= $oDoc[0]->getDisplayPath() . ":&nbsp;&nbsp;&nbsp;" .$oDoc[1] . "<br>";  
190 - }  
191 - $sError .= "<br>" . _("The other documents are been deleted.");  
192 -  
193 - $oPatternCustom->addHtml(renderErrorPage($sError));  
194 - $main->setCentralPayload($oPatternCustom);  
195 - $main->render();  
196 - exit(0);  
197 -}  
198 -  
199 -// redirect to the browse folder page  
200 -redirect("$default->rootUrl/control.php?action=browse&fFolderID=" . $oDocument->getFolderID());  
201 -exit(0);  
202 -?>  
presentation/lookAndFeel/knowledgeTree/documentmanagement/deleteDocumentUI.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Presentation information for documentDeleteBL.php.  
6 - *  
7 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
8 - *  
9 - * This program is free software; you can redistribute it and/or modify  
10 - * it under the terms of the GNU General Public License as published by  
11 - * the Free Software Foundation; either version 2 of the License, or  
12 - * (at your option) any later version.  
13 - *  
14 - * This program is distributed in the hope that it will be useful,  
15 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
16 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
17 - * GNU General Public License for more details.  
18 - *  
19 - * You should have received a copy of the GNU General Public License  
20 - * along with this program; if not, write to the Free Software  
21 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
22 - *  
23 - * @version $Revision$  
24 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
25 - * @package documentmanagement  
26 - */  
27 -function getPage($sRememberDocumentID) {  
28 - global $default;  
29 - $aDocumentIDs = $_SESSION['documents'][$sRememberDocumentID];  
30 - $sToRender = renderHeading(_("Delete Document"));  
31 - $sToRender .= "<table border=\"0\">\n";  
32 - $sToRender .= "<tr>\n";  
33 - $sToRender .= "<td>" . _("You have chosen to delete the following document(s):") . " <br><br></td>\n";  
34 -  
35 - for ($i = 0; $i < count($aDocumentIDs); $i++) {  
36 - $oDocument = Document::get($aDocumentIDs[$i]);  
37 - $sToRender .= "<tr>\n";  
38 - $sToRender .= "<td>&nbsp;&nbsp;'" . $oDocument->getDisplayPath() . "'</td>\n";  
39 - }  
40 - $sQueryString = "fRememberDocumentID=$sRememberDocumentID&";  
41 - $sToRender .= "<tr><tr><tr><tr>\n";  
42 -  
43 - $sToRender .= "<td>" . _("Select 'Delete' to confirm the deletion, or 'Cancel' to cancel it") . "</td>\n";  
44 - $sToRender .= "<tr>\n";  
45 - $sToRender .= "<tr>\n";  
46 - $sToRender .= "<td>&nbsp</td>\n";  
47 - $sToRender .= "<tr>\n";  
48 - $sToRender .= "<td><table><tr><td>";  
49 - $sToRender .= "<a href=\"" . $_SERVER["PHP_SELF"] . "?$sQueryString&fDeleteConfirmed=1\"><img src=\"" . KTHtml::getDeleteButton() . "\" border=\"0\"></a>";  
50 - $sToRender .= "</td> <td>";  
51 - if (KTUtil::arrayGet($_REQUEST, "fReturnFolderID")) {  
52 - $sToRender .= generateControllerLink("browse", "fFolderID=" . $_REQUEST['fReturnFolderID'], "<img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a>");  
53 - } else if (KTUtil::arrayGet($_REQUEST, "fReturnDocumentID")) {  
54 - $sToRender .= generateControllerLink("viewDocument", "fDocumentID=" . $_REQUEST['fReturnDocumentID'], "<img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a>");  
55 - } else {  
56 - $sToRender .= "<a href=\"javascript:history.go(-1)\"><img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a>";  
57 - }  
58 - $sToRender .= "</td></tr></table></td>";  
59 - $sToRender .= "</tr>";  
60 - $sToRender .= "</table>\n";  
61 -  
62 - return $sToRender;  
63 -  
64 -}  
65 -  
66 -function renderErrorPage($sErrorMessage, $iDocumentID = "") {  
67 - global $default;  
68 - if ($iDocumentID) {  
69 - return statusPage("Delete Document", "", $sErrorMessage, "viewDocument", "fDocumentID=$iDocumentID");  
70 - } else {  
71 - $sToRender = renderHeading(_("Delete Document"));  
72 - $sToRender .= "<table>\n";  
73 - $sToRender .= "<tr><td><p class=\"errorText\">$sErrorMessage</p>\n" .  
74 - "<a href=\"javascript:history.go(-2)\"><img src=\"" . KTHtml::getBackButton() . "\" border=\"0\"/></a>\n" .  
75 - "</p></td></tr></table>\n";  
76 - return $sToRender;  
77 - }  
78 -}  
79 -?>