function newbb_createParentForumList() { $forum_handler =& xoops_getModuleHandler("forum", "newbb"); $criteria = new Criteria("1", 1); $criteria->setSort("parent_forum"); $criteria->setOrder("ASC"); $forums_obj = $forum_handler->getObjects($criteria); require_once XOOPS_ROOT_PATH . "/modules/newbb/class/tree.php"; $tree = new newbbObjectTree($forums_obj, "forum_id", "parent_forum"); $forum_array = array(); foreach (array_keys($forums_obj) as $key) { $parent_forum = $forums_obj[$key]->getVar("parent_forum"); if (!$parent_forum) { continue; } if (isset($forum_array[$parent_forum])) { $forum_array[$forums_obj[$key]->getVar("forum_id")] = $forum_array[$parent_forum]; $forum_array[$forums_obj[$key]->getVar("forum_id")][] = $parent_forum; } else { $forum_array[$forums_obj[$key]->getVar("forum_id")] = $tree->getParentForums($forums_obj[$key]->getVar("forum_id")); } } unset($forums_obj, $tree, $criteria); require_once XOOPS_ROOT_PATH . '/Frameworks/art/functions.cache.php'; mod_createCacheFile($forum_array, "forum_parent", "newbb"); return $forum_array; }
/** * get a hierarchical array tree of forums * * {@link newbbTree} * * @param int $cat_id category ID * @param int $pid Top forum ID * @param string $permission permission type * @param string $tags variables to fetch * @param integer $depth level of subcategories * @return array associative array of category IDs and sanitized titles */ function &getArrayTree($cat_id = 0, $pid = 0, $permission = "access", $tags = null, $depth = 0) { $pid = intval($pid); $perm_string = $permission; if (!is_array($tags) || count($tags) == 0) { $tags = array("forum_id", "parent_forum", "forum_name", "forum_order", "cat_id"); } $forums_obj =& $this->getByPermission($cat_id, $perm_string, $tags); require_once dirname(__FILE__) . "/tree.php"; $forums_structured = array(); foreach (array_keys($forums_obj) as $key) { $forum_obj =& $forums_obj[$key]; $forums_structured[$forum_obj->getVar("cat_id")][$key] =& $forums_obj[$key]; } foreach (array_keys($forums_structured) as $cid) { $tree = new newbbObjectTree($forums_structured[$cid]); $forum_array[$cid] = $tree->makeArrayTree($pid, $tags, $depth); unset($tree); } return $forum_array; }