function __struct_get_files($doc_root, $path="", $open_path="", $dirsonly=false) { global $USER; if(!$USER->CanDoFileOperation('fm_view_listing', array($_GET['site'], $path))) return ''; $arFiles = array(); $abs_path = $doc_root."/".$path; $io = CBXVirtualIo::GetInstance(); $directory = $io->GetDirectory($abs_path); $arChildren = $directory->GetChildren(); foreach ($arChildren as $child) { $n = $child->GetName(); if (!$child->IsDirectory()) { if($n == '.section.php' || $n == '.access.php') continue; if(preg_match('/^\.(.*)?\.menu\.(php|html|php3|php4|php5|php6|phtml)$/', $n)) continue; } $arFile = __struct_get_file_info($abs_path, $n); $arFiles[] = $arFile; } usort($arFiles, "__struct_file_sort"); return __struct_show_files($arFiles, $doc_root, $path, $open_path, $dirsonly); }
function __struct_get_files($ob, $doc_root, $path = "", $open_path = "", $dirsonly = false) { /** @var CWebDavIblock $ob */ $arFiles = $files = array(); $abs_path = str_replace(array("///", "//"), "/", $doc_root . "/" . $path); $options = array('path' => $abs_path, 'depth' => '10000'); $res = $ob->PROPFIND($options, $files, array('return' => 'array')); foreach ($res['RESULT'] as $item) { $arFiles[] = array('type' => $item['TYPE'] == 'S' ? 'D' : 'F', "file" => $item['NAME'], "id" => $item['ID'], "name" => $item['NAME']); } unset($item); return __struct_show_files($ob, $arFiles, $doc_root, $path, $open_path, $dirsonly); }