public static function GetList($arFilter = array(), $arCurrentValues = array(), $template_id = array()) { if (!is_set($arFilter, "FOLDER")) { $arr = CTemplates::GetFolderList(); $arFilter["FOLDER"] = array_keys($arr); } $arTemplates = array(); foreach ($arFilter["FOLDER"] as $folder) { $folder = _normalizePath($folder); $arTemplates[$folder] = array(); $arPath = array("/bitrix/modules/" . $folder . "/install/templates/", BX_PERSONAL_ROOT . "/templates/.default/"); if (is_array($template_id)) { foreach ($template_id as $v) { $arPath[] = BX_PERSONAL_ROOT . "/templates/" . _normalizePath($v) . "/"; } } elseif (strlen($template_id) > 0) { $arPath[] = BX_PERSONAL_ROOT . "/templates/" . _normalizePath($template_id) . "/"; } foreach ($arPath as $path) { CTemplates::__FindTemplates($path, $arTemplates[$folder], $arCurrentValues, $folder); } if (count($arTemplates[$folder]) <= 0) { unset($arTemplates[$folder]); } else { $arTemplate = $arTemplates[$folder]; $arTemplateTemp = array(); $arSeparators = array(); foreach ($arTemplate as $k => $val) { if ($val["SEPARATOR"] == "Y") { $arSeparators[$k] = $val; } } foreach ($arSeparators as $sep_id => $val_sep) { $arTemplateTemp[$sep_id] = $val_sep; reset($arTemplate); while (list($k, $val) = each($arTemplate)) { if ($val === false) { continue; } if ($k == $sep_id) { while (list($k, $val) = each($arTemplate)) { if ($val === false) { continue; } if ($val["SEPARATOR"] == "Y") { break; } if (strlen($val["PARENT"]) > 0 && $val["PARENT"] != $sep_id) { continue; } $arTemplateTemp[$k] = $val; $arTemplate[$k] = false; } //continue; } if ($val["PARENT"] == $sep_id) { $arTemplateTemp[$k] = $val; $arTemplate[$k] = false; } } } $bW = true; foreach ($arTemplate as $k => $val) { if ($val === false || $val["SEPARATOR"] == "Y") { continue; } if ($bW) { if (count($arSeparators) > 0) { $arTemplateTemp[md5(uniqid(rand(), true))] = array("NAME" => "----------------------------", "SEPARATOR" => "Y"); } $bW = false; } $arTemplateTemp[$k] = $val; $arTemplate[$k] = false; } $arTemplates[$folder] = $arTemplateTemp; } } return $arTemplates; }