I’d rather use /site.json once (to limit the API’s calls). We’ve added the following function to DiscourseApi.php :
function getSite()
{
return $this->_getRequest("/site.json");
}
and then use it to get wanted informations :
$categories = $discourseApi->getSite()->apiresult->categories;
foreach ($categories as $category) {
if (isset($category->parent_category_id)){
$categories_all[$category->parent_category_id]['subcategory'][$category->id]['id'] = $category->id;
$categories_all[$category->parent_category_id]['subcategory'][$category->id]['slug'] = $category->slug;
$categories_all[$category->parent_category_id]['subcategory'][$category->id]['name'] = $category->name;
} else {
$categories_all[$category->id]['id'] = $category->id;
$categories_all[$category->id]['slug'] = $category->slug;
$categories_all[$category->id]['name'] = $category->name;
}
}
(code from https://github.com/PartiPirate/congressus/blob/master/application/config/discourse.structure.php)
(We don’t use the getCategoryById() I’ve suggested before)