- Модуль: fileman
- Путь к файлу: ~/bitrix/modules/fileman/classes/general/medialib.php
- Класс: CMedialib
- Вызов: CMedialib::GetCollectionTree
static function GetCollectionTree($Params = array())
{
$arColTree = array();
$arColTemp = array();
$Collections = array();
$arCol = ($Params['menu'] ?? null) ? CMedialibCollection::GetList(array('arFilter' => array('ACTIVE' => 'Y', 'PARENT_ID' => 0))) : CMedialibCollection::GetList(array('arFilter' => array('ACTIVE' => 'Y')));
$iter = 0;
for ($i = 0, $l = count($arCol); $i < $l; $i++)
{
if (isset($Params['CheckAccessFunk']) && !call_user_func($Params['CheckAccessFunk'], $arCol[$i]['ID']))
continue;
if (!CMedialib::_buildCollection($arCol[$i], $i, $arColTree, $Collections, $Params))
$arColTemp[] = array($arCol[$i], $i);
}
while(count($arColTemp) > 0 && $iter < 50)
{
$newAr = array();
for ($i = 0, $l = count($arColTemp); $i < $l; $i++)
{
if (isset($Params['CheckAccessFunk']) && !call_user_func($Params['CheckAccessFunk'], $arCol[$i]['ID']))
continue;
if (!CMedialib::_buildCollection($arColTemp[$i][0], $arColTemp[$i][1], $arColTree, $Collections, $Params))
$newAr[] = $arColTemp[$i];
}
$arColTemp = $newAr;
$iter++;
}
if (($Params['checkByType'] ?? null) && $Params['typeId'] > 0)
{
$arType = CMedialib::GetTypeById($Params['typeId']);
if ($arType)
{
foreach ($Collections as $id => $col)
{
// Del collection escription if it has another type
if (!CMedialib::CompareTypesEx($Collections[$id]['ML_TYPE'], $arType))
unset($Collections[$id]);
}
}
}
return array('arColTree' => $arColTree, 'Collections' => $Collections);
}