• Модуль: 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;
}