*/ class SnapshotRepository { protected ParameterBagInterface $parameters; public function __construct(ParameterBagInterface $parameters) { $this->parameters = $parameters; } public function find(array $criteria = []): array { $objects = []; $criteria['order'] ??= 'ASC'; $directoriesFinder = new Finder(); $directories = $directoriesFinder ->directories() ->in($this->parameters->get('motion_snapshots_directory')) ->sortByName(); $directories->sortByName(); foreach ($directories as $directory) { $moviesFinder = new Finder(); $files = $moviesFinder ->files() ->in($directory->getPathName()) ->name('*.mp4') ->sortByName(); $date = $directory->getFilename(); foreach ($files as $file) { $time = str_replace(['.mp4', '-'], ['', ':'], $file->getBasename()); $thumbnail = str_replace('.mp4', '.jpg', $file->getPathName()); $snapshot = new Snapshot(); $snapshot ->setDate(new \DateTime($date.' '.$time)) ->setMovie($file->getPathName()) ->setThumbnail($thumbnail); $objects[] = $snapshot; } } if ($criteria['order'] === 'DESC') { $objects = array_reverse($objects); } return $objects; } }