Exemplo n.º 1
0
 public static function GetCollectionTree($Params = array())
 {
     $arColTree = array();
     $arColTemp = array();
     $Collections = array();
     $arCol = $Params['menu'] ? 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'] && $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);
 }