Commit 9523ef6f36e73635ecde8448336fbdd6bd571002

Authored by Conrad Vermeulen
1 parent 168ce234

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/trunk@8384 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  
... ...