public function dir_tree_build($dir, $params = false)
{
$params = parse_params($params);
$class = 'directory_tree';
if (isset($params['class'])) {
$class = $params['class'];
}
$title_class = 'is_folder';
if (isset($params['title_class'])) {
$title_class = $params['title_class'];
}
$basedir = '';
if (isset($params['dir_name'])) {
$basedir = $params['dir_name'];
}
$max_depth = 100;
if (isset($params['max_depth'])) {
$max_depth = $params['max_depth'];
}
$url_param = 'file';
if (isset($params['url_param'])) {
$url_param = $params['url_param'];
}
if (isset($params['url'])) {
$url = $params['url'];
} else {
$url = mw()->url->current(true, true);
}
static $level = 0;
if ($max_depth > $level) {
++$level;
$ffs = scandir($dir);
echo '<ul class="' . $class . ' depth_' . $level . '">';
foreach ($ffs as $ff) {
$is_hidden = substr($ff, 0, 1);
if ($is_hidden == '_') {
} else {
$file1 = $ff;
if (strlen($file1) > 3) {
$pos = strpos($file1, '_', 1);
if ($pos != false) {
$substr = substr($file1, 0, $pos);
if (intval($substr) > 0) {
$file1 = substr($file1, $pos, strlen($file1));
$file1 = ltrim($file1, '_');
}
}
}
$file1 = str_replace('_', ' ', $file1);
if ($ff != '.' && $ff != '..') {
echo '<li class="' . $class . ' depth_' . $level . '">';
if (is_dir($dir . '/' . $ff)) {
$is_index = $dir . DS . $ff . DS . 'index.php';
$link_href = '';
if (is_file($is_index)) {
$link = $dir . '/' . $ff . '/index.php';
if (trim($basedir) != '') {
$link = normalize_path($link, false);
$basedir = normalize_path($basedir, false);
$link = str_replace($basedir . DS, '', $link);
$link = str_replace('\\', '/', $link);
$link = urlencode($link);
}
$active_class = '';
if (isset($_REQUEST[$url_param]) and urldecode($_REQUEST[$url_param]) == $link) {
$active_class = ' active ';
}
$file1 = "<a class='{$active_class}' href='{$url}?{$url_param}={$link}'>{$file1}</a>";
}
$h_start = $level == 1 ? '<h2 class="' . $title_class . '">' : '<h3 class="' . $title_class . '">';
$h_close = $level == 1 ? '</h2>' : '</h3>';
echo $h_start . $file1 . $h_close;
$this->dir_tree_build($dir . '/' . $ff, $params);
} else {
$file1 = no_ext($file1);
$link = $dir . '/' . $ff;
if (trim($basedir) != '') {
$link = normalize_path($link, false);
$basedir = normalize_path($basedir, false);
$link = str_replace($basedir . DS, '', $link);
}
$link = str_replace('\\', '/', $link);
$class_path = str_replace('/', '--', $link);
$class_path = str_replace(' ', '_', $class_path);
$class_path = str_replace('.', '_', $class_path);
$active_class = '';
if (isset($_REQUEST[$url_param]) and urldecode($_REQUEST[$url_param]) == $link) {
$active_class = ' active ';
}
$link_href = $file1;
if ($link != false) {
$link = urlencode($link);
$link_href = "<a class='{$active_class} page_{$class_path} ' href='{$url}?{$url_param}={$link}'>{$file1}</a>";
}
echo $link_href;
}
echo '</li>';
}
}
}
echo '</ul>';
}
--$level;
}