Commit f8d2b151599390527eeda0923d711a150b8477fa
1 parent
7e5aae3a
fix for 528: recursion fails.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5030 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
5 additions
and
15 deletions
plugins/ktcore/KTPermissions.php
| ... | ... | @@ -455,7 +455,6 @@ class KTRoleAllocationPlugin extends KTFolderAction { |
| 455 | 455 | |
| 456 | 456 | function renegeratePermissionsForRole($iRoleId) { |
| 457 | 457 | $iStartFolderId = $this->oFolder->getId(); |
| 458 | - $oRoleAllocation = RoleAllocation::getAllocationsForFolderAndRole($iStartFolderId, $iRoleId); | |
| 459 | 458 | /* |
| 460 | 459 | * 1. find all folders & documents "below" this one which use the role |
| 461 | 460 | * definition _active_ (not necessarily present) at this point. |
| ... | ... | @@ -474,31 +473,22 @@ class KTRoleAllocationPlugin extends KTFolderAction { |
| 474 | 473 | * update their permissions. |
| 475 | 474 | */ |
| 476 | 475 | |
| 477 | - $sQuery = 'SELECT f.id as `id` FROM ' . Folder::_table() . ' AS f LEFT JOIN ' . RoleAllocation::_table() . ' AS ra ON (f.id = ra.folder_id) WHERE f.parent_id = ? AND ra.role_id '; | |
| 478 | - if ($oRoleAllocation == null) { // no alloc. | |
| 479 | - $sQuery .= ' IS NULL '; | |
| 480 | - $hasId = false; | |
| 481 | - } else { | |
| 482 | - $sQuery .= ' = ? '; | |
| 483 | - $aId = $oRoleAllocation->getId(); | |
| 484 | - $hasId = true; | |
| 485 | - } | |
| 476 | + $sRoleAllocTable = KTUtil::getTableName('role_allocations'); | |
| 477 | + $sFolderTable = KTUtil::getTableName('folders'); | |
| 478 | + $sQuery = sprintf('SELECT f.id as id FROM %s AS f LEFT JOIN %s AS ra ON (f.id = ra.folder_id) WHERE ra.id IS NULL AND f.parent_id = ?', $sFolderTable, $sRoleAllocTable); | |
| 486 | 479 | |
| 487 | 480 | |
| 488 | 481 | $folder_queue = array($iStartFolderId); |
| 489 | 482 | while (!empty($folder_queue)) { |
| 490 | 483 | $active_folder = array_pop($folder_queue); |
| 491 | 484 | |
| 492 | - | |
| 493 | - $aParams = array($active_folder); | |
| 494 | - if ($hasId) { $aParams[] = $aId; } | |
| 495 | - | |
| 485 | + $aParams = array($active_folder); | |
| 496 | 486 | |
| 497 | 487 | $aNewFolders = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'id'); |
| 498 | 488 | if (PEAR::isError($aNewFolders)) { |
| 499 | 489 | $this->errorRedirectToMain(_('Failure to generate folderlisting.')); |
| 500 | 490 | } |
| 501 | - $folder_queue = array_merge ($folder_queue, $aNewFolders); // push. | |
| 491 | + $folder_queue = array_merge ($folder_queue, (array) $aNewFolders); // push. | |
| 502 | 492 | |
| 503 | 493 | |
| 504 | 494 | // update the folder. | ... | ... |