$curr_dir = $dirs[$curr_dir_pos]['dir']; $spawfm->setCurrentDirData($dirs[$curr_dir_pos]); } // process subdirectories if selected and allowed if ($spawfm->getCurrentDirSetting('recursive') and !empty($curr_dir_subdir)) { // filter subdir variable for validity $arr = explode('/', $curr_dir_subdir); $str = ''; foreach ($arr as $val) { if (!empty($val) and $val != '..') { $str .= $val . '/'; } } $curr_dir_subdir = $str; // add subdirectories to list if exist and parent dir matched if ($spawfm->getCurrentFsDir() and file_exists($spawfm->getCurrentFsDir() . $curr_dir_subdir)) { $dirs_new = array(); foreach ($dirs as $pos => $dir) { $dirs_new[] = $dir; if ($pos == $curr_dir_pos and preg_match_all('|([^/]*)/|', $curr_dir_subdir, $subdirs)) { // insert all subdirectories $subdir_path = ''; foreach ($subdirs[1] as $cnt => $subdir) { $subdir_path .= $subdir . '/'; $subdir_data = $dir; $subdir_data['dir'] = $subdir_data['dir'] . $subdir_path; $subdir_data['caption'] = str_repeat(' ', ($cnt + 1) * 2) . $subdir; $subdir_data['value'] = $spawfm->getCurrentDir() . $config->getConfigValue('spawfm_path_separator') . $subdir_path; $dirs_new[] = $subdir_data; } }