getTreeAsFlat() public method

public getTreeAsFlat ( integer | string $id, integer | null $offset = null, integer | null $limit = null, string | null $filter = null, string $orderFields = 'Name', string $orderDirection = 'asc' ) : array
$id integer | string The parent category ID or slug.
$offset integer | null Offset results by given value.
$limit integer | null Total number of results should not exceed this value.
$filter string | null Restrict results to only those with names matching this value, if provided.
$orderFields string
$orderDirection string
return array
 /**
  * Get a list of immediate children for the configured category.
  *
  * @return array|null
  */
 public function getChildren()
 {
     $category = $this->getCategory();
     if ($category && !$this->children) {
         $this->children = $this->categoryModel->getTreeAsFlat(val('CategoryID', $category), 0, $this->getLimit(), $this->getFilter());
         $this->categoryModel->joinRecent($this->children);
     }
     return $this->children;
 }
 /**
  * Build a structured tree of children for the specified category.
  *
  * @param int|string|object|array|null $category Category or code/ID to build the tree for. Null for all.
  * @param string|null $displayAs What display should the tree be configured for?
  * @param bool $recent Join in recent record info?
  * @param bool $watching Filter categories by "watching" status?
  * @return array
  */
 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;
 }
 /**
  * Manage the category hierarchy.
  *
  * @param string $parent The URL slug of a parent category if looking at a sub tree.
  */
 public function categories($parent = '')
 {
     $this->permission(['Garden.Community.Manage', 'Garden.Settings.Manage'], false);
     $this->setHighlightRoute('vanilla/settings/categories');
     // Make sure we are reading the categories from the database only.
     $collection = $this->CategoryModel->createCollection(Gdn::sql(), new Gdn_Dirtycache());
     $allowSorting = true;
     $usePagination = false;
     $perPage = 30;
     $page = Gdn::request()->get('Page', Gdn::request()->get('page', null));
     list($offset, $limit) = offsetLimit($page, $perPage);
     if (!empty($parent)) {
         $categoryRow = $collection->get((string) $parent);
         if (empty($categoryRow)) {
             throw notFoundException('Category');
         }
         $this->setData('Category', $categoryRow);
         $parentID = $categoryRow['CategoryID'];
         $parentDisplayAs = val('DisplayAs', $categoryRow);
     } else {
         $parentID = -1;
         $parentDisplayAs = CategoryModel::getRootDisplayAs();
     }
     if (in_array($parentDisplayAs, ['Flat'])) {
         $allowSorting = false;
         $usePagination = true;
     }
     if ($parentDisplayAs === 'Flat') {
         $categories = $this->CategoryModel->getTreeAsFlat($parentID, $offset, $limit);
     } else {
         $categories = $collection->getTree($parentID, ['maxdepth' => 10, 'collapsecategories' => true]);
     }
     $this->setData('ParentID', $parentID);
     $this->setData('Categories', $categories);
     $this->setData('_Limit', $perPage);
     $this->setData('_CurrentRecords', count($categories));
     if ($parentID > 0) {
         $ancestors = $collection->getAncestors($parentID, true);
         $this->setData('Ancestors', $ancestors);
     }
     $this->setData('AllowSorting', $allowSorting);
     $this->setData('UsePagination', $usePagination);
     $this->addDefinition('AllowSorting', $allowSorting);
     $this->addJsFile('category-settings.js');
     $this->addJsFile('manage-categories.js');
     $this->addJsFile('jquery.nestable.js');
     require_once $this->fetchViewLocation('category-settings-functions');
     $this->addAsset('Content', $this->fetchView('symbols'));
     $this->render();
 }