static protected 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(); foreach ( $results as $category ) { $instance = new KunenaForumCategory (false); $instance->setProperties ( $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; }