public static function getDirStructure($bLogical, $site, $path) { global $USER; $arDirContent = array(); if ($USER->CanDoFileOperation('fm_view_listing', array($site, $path))) { \Bitrix\Main\Loader::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 \Bitrix\Main\IO\File($file['PATH'], $site) : new \Bitrix\Main\IO\Directory($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 (strlen($arFileData['NAME']) <= 0) { $arFileData['NAME'] = GetMessage('SEO_DIR_LOGICAL_NO_NAME'); } $arDirContent[] = $arFileData; } unset($arDirContent_t); } return $arDirContent; }
function DirsRecursive($path, &$arDirs, $arFilter = array(), $depth = 0) { $depth++; CFileMan::GetDirList($path, $arDirsTmp, $arFiles, $arFilter, array("name" => "asc"), "D"); for ($i = 0, $l = count($arDirsTmp); $i < $l; $i++) { $arDir = $arDirsTmp[$i]; $arDir["DEPTH_LEVEL"] = $depth; $arDirs[] = $arDir; CFileMan::DirsRecursive($arDir["ABS_PATH"], $arDirs, $arFilter, $depth); } }
CFilemanSearch::DelFromSearchResult($searchSess, $pathEx); } if (strlen($strWarning_tmp) > 0) { $lAdmin->AddGroupError($strWarning_tmp, $ID); } break; } } } InitSorting(); if (!$bSearch) { $arDirs = array(); $arFiles = array(); $title = GetMessage("FILEMAN_TITLE"); if ($USER->CanDoFileOperation('fm_view_listing', $arPath)) { CFileMan::GetDirList(array($site, $path), $arDirs, $arFiles, $arFilter, array($by => $order), "DF", $logical == 'Y', true); if (strlen($path) > 0) { $dname = $path; if ($logical == "Y") { if ($io->FileExists($absPath . "/.section.php")) { @(include $io->GetPhysicalName($absPath . "/.section.php")); if (strlen($sSectionName) <= 0) { $sSectionName = GetMessage("FILEMAN_ADM_UNTITLED"); } $dname = $sSectionName; } } $lAdmin->onLoadScript = "BX.adminPanel.setTitle('" . CUtil::JSEscape($title . ": " . $dname) . "');"; $title = $title . ": " . $dname; } else { $lAdmin->onLoadScript = "BX.adminPanel.setTitle('" . CUtil::JSEscape($title) . "');";
$site = CFileMan::__CheckSite($site); $DOC_ROOT = CSite::GetSiteDocRoot($site); $strWarning = ""; $path = Rel2Abs("/", $path); $arParsedPath = CFileMan::ParsePath($path); $arPath = array($site, $path); if ($type == "flash") { $ext = "swf,fla"; } elseif ($type == "image") { $ext = "gif,jpg,jpeg,bmp,png"; } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_popup_admin.php"; if (!$USER->CanDoFileOperation('fm_download_file', $arPath) || HasScriptExtension($path)) { ShowError($arParsedPath["HTML"] . '<br><br><img src="/bitrix/images/fileman/deny.gif" width="28" height="28" border="0" align="left" alt="">' . GetMessage("ACCESS_DENIED")); } else { CFileMan::GetDirList(array($site, $path), $arDirs, $arFiles, array("EXTENSIONS" => $ext, "MIN_PERMISSION" => "R"), array("name" => "asc")); ?> <script> <!-- function DoEvent(str) { try { eval("parent."+this.name+"_"+str); } catch(e){} } DoEvent("OnLoad('<?php echo AddSlashes(htmlspecialcharsex($path)); ?>
} } else { if ($bSearch) { $searchRes = CFilemanSearch::GetSearchResult($searchSess); for($i = 0, $l = count($searchRes); $i < $l; $i++) $arFiles[] = $searchRes[$i]['path']; } else { $arD = array(); $arF = array(); CFileMan::GetDirList(Array($site, $path), $arD, $arF, array("MIN_PERMISSION" => "X"), array(), "DF"); foreach ($arD as $dir) if($USER->CanDoFileOperation('fm_edit_permission',Array($site, $dir['ABS_PATH']))) $arFiles[] = $dir["NAME"]; foreach ($arF as $file) if($USER->CanDoFileOperation('fm_edit_permission',Array($site, $file['ABS_PATH']))) $arFiles[] = $file["NAME"]; } } $filesCount = count($arFiles); $arFilesEx = array(); $bFolderInList = false; $currentValue = false; $bCurrentValueDiff = false;
$arPermTypes['NOT_REF'] = array('title' => GetMessage("FILEMAN_FOLDER_ACCESS_INHERIT"), 'letter' => 'N'); $strWarning = ""; $arFiles = array(); if (count($files) > 0) { CUtil::decodeURIComponent($files); for ($i = 0; $i < count($files); $i++) { if (!$USER->CanDoFileOperation('fm_edit_permission', array($site, $path . "/" . $files[$i]))) { $strWarning .= GetMessage("FILEMAN_ACCESS_TO_DENIED") . " \"" . $files[$i] . "\".\n"; } elseif ($files[$i] != '.') { $arFiles[] = $files[$i]; } } } else { $arPDirs = array(); $arPFiles = array(); CFileMan::GetDirList(array($site, $path), $arPDirs, $arPFiles, array("MIN_PERMISSION" => "X"), array(), "DF"); foreach ($arPDirs as $dir) { if ($USER->CanDoFileOperation('fm_edit_permission', array($site, $dir['ABS_PATH']))) { $arFiles[] = $dir["NAME"]; } } foreach ($arPFiles as $file) { if ($USER->CanDoFileOperation('fm_edit_permission', array($site, $file['ABS_PATH']))) { $arFiles[] = $file["NAME"]; } } } $filesCount = count($arFiles); function GetAccessArrTmp($path) { global $DOC_ROOT;