manager = $manager; } private function recursivePrefetch(Dir $dir=null) { $response = [ 'name' => '', 'id' => 0, 'files' => [], 'dirs' => [], ]; if ($dir) { $response['name'] = $dir->getName(); $response['id'] = $dir->getId(); } $collection = $this->manager->getChildren($response['id']); foreach ($collection->getFiles() as $file) { $response['files'][] = [ 'id' => $file->getId(), 'name' => $file->getName(), 'url' => $file->getUrl(), ]; } foreach ($collection->getDirs() as $_dir) { $response['dirs'][] = $this->recursivePrefetch($_dir); } return $response; } public function prefetch() { return $this->recursivePrefetch(); } }