/** * @param boolean|null $noRecursion * @return CM_File[] */ public function listFiles($noRecursion = null) { $result = $this->_filesystem->listByPrefix($this->getPath(), $noRecursion); return \Functional\map(array_merge($result['dirs'], $result['files']), function ($path) { return new CM_File($path, $this->_filesystem); }); }
/** * @param CM_File_Filesystem $filesystem * @param int $limit * @param int $poolLimit * @return string[] */ protected function _getRandomFiles(CM_File_Filesystem $filesystem, $limit, $poolLimit) { $files = []; $directories = ['/']; do { $path = array_shift($directories); $entries = $filesystem->listByPrefix($path, true); $files = array_merge($files, $entries['files']); $directories = array_merge($directories, $entries['dirs']); shuffle($directories); } while (count($files) < $poolLimit && count($directories) > 0); shuffle($files); return array_slice($files, 0, $limit); }