Commit c3747ad6f64eac110c5fd037499aa08ff446f4da

Authored by nbm
1 parent 3fa43015

Take dynamic permissions into account when creating lookup permissions.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3974 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/permissions/permissionutil.inc.php
... ... @@ -8,6 +8,7 @@ require_once(KT_LIB_DIR . "/permissions/permissiondescriptor.inc.php");
8 8 require_once(KT_LIB_DIR . "/permissions/permissionlookup.inc.php");
9 9 require_once(KT_LIB_DIR . "/permissions/permissionlookupassignment.inc.php");
10 10 require_once(KT_LIB_DIR . "/permissions/permissionobject.inc.php");
  11 +require_once(KT_LIB_DIR . "/permissions/permissiondynamiccondition.inc.php");
11 12 require_once(KT_LIB_DIR . "/groups/GroupUtil.php");
12 13  
13 14 class KTPermissionUtil {
... ... @@ -176,7 +177,7 @@ class KTPermissionUtil {
176 177 function updatePermissionLookup(&$oFolderOrDocument) {
177 178 $oPO = KTPermissionObject::get($oFolderOrDocument->getPermissionObjectID());
178 179 $aPAs = KTPermissionAssignment::getByObjectMulti($oPO);
179   - $aMapPermDesc = array();
  180 + $aMapPermAllowed = array();
180 181 foreach ($aPAs as $oPA) {
181 182 $oPD = KTPermissionDescriptor::get($oPA->getPermissionDescriptorID());
182 183 $aGroupIDs = $oPD->getGroups();
... ... @@ -185,8 +186,29 @@ class KTPermissionUtil {
185 186 "group" => $aGroupIDs,
186 187 "user" => $aUserIDs,
187 188 );
  189 + $aMapPermAllowed[$oPA->getPermissionID()] = $aAllowed;
  190 + }
  191 +
  192 + if (!is_a($oFolderOrDocument, 'Folder')) {
  193 + $aDynamicConditions = KTPermissionDynamicCondition::getByPermissionObject($oPO);
  194 + foreach ($aDynamicConditions as $oDynamicCondition) {
  195 + $iConditionId = $oDynamicCondition->getConditionId();
  196 + if (KTSearchUtil::testConditionOnDocument($iConditionId, $oFolderOrDocument)) {
  197 + $iGroupId = $oDynamicCondition->getGroupId();
  198 + $aPermissionIds = $oDynamicCondition->getAssignment();
  199 + foreach ($aPermissionIds as $iPermissionId) {
  200 + $aCurrentAllowed = KTUtil::arrayGet($aMapPermAllowed, $iPermissionId, array());
  201 + $aCurrentAllowed["group"][] = $iGroupId;
  202 + $aMapPermAllowed[$iPermissionId] = $aCurrentAllowed;
  203 + }
  204 + }
  205 + }
  206 + }
  207 +
  208 + $aMapPermDesc = array();
  209 + foreach ($aMapPermAllowed as $iPermissionId => $aAllowed) {
188 210 $oLookupPD = KTPermissionUtil::getOrCreateDescriptor($aAllowed);
189   - $aMapPermDesc[$oPA->getPermissionID()] = $oLookupPD->getID();
  211 + $aMapPermDesc[$iPermissionId] = $oLookupPD->getID();
190 212 }
191 213  
192 214 $oPL = KTPermissionLookupAssignment::findOrCreateLookupByPermissionDescriptorMap($aMapPermDesc);
... ...