86 lines
2.7 KiB
PHP
Executable File
86 lines
2.7 KiB
PHP
Executable File
<?php
|
|
/*
|
|
RoxyFileman - web based file manager. Ready to use with CKEditor, TinyMCE.
|
|
Can be easily integrated with any other WYSIWYG editor or CMS.
|
|
|
|
Copyright (C) 2013, RoxyFileman.com - Lyubomir Arsov. All rights reserved.
|
|
For licensing, see LICENSE.txt or http://RoxyFileman.com/license
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
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 ['files' => $files, 'dirs' => $dirs];
|
|
}
|
|
|
|
function GetDirs(string $path, string $type): void
|
|
{
|
|
$ret = $sort = [];
|
|
$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] = ['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]";
|