Joywork/import/document/presentation/DocumentPrefetcher.php

48 lines
917 B
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?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();
}
}