diff --git a/README.md b/README.md index 31bff03..c6bac45 100644 --- a/README.md +++ b/README.md @@ -210,6 +210,18 @@ var_dump ( ); ``` +#### Filesystem::isPath + +Check path exist and match storage item + +``` +var_dump ( + $filesystem->isPath( + '/full/path/to/page.txt' + ) +); +``` + ### Helper Useful methods to minify controller codebase diff --git a/src/Dokuwiki/Filesystem.php b/src/Dokuwiki/Filesystem.php index 77fdc21..e9c5aaa 100644 --- a/src/Dokuwiki/Filesystem.php +++ b/src/Dokuwiki/Filesystem.php @@ -58,7 +58,7 @@ class Filesystem ) ); - if (!in_array($path, $this->_list) || !is_file($path) || !is_readable($path)) + if (!$this->isPath($path)) { return null; } @@ -68,7 +68,7 @@ class Filesystem public function getPageUriByPath(string $path): ?string { - if (!in_array($path, $this->_list) || !is_file($path) || !is_readable($path)) + if (!$this->isPath($path)) { return null; } @@ -179,7 +179,7 @@ class Filesystem ) ); - if (!in_array($path, $this->_list) || !is_file($path) || !is_readable($path)) + if (!$this->isPath($path)) { return null; } @@ -189,11 +189,12 @@ class Filesystem public function getMimeByPath(?string $path): ?string { - if (in_array($path, $this->_list) && is_file($path) || is_readable($path)) + if ($this->isPath($path)) { - return mime_content_type( - $path - ); + if ($mime = mime_content_type($path)) + { + return $mime; + } } return null; @@ -201,16 +202,27 @@ class Filesystem public function getDataByPath(?string $path): ?string { - if (in_array($path, $this->_list) && is_file($path) || is_readable($path)) + if ($this->isPath($path)) { - return file_get_contents( - $path - ); + if ($data = file_get_contents($path)) + { + return $data; + } } return null; } + public function isPath(?string $path): bool + { + if (in_array($path, $this->_list) && is_file($path) && is_readable($path)) + { + return true; + } + + return false; + } + private function _index(string $path, ?array $blacklist = ['.', '..', 'sidebar.txt', '__template.txt']): void { foreach ((array) scandir($path) as $file)