Commit 186cc8995fa8d59dcda182b52ccd62310320c344

Authored by Neil Blakey-Milner
1 parent 05a7cb3b

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).

Also return an error indication from setPermissionForID


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4551 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/permissions/permissionutil.inc.php
... ... @@ -110,7 +110,8 @@ class KTPermissionUtil {
110 110 $oPermissionAssignment = KTPermissionUtil::getOrCreateAssignment($sPermission, $iObjectID);
111 111 $oDescriptor = KTPermissionUtil::getOrCreateDescriptor($aAllowed);
112 112 $oPermissionAssignment->setPermissionDescriptorID($oDescriptor->getID());
113   - $oPermissionAssignment->update();
  113 + $res = $oPermissionAssignment->update();
  114 + return $res;
114 115 }
115 116 // }}}
116 117  
... ... @@ -442,6 +443,37 @@ class KTPermissionUtil {
442 443 KTPermissionUtil::updatePermissionLookupForPO($oNewPO);
443 444 }
444 445 // }}}
  446 +
  447 + // {{{ rebuildPermissionLookups
  448 + function rebuildPermissionLookups($bEmptyOnly = false) {
  449 + if (empty($bEmptyOnly)) {
  450 + $sTable = KTUtil::getTableName('folders');
  451 + $sQuery = sprintf("SELECT id FROM %s WHERE permission_lookup_id IS NULL AND permission_object_id IS NOT NULL", $sTable);
  452 + } else {
  453 + $sTable = KTUtil::getTableName('folders');
  454 + $sQuery = sprintf("SELECT id FROM %s WHERE permission_object_id IS NOT NULL", $sTable);
  455 + }
  456 + $aIds = DBUtil::getResultArrayKey($sQuery, 'id');
  457 + foreach ($aIds as $iId) {
  458 + $oFolder =& Folder::get($iId);
  459 + KTPermissionUtil::updatePermissionLookup($oFolder);
  460 + }
  461 +
  462 + if (empty($bEmptyOnly)) {
  463 + $sTable = KTUtil::getTableName('documents');
  464 + $sQuery = sprintf("SELECT id FROM %s WHERE permission_lookup_id IS NULL", $sTable);
  465 + } else {
  466 + $sTable = KTUtil::getTableName('documents');
  467 + $sQuery = sprintf("SELECT id FROM %s", $sTable);
  468 + }
  469 + $aIds = DBUtil::getResultArrayKey($sQuery, 'id');
  470 + foreach ($aIds as $iId) {
  471 + $oDocument =& Document::get($iId);
  472 + KTPermissionUtil::updatePermissionLookup($oDocument);
  473 + }
  474 +
  475 + }
  476 + // }}}
445 477 }
446 478  
447 479 ?>
... ...