Commit ccf441e6afb4c2be2a5bf6a20cee58c606e8fdf6
1 parent
5ce1ba1d
fMoveCode was lost, causing KTS-298
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4818 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
30 additions
and
14 deletions
browse.php
| @@ -58,7 +58,7 @@ class KTMassMoveColumn extends TitleColumn { | @@ -58,7 +58,7 @@ class KTMassMoveColumn extends TitleColumn { | ||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | function buildFolderLink($aDataRow) { | 60 | function buildFolderLink($aDataRow) { |
| 61 | - return KTUtil::addQueryStringSelf(sprintf('MoveCode=%s&fFolderId=%d&action=startMove', $this->sMoveCode, $aDataRow["folder"]->getId())); | 61 | + return KTUtil::addQueryStringSelf(sprintf('fMoveCode=%s&fFolderId=%d&action=startMove', $this->sMoveCode, $aDataRow["folder"]->getId())); |
| 62 | } | 62 | } |
| 63 | } | 63 | } |
| 64 | 64 | ||
| @@ -294,9 +294,13 @@ class BrowseDispatcher extends KTStandardDispatcher { | @@ -294,9 +294,13 @@ class BrowseDispatcher extends KTStandardDispatcher { | ||
| 294 | $aFolderSelection = KTUtil::arrayGet($_REQUEST, 'selection_f' , array()); | 294 | $aFolderSelection = KTUtil::arrayGet($_REQUEST, 'selection_f' , array()); |
| 295 | $aDocumentSelection = KTUtil::arrayGet($_REQUEST, 'selection_d' , array()); | 295 | $aDocumentSelection = KTUtil::arrayGet($_REQUEST, 'selection_d' , array()); |
| 296 | 296 | ||
| 297 | + | ||
| 298 | + | ||
| 297 | $sMoveCode = KTUtil::randomString(); | 299 | $sMoveCode = KTUtil::randomString(); |
| 298 | $aMoveData = array('folders' => $aFolderSelection, 'documents' => $aDocumentSelection); | 300 | $aMoveData = array('folders' => $aFolderSelection, 'documents' => $aDocumentSelection); |
| 299 | 301 | ||
| 302 | + var_dump($aMoveData); | ||
| 303 | + | ||
| 300 | $moves = KTUtil::arrayGet($_SESSION, 'moves', array()); | 304 | $moves = KTUtil::arrayGet($_SESSION, 'moves', array()); |
| 301 | $moves = (array) $moves; // ? | 305 | $moves = (array) $moves; // ? |
| 302 | $moves[$sMoveCode] = $aMoveData; | 306 | $moves[$sMoveCode] = $aMoveData; |
| @@ -403,6 +407,7 @@ class BrowseDispatcher extends KTStandardDispatcher { | @@ -403,6 +407,7 @@ class BrowseDispatcher extends KTStandardDispatcher { | ||
| 403 | 407 | ||
| 404 | $aMoveStack = $_SESSION['moves'][$move_code]; | 408 | $aMoveStack = $_SESSION['moves'][$move_code]; |
| 405 | 409 | ||
| 410 | + | ||
| 406 | $oTargetFolder = Folder::get($target_folder); | 411 | $oTargetFolder = Folder::get($target_folder); |
| 407 | 412 | ||
| 408 | if (PEAR::isError($oTargetFolder)) { | 413 | if (PEAR::isError($oTargetFolder)) { |
| @@ -425,31 +430,42 @@ class BrowseDispatcher extends KTStandardDispatcher { | @@ -425,31 +430,42 @@ class BrowseDispatcher extends KTStandardDispatcher { | ||
| 425 | if (PEAR::isError($oDoc)) { | 430 | if (PEAR::isError($oDoc)) { |
| 426 | $this->errorRedirectToMain(_('Invalid document.')); | 431 | $this->errorRedirectToMain(_('Invalid document.')); |
| 427 | } | 432 | } |
| 428 | - $oDocumentFolder = Folder::get($oDoc->getFolderID()); | ||
| 429 | - $oDoc->setFolderID($target_folder); | ||
| 430 | - if (!$oDoc->update(true)) { | ||
| 431 | - $this->errorRedirectTo("main", _("There was a problem updating the document's location in the database"), sprintf("fDocumentId=%d&fFolderId=%d", $this->oDocument->getId(), $this->oFolder->getId())); | 433 | + |
| 434 | + $oOriginalFolder = Folder::get($oDoc->getFolderId()); | ||
| 435 | + $iOriginalFolderPermissionObjectId = $oOriginalFolder->getPermissionObjectId(); | ||
| 436 | + $iDocumentPermissionObjectId = $oDoc->getPermissionObjectId(); | ||
| 437 | + | ||
| 438 | + if ($iDocumentPermissionObjectId === $iOriginalFolderPermissionObjectId) { | ||
| 439 | + $oDoc->setPermissionObjectId($oTargetFolder->getPermissionObjectId()); | ||
| 432 | } | 440 | } |
| 441 | + | ||
| 442 | + //put the document in the new folder | ||
| 443 | + $oDoc->setFolderID($oTargetFolder->getId()); | ||
| 444 | + $res = $oDoc->update(true); | ||
| 445 | + if (!$res) { | ||
| 446 | + $this->errorRedirectTo("move", _("There was a problem updating the document's location in the database"), sprintf("fDocumentId=%d&fFolderId=%d", $oDoc->getId(), $oTargetFolder->getId())); | ||
| 447 | + } | ||
| 433 | 448 | ||
| 434 | - if (!$oStorage->moveDocument($oDoc, $oDocumentFolder, $oTargetFolder)) { | ||
| 435 | - $oDoc->setFolderID($oDocumentFolder->getId()); | 449 | + //move the document on the file system |
| 450 | + $oStorage =& KTStorageManagerUtil::getSingleton(); | ||
| 451 | + if (!$oStorage->moveDocument($oDoc, $oOriginalFolder, $oTargetFolder)) { | ||
| 452 | + $oDoc->setFolderID($oOriginalFolder->getId()); | ||
| 436 | $oDoc->update(true); | 453 | $oDoc->update(true); |
| 437 | - errorRedirectTo("move", _("There was a problem updating the document's location in the repository storage"), sprintf("fDocumentId=%d&fFolderId=%d", $this->oDocument->getId(), $this->oFolder->getId())); | 454 | + $this->errorRedirectTo("move", _("There was a problem updating the document's location in the repository storage"), sprintf("fDocumentId=%d&fFolderId=%d", $oDoc->getId(), $oTargetFolder->getId())); |
| 438 | } | 455 | } |
| 439 | 456 | ||
| 440 | $sMoveMessage = sprintf("Moved from %s/%s to %s/%s: %s", | 457 | $sMoveMessage = sprintf("Moved from %s/%s to %s/%s: %s", |
| 441 | - $oDocumentFolder->getFullPath(), | ||
| 442 | - $oDocumentFolder->getName(), | 458 | + $oOriginalFolder->getFullPath(), |
| 459 | + $oOriginalFolder->getName(), | ||
| 443 | $oTargetFolder->getFullPath(), | 460 | $oTargetFolder->getFullPath(), |
| 444 | $oTargetFolder->getName(), | 461 | $oTargetFolder->getName(), |
| 445 | - $sReason); | 462 | + $reason); |
| 446 | 463 | ||
| 447 | // create the document transaction record | 464 | // create the document transaction record |
| 448 | 465 | ||
| 449 | $oDocumentTransaction = & new DocumentTransaction($oDoc, $sMoveMessage, 'ktcore.transactions.move'); | 466 | $oDocumentTransaction = & new DocumentTransaction($oDoc, $sMoveMessage, 'ktcore.transactions.move'); |
| 450 | - $oDocumentTransaction->create(); | ||
| 451 | - | ||
| 452 | - | 467 | + $oDocumentTransaction->create(); |
| 468 | + | ||
| 453 | $this->commitTransaction(); | 469 | $this->commitTransaction(); |
| 454 | 470 | ||
| 455 | $oKTTriggerRegistry = KTTriggerRegistry::getSingleton(); | 471 | $oKTTriggerRegistry = KTTriggerRegistry::getSingleton(); |