• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/volume/base.php
  • Класс: BitrixDiskVolumeBase
  • Вызов: Base::getCorrespondingFolderList
public function getCorrespondingFolderList(array $additionalFilter = []):MainDBResult
{
	$filterToFolderList = [];

	$storageId =  $this->getFilterValue('STORAGE_ID', '=');
	if (!empty($storageId))
	{
		$filterToFolderList['=STORAGE_ID'] = $storageId;
	}
	$folderId =  $this->getFilterValue('FOLDER_ID', '=');
	if (!empty($folderId))
	{
		$filterToFolderList['=PATH_CHILD.PARENT_ID'] = $folderId;
	}

	$filterToFolderList['=TYPE'] = DiskInternalsObjectTable::TYPE_FOLDER;

	if ($this instanceof VolumeStorageTrashCan)
	{
		$filterToFolderList['>=IS_REAL_OBJECT'] = 0;
	}
	else
	{
		$filterToFolderList['=IS_REAL_OBJECT'] = 1;
	}

	if (!isset($additionalFilter['!DELETED_TYPE']))
	{
		$filterToFolderList['=DELETED_TYPE'] = DiskInternalsObjectTable::DELETED_TYPE_NONE;
	}

	$filterToFolderList = array_merge($filterToFolderList, $additionalFilter);

	$folderList = DiskFolder::getList([
		'select'  => ['ID'],
		'filter'  => $filterToFolderList,
		'runtime' => [
			'IS_REAL_OBJECT' => new MainEntityExpressionField(
				'IS_REAL_OBJECT',
				'CASE WHEN disk_internals_folder.ID = disk_internals_folder.REAL_OBJECT_ID THEN 1 ELSE 0 END'
			),
		],
		'order' => [
			'PATH_CHILD.DEPTH_LEVEL' => 'DESC',
			'ID' => 'ASC',
		],
		'limit' => $this->getLimit(),
	]);

	return $folderList;
}