function forums_sidebar_tree_hook($hook, $type, $returnvalue, $params) { $result = $returnvalue; if (!empty($params) && is_array($params)) { $container = elgg_extract("container", $params); if (!empty($container) && (elgg_instanceof($container, "group") || elgg_instanceof($container, "object", "hjforum") || elgg_instanceof($container, "object", "hjforumtopic"))) { $main_menu_item = ElggMenuItem::factory(array("name" => "root", "text" => elgg_echo("hj:forum:main"), "href" => "#", "id" => "0", "rel" => "root", "priority" => 0)); if ($sub_forums = hj_forums_get_forums($container->getGUID())) { $main_menu_item->setChildren(hj_forums_make_menu_items($sub_forums)); } $result[] = $main_menu_item; } } return $result; }
function hj_forums_make_menu_items($forums) { $result = false; if (!empty($forums) && is_array($forums)) { $result = array(); foreach ($forums as $index => $level) { if ($forum = elgg_extract("forum", $level)) { $options = array("name" => "forum_" . $forum->getGUID(), "text" => $forum->title, "href" => elgg_get_site_url() . "forum/view/" . $forum->getGUID(), "priority" => $forum->order); $forum_menu = ElggMenuItem::factory($options); if ($children = elgg_extract("children", $level)) { $forum_menu->setChildren(hj_forums_make_menu_items($children)); } $result[] = $forum_menu; } } } return $result; }