From 186cc8995fa8d59dcda182b52ccd62310320c344 Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Fri, 30 Dec 2005 08:13:12 +0000 Subject: [PATCH] Add rebuildPermissionLookups, which will rebuild all permission lookups on all objects (pass true as the first parameter to only build lookups for objects without lookups). --- lib/permissions/permissionutil.inc.php | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/permissions/permissionutil.inc.php b/lib/permissions/permissionutil.inc.php index 7202a88..c31f505 100644 --- a/lib/permissions/permissionutil.inc.php +++ b/lib/permissions/permissionutil.inc.php @@ -110,7 +110,8 @@ class KTPermissionUtil { $oPermissionAssignment = KTPermissionUtil::getOrCreateAssignment($sPermission, $iObjectID); $oDescriptor = KTPermissionUtil::getOrCreateDescriptor($aAllowed); $oPermissionAssignment->setPermissionDescriptorID($oDescriptor->getID()); - $oPermissionAssignment->update(); + $res = $oPermissionAssignment->update(); + return $res; } // }}} @@ -442,6 +443,37 @@ class KTPermissionUtil { KTPermissionUtil::updatePermissionLookupForPO($oNewPO); } // }}} + + // {{{ rebuildPermissionLookups + function rebuildPermissionLookups($bEmptyOnly = false) { + if (empty($bEmptyOnly)) { + $sTable = KTUtil::getTableName('folders'); + $sQuery = sprintf("SELECT id FROM %s WHERE permission_lookup_id IS NULL AND permission_object_id IS NOT NULL", $sTable); + } else { + $sTable = KTUtil::getTableName('folders'); + $sQuery = sprintf("SELECT id FROM %s WHERE permission_object_id IS NOT NULL", $sTable); + } + $aIds = DBUtil::getResultArrayKey($sQuery, 'id'); + foreach ($aIds as $iId) { + $oFolder =& Folder::get($iId); + KTPermissionUtil::updatePermissionLookup($oFolder); + } + + if (empty($bEmptyOnly)) { + $sTable = KTUtil::getTableName('documents'); + $sQuery = sprintf("SELECT id FROM %s WHERE permission_lookup_id IS NULL", $sTable); + } else { + $sTable = KTUtil::getTableName('documents'); + $sQuery = sprintf("SELECT id FROM %s", $sTable); + } + $aIds = DBUtil::getResultArrayKey($sQuery, 'id'); + foreach ($aIds as $iId) { + $oDocument =& Document::get($iId); + KTPermissionUtil::updatePermissionLookup($oDocument); + } + + } + // }}} } ?> -- libgit2 0.21.4