Back to Folder class

Method listFolderTree

public static array
listFolderTree
(mixed $path, mixed $filter, mixed $maxLevel = 3, mixed $level = 0, mixed $parent = 0)
Lists folder in format suitable for tree display.
Parameters
  • string $path The path of the folder to read.
  • string $filter A filter for folder names.
  • int $maxLevel The maximum number of levels to recursively read, defaults to three.
  • int $level The current level, optional.
  • int $parent Unique identifier of the parent folder, if any.
Returns
  • array Folders in the given folder.
Since
  • 1.7.0
Class: Folder
Project: Joomla

Method listFolderTree - Source code

/**
 * Lists folder in format suitable for tree display.
 *
 * @param   string   $path      The path of the folder to read.
 * @param   string   $filter    A filter for folder names.
 * @param   integer  $maxLevel  The maximum number of levels to recursively read, defaults to three.
 * @param   integer  $level     The current level, optional.
 * @param   integer  $parent    Unique identifier of the parent folder, if any.
 *
 * @return  array  Folders in the given folder.
 *
 * @since   1.7.0
 */
public static function listFolderTree($path, $filter, $maxLevel = 3, $level = 0, $parent = 0)
{
    $dirs = array();
    if ($level == 0) {
        $GLOBALS['_JFolder_folder_tree_index'] = 0;
    }
    if ($level < $maxLevel) {
        $folders = self::folders($path, $filter);
        // First path, index foldernames
        foreach ($folders as $name) {
            $id = ++$GLOBALS['_JFolder_folder_tree_index'];
            $fullName = Path::clean($path . '/' . $name);
            $dirs[] = array('id' => $id, 'parent' => $parent, 'name' => $name, 'fullname' => $fullName, 'relname' => str_replace(JPATH_ROOT, '', $fullName));
            $dirs2 = self::listFolderTree($fullName, $filter, $maxLevel, $level + 1, $id);
            $dirs = array_merge($dirs, $dirs2);
        }
    }
    return $dirs;
}