1]); $studyAreas = self::mapTree('root', $tree); list($offset, $limit) = $this->getOffsetAndLimit(); return $this->getPaginatedContentResponse( array_slice($studyAreas, $offset, $limit), count($studyAreas) ); } private function mapTree($parentId, &$tree) { $level = []; $kids = $tree->getKids($parentId); if (is_array($kids) && count($kids) > 0) { foreach ($kids as $kid) { $level[] = \StudipStudyArea::find($kid); $level = array_merge($level, self::mapTree($kid, $tree)); } } return $level; } }