private function getCategoryTree($category = null, $displayAs = null, $recent = false, $watching = false)
{
$categoryIdentifier = null;
if (is_string($category) || is_numeric($category)) {
$category = CategoryModel::categories($category);
}
if ($category) {
if ($displayAs === null) {
$displayAs = val('DisplayAs', $category, 'Discussions');
}
$categoryIdentifier = val('CategoryID', $category, null);
}
switch ($displayAs) {
case 'Flat':
$perPage = c('Vanilla.Categories.PerPage', 30);
$page = Gdn::request()->get('Page', Gdn::request()->get('page', null));
list($offset, $limit) = offsetLimit($page, $perPage);
$categoryTree = $this->CategoryModel->getTreeAsFlat($categoryIdentifier, $offset, $limit);
$this->setData('_Limit', $perPage);
$this->setData('_CurrentRecords', count($categoryTree));
break;
case 'Categories':
case 'Discussions':
case 'Default':
case 'Nested':
default:
$categoryTree = $this->CategoryModel->setJoinUserCategory(true)->getChildTree($categoryIdentifier ?: null, ['depth' => CategoryModel::instance()->getMaxDisplayDepth() ?: 10]);
}
if ($recent) {
$this->CategoryModel->joinRecent($categoryTree);
}
return $categoryTree;
}