• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site_template.php
  • Класс: CSiteTemplate
  • Вызов: CSiteTemplate::GetList
static function GetList($arOrder=array(), $arFilter=array(), $arSelect=false)
{
	/** @global CMain $APPLICATION */
	global $APPLICATION;

	if(isset($arFilter["ID"]) && !is_array($arFilter["ID"]))
		$arFilter["ID"] = array($arFilter["ID"]);
	if(isset($arFilter["TYPE"]) && !is_array($arFilter["TYPE"]))
		$arFilter["TYPE"] = array($arFilter["TYPE"]);

	$folders = array(
		"/local/templates",
		BX_PERSONAL_ROOT."/templates",
	);
	$arRes = array();
	foreach($folders as $folder)
	{
		$path = $_SERVER["DOCUMENT_ROOT"].$folder;
		if(is_dir($path))
		{
			$handle = opendir($path);
			if($handle)
			{
				while(($file = readdir($handle)) !== false)
				{
					if($file == "." || $file == ".." || !is_dir($path."/".$file))
						continue;

					if($file == ".default")
						continue;

					if(isset($arRes[$file]))
						continue;

					if(isset($arFilter["ID"]) && !in_array($file, $arFilter["ID"]))
						continue;

					$arTemplate = array("DESCRIPTION" => "");

					$fname = $path."/".$file."/description.php";
					if(file_exists(($fname)))
					{
						BitrixMainLocalizationLoc::loadLanguageFile($fname);
						include($fname);
					}

					if(!isset($arTemplate["TYPE"])) $arTemplate["TYPE"] = '';
					if(isset($arFilter["TYPE"]) && !in_array($arTemplate["TYPE"], $arFilter["TYPE"]))
						continue;

					$arTemplate["ID"] = $file;
					$arTemplate["PATH"] = $folder."/".$file;

					if(!isset($arTemplate["NAME"]))
						$arTemplate["NAME"] = $file;

					if($arSelect === false || in_array("SCREENSHOT", $arSelect))
					{
						if(file_exists($path."/".$file."/lang/".LANGUAGE_ID."/screen.gif"))
							$arTemplate["SCREENSHOT"] = $folder."/".$file."/lang/".LANGUAGE_ID."/screen.gif";
						elseif(file_exists($path."/".$file."/screen.gif"))
							$arTemplate["SCREENSHOT"] = $folder."/".$file."/screen.gif";
						else
							$arTemplate["SCREENSHOT"] = false;

						if(file_exists($path."/".$file."/lang/".LANGUAGE_ID."/preview.gif"))
							$arTemplate["PREVIEW"] = $folder."/".$file."/lang/".LANGUAGE_ID."/preview.gif";
						elseif(file_exists($path."/".$file."/preview.gif"))
							$arTemplate["PREVIEW"] = $folder."/".$file."/preview.gif";
						else
							$arTemplate["PREVIEW"] = false;
					}

					if($arSelect === false || in_array("CONTENT", $arSelect))
					{
						$arTemplate["CONTENT"] = $APPLICATION->GetFileContent($path."/".$file."/header.php")."#WORK_AREA#".$APPLICATION->GetFileContent($path."/".$file."/footer.php");
					}

					if($arSelect === false || in_array("STYLES", $arSelect))
					{
						if(file_exists($path."/".$file."/styles.css"))
						{
							$arTemplate["STYLES"] = $APPLICATION->GetFileContent($path."/".$file."/styles.css");
							$arTemplate["STYLES_TITLE"] = CSiteTemplate::__GetByStylesTitle($path."/".$file."/.styles.php");
						}

						if(file_exists($path."/".$file."/template_styles.css"))
							$arTemplate["TEMPLATE_STYLES"] = $APPLICATION->GetFileContent($path."/".$file."/template_styles.css");
					}

					$arRes[$file] = $arTemplate;
				}
				closedir($handle);
			}
		}
	}

	if(is_array($arOrder))
	{
		$columns = array();
		static $fields = array("ID"=>1, "NAME"=>1, "DESCRIPTION"=>1, "SORT"=>1);
		foreach($arOrder as $key => $val)
		{
			$key = mb_strtoupper($key);
			if(isset($fields[$key]))
			{
				$columns[$key] = (mb_strtoupper($val) == "DESC"? SORT_DESC : SORT_ASC);
			}
		}
		if(!empty($columns))
		{
			BitrixMainTypeCollection::sortByColumn($arRes, $columns);
		}
	}

	$db_res = new CDBResult;
	$db_res->InitFromArray($arRes);

	return $db_res;
}