/** * @param array $instances */ protected static function buildTree(array &$instances) { KUNENA_PROFILER ? KunenaProfiler::instance()->start('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; self::$_tree = array(); foreach ($instances as $instance) { if (!isset(self::$_tree[(int) $instance->id])) { self::$_tree[$instance->id] = array(); } self::$_tree[$instance->parent_id][$instance->id] =& self::$_tree[(int) $instance->id]; } KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; }
protected static function loadCategories() { KUNENA_PROFILER ? KunenaProfiler::instance()->start('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; $db = JFactory::getDBO(); $query = "SELECT * FROM #__kunena_categories ORDER BY ordering, name"; $db->setQuery($query); $results = (array) $db->loadAssocList(); KunenaError::checkDatabaseError(); self::$_instances = array(); self::$_tree = array(); if (empty($results)) { KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; return; } foreach ($results as $category) { $instance = new KunenaForumCategory($category); $instance->exists(true); self::$_instances[$instance->id] = $instance; if (!isset(self::$_tree[(int) $instance->id])) { self::$_tree[$instance->id] = array(); } self::$_tree[$instance->parent_id][$instance->id] =& self::$_tree[(int) $instance->id]; } unset($results); // TODO: remove this by adding level into table $heap = array(0); while (($parent = array_shift($heap)) !== null) { foreach (self::$_tree[$parent] as $id => $children) { if (!empty($children)) { array_push($heap, $id); } self::$_instances[$id]->level = $parent ? self::$_instances[$parent]->level + 1 : 0; } } KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; }