public static function allForGroup($group_id) { $categories = static::all(); $forums = Forum::allForGroup($group_id); /*usort($forums, function($forum1, $forum2) { if ($forum1->cat_id == $forum2->cat_id) { // Same category: forum's disp_position value decides return $forum1->disp_position - $forum2->disp_position; } else { // ...else the categories' disp_position values are compared return $categories[$forum1->cat_id]->disp_position - $categories[$forum2->cat_id]->disp_position; } });*/ // TODO: Handle sorting! // FIXME: Yuck!!! $forums_by_cat = array(); foreach ($forums as $forum) { if (!isset($forums_by_cat[$forum->cat_id])) { $forums_by_cat[$forum->cat_id] = array('category' => $categories[$forum->cat_id], 'forums' => array()); } $forums_by_cat[$forum->cat_id]['forums'][] = $forum; } return $forums_by_cat; }