• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/classes/general/seo_utils.php
  • Класс: CSeoUtils
  • Вызов: CSeoUtils::getDirStructure
static function getDirStructure($bLogical, $site, $path)
{
	global $USER;

	$arDirContent = array();
	if($USER->CanDoFileOperation('fm_view_listing', array($site, $path)))
	{
		BitrixMainLoader::includeModule('fileman');

		$arDirs = array();
		$arFiles = array();

		CFileMan::GetDirList(array($site, $path), $arDirs, $arFiles, array(), array("NAME" => "asc"), "DF", $bLogical, true);

		$arDirContent_t = array_merge($arDirs, $arFiles);
		for($i=0,$l = count($arDirContent_t);$i<$l;$i++)
		{
			$file = $arDirContent_t[$i];
			$arPath = array($site, $file['ABS_PATH']);
			if(
				($file["TYPE"]=="F" && !$USER->CanDoFileOperation('fm_view_file',$arPath))
				|| ($file["TYPE"]=="D" && !$USER->CanDoFileOperation('fm_view_listing',$arPath))
				|| ($file["TYPE"]=="F" && $file["NAME"]==".section.php")
			)
			{
				continue;
			}

			$f = $file['TYPE'] == 'F'
				? new BitrixMainIOFile($file['PATH'], $site)
				: new BitrixMainIODirectory($file['PATH'], $site);

			$p = $f->getName();

			if($f->isSystem()
				|| $file['TYPE'] == 'F' && in_array($p, array("urlrewrite.php"))
				|| $file['TYPE'] == 'D' && preg_match("//(bitrix|".COption::getOptionString("main", "upload_dir", "upload").")//", "/".$p."/")
			)
			{
				continue;
			}

			$arFileData = array(
				'NAME' => $bLogical ? $file['LOGIC_NAME'] : $p,
				'FILE' => $p,
				'TYPE' => $file['TYPE'],
				'DATA' => $file,
			);

			if($arFileData['NAME'] == '')
				$arFileData['NAME'] = GetMessage('SEO_DIR_LOGICAL_NO_NAME');

			$arDirContent[] = $arFileData;
		}
		unset($arDirContent_t);
	}

	return $arDirContent;
}