48 lines
917 B
PHP
48 lines
917 B
PHP
<?php
|
|
|
|
class DocumentPrefetcher implements Prefetcher
|
|
{
|
|
/**
|
|
* @var DocumentManager
|
|
*/
|
|
private $manager;
|
|
|
|
public function __construct(DocumentManager $manager)
|
|
{
|
|
$this->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();
|
|
}
|
|
|
|
} |