Commit ccf441e6afb4c2be2a5bf6a20cee58c606e8fdf6

Authored by bshuttle
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();