Commit 526decbf842c701f6775d1c1d2a3cc7a70cdfe93
1 parent
467f07ad
Merged in...
KTS-3777 "CLONE -Permissions of a document can be inconsistent with the permissions of the folder(SUP-1080)" Fixed. A copy now checks if the permissions were inherited and inherits the new parent folder permissions. Committed by: Megan Watson Reviewed by: Conrad Vermeulen git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/branches/3.5.4-Release-Branch@9497 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
24 additions
and
0 deletions
lib/foldermanagement/folderutil.inc.php
| @@ -200,6 +200,9 @@ class KTFolderUtil { | @@ -200,6 +200,9 @@ class KTFolderUtil { | ||
| 200 | return $res; | 200 | return $res; |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | + // Regenerate the folder object - ensure the updated information is taken into account | ||
| 204 | + $oFolder = Folder::get($oFolder->getID()); | ||
| 205 | + | ||
| 203 | $res = $oStorage->moveFolder($oFolder, $oNewParentFolder); | 206 | $res = $oStorage->moveFolder($oFolder, $oNewParentFolder); |
| 204 | if (PEAR::isError($res)) { | 207 | if (PEAR::isError($res)) { |
| 205 | return $res; | 208 | return $res; |
| @@ -450,6 +453,19 @@ class KTFolderUtil { | @@ -450,6 +453,19 @@ class KTFolderUtil { | ||
| 450 | return PEAR::raiseError(_kt('You are not allowed to create folders in the destination.')); | 453 | return PEAR::raiseError(_kt('You are not allowed to create folders in the destination.')); |
| 451 | } | 454 | } |
| 452 | 455 | ||
| 456 | + // Check if the source folder inherits its permissions | ||
| 457 | + // Get source PO id and its parent PO id | ||
| 458 | + $iSrcPoId = $oSrcFolder->getPermissionObjectID(); | ||
| 459 | + $oSrcParent = Folder::get($oSrcFolder->getParentID()); | ||
| 460 | + $iSrcParentPoId = $srcParent->getPermissionObjectID(); | ||
| 461 | + | ||
| 462 | + // If the folder defines its own permissions then we leave it | ||
| 463 | + // If the source folder inherits permissions we must change it to inherit from the new parent folder | ||
| 464 | + $bInheritPermissions = false; | ||
| 465 | + if($iSrcPoId == $iSrcParentPoId){ | ||
| 466 | + $bInheritPermissions = true; | ||
| 467 | + } | ||
| 468 | + | ||
| 453 | $aFolderIds = array(); // of oFolder | 469 | $aFolderIds = array(); // of oFolder |
| 454 | $aDocuments = array(); // of oDocument | 470 | $aDocuments = array(); // of oDocument |
| 455 | $aFailedDocuments = array(); // of String | 471 | $aFailedDocuments = array(); // of String |
| @@ -592,6 +608,14 @@ class KTFolderUtil { | @@ -592,6 +608,14 @@ class KTFolderUtil { | ||
| 592 | } | 608 | } |
| 593 | } | 609 | } |
| 594 | 610 | ||
| 611 | + // If the folder inherits its permissions then we set it to inherit from the new parent folder and update permissions | ||
| 612 | + if($bInheritPermissions){ | ||
| 613 | + $aOptions = array( | ||
| 614 | + 'evenifnotowner' => true, // Inherit from parent folder, even though not permission owner | ||
| 615 | + ); | ||
| 616 | + KTPermissionUtil::inheritPermissionObject($oNewBaseFolder, $aOptions); | ||
| 617 | + } | ||
| 618 | + | ||
| 595 | // and store | 619 | // and store |
| 596 | DBUtil::commit(); | 620 | DBUtil::commit(); |
| 597 | 621 |