Commit bbe5cb78408f4b0a48da9e34b6c42dae90f9ba18

Authored by nbm
1 parent 5c535e88

Move document implemented as a document action.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4362 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentBL.php deleted
1   -<?php
2   -/**
3   - * $Id$
4   - *
5   - * Move document page.
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 Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
25   - * @package documentmanagement
26   - */
27   -
28   -require_once("../../../../config/dmsDefaults.php");
29   -
30   -KTUtil::extractGPC('fConfirmed', 'fDocumentIDs', 'fFolderID', 'fForMove', 'fRememberDocumentID');
31   -
32   -require_once("$default->fileSystemRoot/lib/security/Permission.inc");
33   -require_once("$default->fileSystemRoot/lib/users/User.inc");
34   -require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentTransaction.inc");
35   -require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc");
36   -require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc");
37   -
38   -require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionEngine.inc");
39   -
40   -require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc");
41   -require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc");
42   -
43   -require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentUI.inc");
44   -require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc");
45   -require_once("$default->fileSystemRoot/presentation/Html.inc");
46   -
47   -require_once(KT_LIB_DIR . '/storage/storagemanager.inc.php');
48   -
49   -$aUnmovedDocs = array();
50   -
51   -if (!checkSession()) {
52   - die();
53   -}
54   -
55   -if (isset($fRememberDocumentID)) {
56   - $fDocumentIDs = $_SESSION['documents'][$fRememberDocumentID];
57   -} else {
58   - $sUniqueID = KTUtil::randomString();
59   - $_SESSION["documents"][$sUniqueID] = $fDocumentIDs;
60   - $fRememberDocumentID = $sUniqueID;
61   -}
62   -
63   -
64   -if (!isset($fDocumentIDs) || !isset($fFolderID)) {
65   - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
66   - $oPatternCustom = & new PatternCustom();
67   - $oPatternCustom->setHtml("");
68   - $main->setCentralPayload($oPatternCustom);
69   - $main->setErrorMessage(_("No document/folder selected"));
70   - $main->render();
71   - exit(0);
72   -}
73   -
74   -if (!isset($fForMove)) {
75   - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
76   - $oPatternCustom = & new PatternCustom();
77   - $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID));
78   - $main->setCentralPayload($oPatternCustom);
79   - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fRememberDocumentID=$fRememberDocumentID&fFolderID=$fFolderID");
80   - $main->render();
81   - exit(0);
82   -}
83   -
84   -if (!$fConfirmed) {
85   - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
86   - $oPatternCustom = & new PatternCustom();
87   -
88   - // Check for all docs
89   - for ($i = 0; $i < count($fDocumentIDs); $i++) {
90   - $oDocument = Document::get($fDocumentIDs[$i]);
91   -
92   - // check if the selected folder has the same document type as the document we're moving
93   - if (!Folder::folderIsLinkedToDocType($fFolderID, $oDocument->getDocumentTypeID())) {
94   - // the right document type isn't mapped
95   - $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")));
96   - break;
97   - }
98   -
99   - // check that there is no filename collision in the destination directory
100   - $sNewDocumentFileSystemPath = Folder::getFolderPath($fFolderID) . $oDocument->getFileName();
101   -
102   - if (file_exists($sNewDocumentFileSystemPath)) {
103   - // filename collision
104   - $oPatternCustom->setHtml(getPage($fFolderID, $fRememberDocumentID, _("This folder already contains a document of the same name.") . " " . _("Please choose another directory")));
105   - break;
106   - }
107   - // display confirmation page
108   - $oPatternCustom->setHtml(getConfirmationPage($fFolderID, $fRememberDocumentID));
109   - }
110   - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForMove=1&fRememberDocumentID=$fRememberDocumentID&fFolderID=$fFolderID");
111   - $main->setCentralPayload($oPatternCustom);
112   - $main->render();
113   - exit(0);
114   -}
115   -
116   -$oStorage =& KTStorageManagerUtil::getSingleton();
117   -
118   -for ($i = 0; $i < count($fDocumentIDs); $i++) {
119   -
120   - //we're trying to move a document
121   - $oDocument = & Document::get($fDocumentIDs[$i]);
122   - $iOldFolderID = $oDocument->getFolderID();
123   - $oOldFolder =& Folder::get($iOldFolderID);
124   - $oNewFolder = & Folder::get($fFolderID);
125   -
126   - // check that there is no filename collision in the destination directory
127   - $sNewDocumentFileSystemPath = Folder::getFolderPath($fFolderID) . $oDocument->getFileName();
128   -
129   - if (file_exists($sNewDocumentFileSystemPath)) {
130   - // Store the doc with problem
131   - array_push($aUnmovedDocs, array($oDocument, _("This folder already contains a document of the same name. Please choose another directory")));
132   - continue;
133   - }
134   -
135   - if (!Permission::userHasDocumentWritePermission($oDocument) || !Permission::userHasFolderWritePermission($oNewFolder)) {
136   - array_push($aUnmovedDocs, array($oDocument, _("You do not have rights to move this document")));
137   - continue;
138   - }
139   -
140   - //put the document in the new folder
141   - $oDocument->setFolderID($fFolderID);
142   - if (!$oDocument->update(true)) {
143   - //had a problem with the database
144   - array_push($aUnmovedDocs, array($oDocument, _("Could not update document in database")));
145   - continue;
146   - }
147   -
148   - //move the document on the file system
149   - if (!$oStorage->moveDocument($oDocument, $oOldFolder, $oNewFolder)) {
150   - $oDocument->setFolderID($iOldFolderID);
151   - $oDocument->update(true);
152   -
153   - // Store the doc with problem
154   - array_push($aUnmovedDocs, array($oDocument, _("Could not move document on file system")));
155   - continue;
156   - }
157   - $oDocument->update();
158   -
159   - $sMoveMessage = sprintf("Moved from %s/%s to %s/%s",
160   - $oOldFolder->getFullPath(),
161   - $oOldFolder->getName(),
162   - $oNewFolder->getFullPath(),
163   - $oNewFolder->getName());
164   -
165   - // create the document transaction record
166   - $oDocumentTransaction = & new DocumentTransaction($oDocument->getID(), $sMoveMessage, MOVE);
167   - $oDocumentTransaction->create();
168   -
169   - // fire subscription alerts for the moved document (and the folder its in)
170   - $count = SubscriptionEngine::fireSubscription($fDocumentIDs[$i], SubscriptionConstants::subscriptionAlertType("MovedDocument"),
171   - SubscriptionConstants::subscriptionType("DocumentSubscription"),
172   - array(
173   - "folderID" => $iOldFolderID,
174   - "modifiedDocumentName" => $oDocument->getName(),
175   - "oldFolderName" => Folder::getFolderName($iOldFolderID),
176   - "newFolderName" => Folder::getFolderName($fFolderID),
177   - )
178   - );
179   - $default->log->info("moveDocumentBL.php fired $count subscription alerts for moved document " . $oDocument->getName());
180   -
181   - // fire folder subscriptions for the destination folder
182   - $count = SubscriptionEngine::fireSubscription($fFolderID, SubscriptionConstants::subscriptionAlertType("MovedDocument"),
183   - SubscriptionConstants::subscriptionType("FolderSubscription"),
184   - array(
185   - "folderID" => $iOldFolderID,
186   - "modifiedDocumentName" => $oDocument->getName(),
187   - "oldFolderName" => Folder::getFolderName($iOldFolderID),
188   - "newFolderName" => Folder::getFolderName($fFolderID),
189   - )
190   - );
191   - $default->log->info("moveDocumentBL.php fired $count (folderID=$fFolderID) folder subscription alerts for moved document " . $oDocument->getName());
192   -}
193   -
194   -// Move terminated
195   -
196   -// List undeleted documents
197   -if (!empty($aUnmovedDocs) ) {
198   - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
199   - $oPatternCustom = & new PatternCustom();
200   -
201   - $sError = _("An error occured moving the following document(s):") . " <br><br>";
202   - foreach ($aUnmovedDocs as $oDoc) {
203   - $sError .= $oDoc[0]->getDisplayPath() . ":&nbsp;&nbsp;&nbsp;" .$oDoc[1] . "<br>";
204   - }
205   - $sError .= "<br>" . _("The other documents are been moved.");
206   -
207   - $oPatternCustom = & new PatternCustom();
208   - $oPatternCustom->setHtml(renderErrorPage($sError));
209   - $main->setCentralPayload($oPatternCustom);
210   - $main->render();
211   - reset($aUnmovedDocs);
212   - exit(0);
213   -}
214   -
215   -// redirect to the browse folder page
216   -redirect("$default->rootUrl/control.php?action=browse&fFolderID=" . $oDocument->getFolderID());
217   -
218   -?>
presentation/lookAndFeel/knowledgeTree/documentmanagement/moveDocumentUI.inc deleted
1   -<?php
2   -/**
3   - * $Id$
4   - *
5   - * Move document presentation functions.
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 Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
25   - * @package documentmanagement
26   - */
27   -
28   -function getConfirmationPage($iFolderID, $sRememberDocumentID) {
29   - global $default;
30   - $iDocumentIDs = $_SESSION['documents'][$sRememberDocumentID];
31   -
32   - $sToRender = renderHeading(_("Move Document"));
33   - $sToRender .= "<table>\n";
34   - $sToRender .= "<tr>\n<td>" . _("Are you sure you want to move") . ": </td></tr>";
35   -
36   - for ($i = 0; $i < count($iDocumentIDs); $i++) {
37   -
38   - $oDocument = & Document::get($iDocumentIDs[$i]);
39   -
40   - $sToRender .= "<tr><td><strong>" . $oDocument->getDisplayPath() . "</strong> <td>&nbsp;" . _("to") . "&nbsp;</td> </td>\n";
41   - $sToRender .= "<td><strong>" . Folder::getFolderDisplayPath($iFolderID) . " > " . $oDocument->getFileName() . "</strong></td>\n";
42   - }
43   - $sQueryString .= "fRememberDocumentID=$sRememberDocumentID&";
44   -
45   - $sToRender .= "</tr>\n";
46   - $sToRender .= "<tr><td><a href=\"$default->rootUrl/control.php?action=moveDocument&" . $sQueryString .
47   - "fFolderID=$iFolderID" .
48   - "&fForMove=1&fConfirmed=1\">" .
49   - "<img src=\"" . KTHtml::getMoveButton() . "\" border=\"0\"/>" .
50   - "</a>&nbsp;" .
51   - "<a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$iFolderID\">" .
52   - "<img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a></td></tr>\n";
53   - $sToRender .= "</table>\n";
54   - return $sToRender;
55   -}
56   -
57   -
58   -function getPage($iFolderID, $sRememberDocumentID, $sErrorMessage = "") {
59   - global $default;
60   - $iDocumentIDs = $_SESSION['documents'][$sRememberDocumentID];
61   -
62   - $sToRender = renderHeading(_("Move Document"));
63   - $sToRender .= "<table>\n";
64   - if ($sErrorMessage) {
65   - $sToRender .= "<tr><td><font color=\"red\">$sErrorMessage</font></td></tr>";
66   - }
67   - $sToRender .= "<tr><td>" . _("Move document(s)") . ":<br></td>\n";
68   -
69   - for ($i = 0; $i < count($iDocumentIDs); $i++) {
70   - $sToRender .= "<tr>\n";
71   - $sToRender .= "<td>&nbsp;&nbsp;'" . Document::getDocumentDisplayPath($iDocumentIDs[$i]) . "'</td>\n";
72   - }
73   - $sQueryString .= "fRememberDocumentID=$sRememberDocumentID&";
74   -
75   - $sToRender .= "<tr><td>" . _("To Folder") . ":</td></tr>";
76   - $sToRender .= "<tr>\n";
77   - $sToRender .= "<td>" . renderFolderPath($iFolderID, "/control.php?action=moveDocument&" . $sQueryString) . "</td>\n";
78   - $sToRender .= "</tr>\n";
79   - $sToRender .= "</table>\n";
80   - $sToRender .= "<table width=\"100%\">\n";
81   - $sToRender .= "<tr>\n";
82   - $sToRender .= "<td>" . renderFolderList($iFolderID, "/control.php?action=moveDocument&" . $sQueryString) . "</td>\n";
83   - $sToRender .= "</tr>\n";
84   - $sToRender .= "<td><table><tr><td><a href=\"" . $_SERVER["PHP_SELF"] . "?$sQueryString&fFolderID=$iFolderID&fForMove=1\"><img src=\"" . KTHtml::getMoveHereButton() . "\" border=\"0\"></a></td> <td><a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$iFolderID\"><img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a></td></tr></table></td>";
85   -
86   - $sToRender .= "</table>\n";
87   - return $sToRender;
88   -}
89   -function renderErrorPage($sErrorMessage, $iDocumentID = "") {
90   - global $default;
91   - if ($iDocumentID) {
92   - return statusPage(_("Delete Document"), "", $sErrorMessage, "viewDocument", "fDocumentID=$iDocumentID");
93   - } else {
94   - $sToRender = renderHeading(_("Delete Document"));
95   - $sToRender .= "<table>\n";
96   - $sToRender .= "<tr><td><p class=\"errorText\">$sErrorMessage</p>\n" .
97   - "<a href=\"javascript:history.go(-2)\"><img src=\"" . KTHtml::getBackButton() . "\" border=\"0\"/></a>\n" .
98   - "</p></td></tr></table>\n";
99   - return $sToRender;
100   - }
101   -}
102   -
103   -?>