/** * build the folder tree * * @param string $hook the name of the hook * @param string $type the type of the hook * @param ElggMenuItem[] $returnvalue current return value * @param array $params supplied params * * @return ElggMenuItem[] */ function file_tools_folder_sidebar_tree_hook($hook, $type, $returnvalue, $params) { if (empty($params) || !is_array($params)) { return $returnvalue; } $container = elgg_extract("container", $params); if (empty($container) || !elgg_instanceof($container, "user") && !elgg_instanceof($container, "group")) { return $returnvalue; } $main_menu_item = ElggMenuItem::factory(array("name" => "root", "text" => elgg_echo("file_tools:list:folder:main"), "href" => "#", "id" => "0", "rel" => "root", "priority" => 0)); if ($folders = file_tools_get_folders($container->getGUID())) { $main_menu_item->setChildren(file_tools_make_menu_items($folders)); } $returnvalue[] = $main_menu_item; return $returnvalue; }
/** * Create a folder menu * * @param array $folders the folders to create the menu for * * @return bool|ElggMenuItem[] */ function file_tools_make_menu_items($folders) { $result = false; if (!empty($folders) && is_array($folders)) { $result = array(); foreach ($folders as $index => $level) { if ($folder = elgg_extract("folder", $level)) { $folder_title = $folder->title; if (empty($folder_title)) { $folder_title = elgg_echo("untitled"); } $folder_menu = ElggMenuItem::factory(array("name" => "folder_" . $folder->getGUID(), "text" => $folder_title, "href" => "#" . $folder->getGUID(), "priority" => $folder->order)); if ($children = elgg_extract("children", $level)) { $folder_menu->setChildren(file_tools_make_menu_items($children)); } $result[] = $folder_menu; } } } return $result; }