. Contact: Lyubomir Arsov, liubo (at) web-lobby.com */ include '../system.inc.php'; include 'functions.inc.php'; verifyAction('DIRLIST'); checkAccess('DIRLIST'); /** * @param string $path * @param string $type * @return int[] */ function getFilesNumber(string $path, string $type): array { $files = 0; $dirs = 0; $tmp = listDirectory($path); foreach ($tmp as $ff) { if ($ff == '.' || $ff == '..') { continue; } elseif ( is_file($path . '/' . $ff) && ($type == '' || ($type == 'image' && RoxyFile::IsImage($ff)) || ($type == 'flash' && RoxyFile::IsFlash($ff))) ) { $files++; } elseif (is_dir($path . '/' . $ff)) { $dirs++; } } return array('files' => $files, 'dirs' => $dirs); } function GetDirs(string $path, string $type): void { $ret = $sort = array(); $files = listDirectory(fixPath($path)); foreach ($files as $f) { $fullPath = $path . '/' . $f; if (!is_dir(fixPath($fullPath)) || $f == '.' || $f == '..') { continue; } $tmp = getFilesNumber(fixPath($fullPath), $type); $ret[$fullPath] = array('path' => $fullPath, 'files' => $tmp['files'], 'dirs' => $tmp['dirs']); $sort[$fullPath] = $f; } natcasesort($sort); foreach ($sort as $k => $v) { $tmp = $ret[$k]; echo ',{"p":"' . mb_ereg_replace('"', '\\"', $tmp['path']) . '","f":"' . $tmp['files'] . '","d":"' . $tmp['dirs'] . '"}'; GetDirs($tmp['path'], $type); } } $type = (empty($_GET['type']) ? '' : strtolower($_GET['type'])); if ($type != 'image' && $type != 'flash') { $type = ''; } echo "[\n"; $tmp = getFilesNumber(fixPath(getFilesPath()), $type); echo '{"p":"' . mb_ereg_replace('"', '\\"', getFilesPath()) . '","f":"' . $tmp['files'] . '","d":"' . $tmp['dirs'] . '"}'; GetDirs(getFilesPath(), $type); echo "\n]";