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