private static function HandleForumCategories() { if (!is_array(self::$forum_categories)) { return false; } // First of all, create category header $forum_categories = array(); foreach (self::$forum_categories as $category) { if ($category['header'] == 1) { $forum_categories[$category['cat_id']] = array(); $forum_categories[$category['cat_id']]['category_info'] = $category; $forum_categories[$category['cat_id']]['subcategories'] = array(); } } // Load subcategories into parent categories. Each category can have only level 1 subcategories. foreach (self::$forum_categories as $category) { if ($category['header'] == 0 && $category['parent_cat'] > 0) { if (!isset($forum_categories[$category['parent_cat']])) { // Unknown category, continue. WoW_Log::WriteError('%s : forum category %d ("%s") has parent_cat %d, but this category was not found.', __METHOD__, $category['cat_id'], $category['title'], $category['parent_cat']); continue; } $forum_categories[$category['parent_cat']]['subcategories'][] = $category; } } // Save handled categories self::$forum_categories = $forum_categories; unset($forum_categories, $category); return true; }