示例#1
0
 /**
  * @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);
 }