Commit 15029304893cfe97488dc4c51769c96f82ee0cd2

Authored by kevin_fourie
1 parent 0c9a6230

Merged in from DEV trunk...

KTS-3303
"Performance on updating of permissions takes a long time when there are many documents"
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/branches/3.5.2c-Release-Branch@8398 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/permissions/permissionutil.inc.php
... ... @@ -227,12 +227,37 @@ class KTPermissionUtil {
227 227 KTPermissionUtil::updatePermissionLookup($oFolder, $aOptions);
228 228 }
229 229 }
230   - $aDocuments =& Document::getList(array($sWhere, $aParams));
  230 + $aIds = DBUtil::getResultArrayKey(array("SELECT id FROM documents WHERE permission_object_id=?", $aParams), 'id');
  231 + if (!PEAR::isError($aIds))
  232 + {
  233 + $cache = KTCache::getSingleton();
  234 +
  235 + foreach ($aIds as $iId)
  236 + {
  237 + $oDocument =& Document::get($iId);
  238 + KTPermissionUtil::updatePermissionLookup($oDocument, $aOptions);
  239 +
  240 + $metadataid = $oDocument->getMetadataVersionId();
  241 + $contentid = $oDocument->getContentVersionId();
  242 +
  243 + $cache->remove('KTDocumentMetadataVersion/id', $metadataid);
  244 + $cache->remove('KTDocumentContentVersion/id', $contentid);
  245 + $cache->remove('KTDocumentCore/id', $iId);
  246 + $cache->remove('Document/id', $iId);
  247 + unset($GLOBALS['_OBJECTCACHE']['KTDocumentMetadataVersion'][$metadataid]);
  248 + unset($GLOBALS['_OBJECTCACHE']['KTDocumentContentVersion'][$contentid]);
  249 + unset($GLOBALS['_OBJECTCACHE']['KTDocumentCore'][$iId]);
  250 +
  251 + unset($oDocument);
  252 + }
  253 + }
  254 +
  255 + /* $aDocuments =& Document::getList(array($sWhere, $aParams));
231 256 if (!PEAR::isError($aDocuments)) {
232 257 foreach ($aDocuments as $oDocument) {
233 258 KTPermissionUtil::updatePermissionLookup($oDocument, $aOptions);
234 259 }
235   - }
  260 + }*/
236 261 }
237 262 // }}}
238 263  
... ...