Completed
Push — 4.0 ( ea1667...c6bc6b )
by Serhii
01:54
created

FileStorage::getConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
4
namespace EndorphinStudio\Detector\Storage;
5
6
use \Ds\Set;
7
8
class FileStorage extends AbstractStorage implements StorageInterface
9
{
10
    /**
11
     * Base method
12
     * @return array nothing
13
     */
14
    public function getConfig(): array
15
    {
16
        return $this->config;
17
    }
18
19
    protected function getFileNames(string $directory = 'default'): array
20
    {
21
        $directoryIterator = $this->getDirectoryIterator($directory);
22
        $files = new Set();
23
        foreach ($directoryIterator as $file) {
24
            $this->resolveFile($file, $files);
25
        }
26
        return $files->toArray();
27
    }
28
29
    private function resolveFile(\DirectoryIterator $file, Set &$files)
30
    {
31
        if ($file->isDir() && !$file->isDot()) {
32
            $files->add($this->getFileNames($file->getRealPath()));
33
        }
34
35
        if ($file->isFile() && !$file->isLink() && $file->isReadable()) {
36
            $files->add($file->getRealPath());
37
        }
38
    }
39
40
    private function getDirectoryIterator(string $directory): \DirectoryIterator
41
    {
42
        if ($directory === 'default') {
43
            return new \DirectoryIterator($this->dataDirectory);
44
        }
45
        return new \DirectoryIterator($directory);
46
    }
47
}