- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/diskstorage.php
- Класс: CDiskStorage
- Вызов: CDiskStorage::loadFormattedFolderTreeAndBreadcrumbs
private function loadFormattedFolderTreeAndBreadcrumbs($returnTree = false)
{
$cache = DataCache::createInstance();
if($cache->initCache(15768000, 'storage_tr_' . $this->storage->getId(), 'disk'))
{
list($formattedFolders, $this->cacheBreadcrumbs) = $cache->getVars();
}
else
{
$querySharedFolders = BitrixDiskSharing::getList(array(
'filter' => array(
'FROM_ENTITY' => Sharing::CODE_USER . $this->getUser()->getId(),
'!TO_ENTITY' => Sharing::CODE_USER . $this->getUser()->getId(),
),
));
$sharedFolders = array();
while($sharedFolder = $querySharedFolders->fetch())
{
$sharedFolders[$sharedFolder['REAL_OBJECT_ID']] = $sharedFolder['REAL_OBJECT_ID'];
}
$formattedFolders = array();
foreach($this->walkAndBuildTree($this->storage->getRootObject()) as $folder)
{
/** @var Folder $folder */
$formattedFolders[] = $this->formatFolderToResponse($folder, isset($sharedFolders[$folder->getId()]));
}
unset($folder);
$cache->startDataCache();
$cache->endDataCache(array($formattedFolders, $this->cacheBreadcrumbs));
}
return $returnTree? $formattedFolders : null;
}