diff --git a/lib/Tools/File.php b/lib/Tools/File.php index a763243..f0432a8 100644 --- a/lib/Tools/File.php +++ b/lib/Tools/File.php @@ -6,6 +6,8 @@ class File { private $dirName; + private $suffix; + private $files; //$dir_name = iconv("utf-8", "gb2312", $dir_name); @@ -14,11 +16,6 @@ class File $this->dirName = $dirname; $this->suffix = $suffix; - - if (!is_dir($dirname)) { - throw new \Exception("directory ${dirname} doesn't exit"); - } - } public static function create($dir, $suffix) @@ -26,34 +23,42 @@ class File return new static($dir, $suffix); } + public function getFiles() + { + return $this->files; + } + public function scandir($recursive = false) { + if (!is_dir($this->dirName)) { + throw new \Exception("directory {$this->dirName} doesn't exist"); + } + if ($recursive) { - return $this->scandirRecursive(); + $this->files = $this->scandirRecursive(); + return $this->files; } $files = \glob($this->dirName . DIRECTORY_SEPARATOR . "*.{$this->suffix}"); - $this->Files = $files; + $this->files = $files; return $files; } protected function scandirRecursive() { - $directory = new \RecursiveDirectoryIterator($this->dirName); $iterator = new \RecursiveIteratorIterator($directory); $iterators = new \RegexIterator($iterator, '/.*\.' . $this->suffix . '$/', \RegexIterator::GET_MATCH); - $files = array(); foreach ($iterators as $info) { if ($info) { - $files[] = reset($info); + yield reset($info); } } - $this->Files = $files; - return $files; } - public function getBasename($file){ - return basename($file,".".$this->suffix); + + static public function getBasename($file) + { + return pathinfo($file, PATHINFO_FILENAME); } } diff --git a/lib/Tools/Helper.php b/lib/Tools/Helper.php index 1e4ebdd..907ec53 100644 --- a/lib/Tools/Helper.php +++ b/lib/Tools/Helper.php @@ -354,7 +354,7 @@ class Helper $files = $filetool->scandir(); $sites = []; foreach ($files as $file) { - $basename = $filetool->getBasename($file); + $basename = File::getBasename($file); $namespace = 'OCA\\NCDownloader\\Search\\Sites\\'; $className = $namespace . $basename; if (in_array(searchInterface::class, class_implements($className))) {