diff --git a/src/Controller/Api/Stations/Files/ListAction.php b/src/Controller/Api/Stations/Files/ListAction.php index 0c530733a..5c7ee95d4 100644 --- a/src/Controller/Api/Stations/Files/ListAction.php +++ b/src/Controller/Api/Stations/Files/ListAction.php @@ -205,7 +205,7 @@ final class ListAction implements SingleActionInterface $files = $fs->listContents($currentDir, false)->filter( fn(StorageAttributes $attributes) => !( $currentDir === '' - && StationFilesystems::isProtectedDir($attributes->path()) + && StationFilesystems::isDotFile($attributes->path()) ) ); } diff --git a/src/Controller/Api/Stations/Files/ListDirectoriesAction.php b/src/Controller/Api/Stations/Files/ListDirectoriesAction.php index fed9c812b..a84409912 100644 --- a/src/Controller/Api/Stations/Files/ListDirectoriesAction.php +++ b/src/Controller/Api/Stations/Files/ListDirectoriesAction.php @@ -31,7 +31,7 @@ final class ListDirectoriesAction implements SingleActionInterface $directoriesRaw = $fsMedia->listContents($currentDir, false)->filter( fn(StorageAttributes $attrs) => $attrs->isDir() - && !StationFilesystems::isProtectedDir($attrs->path()) + && !StationFilesystems::isDotFile($attrs->path()) )->sortByPath(); $directories = []; diff --git a/src/Controller/Api/Stations/Playlists/GetApplyToAction.php b/src/Controller/Api/Stations/Playlists/GetApplyToAction.php index 10cf6ba1b..c6202a929 100644 --- a/src/Controller/Api/Stations/Playlists/GetApplyToAction.php +++ b/src/Controller/Api/Stations/Playlists/GetApplyToAction.php @@ -35,7 +35,7 @@ final class GetApplyToAction implements SingleActionInterface // Iterate all directories to show them as selectable. $fsIterator = $fsMedia->listContents('/', true)->filter( - fn(StorageAttributes $attrs) => $attrs->isDir() && !StationFilesystems::isProtectedDir($attrs->path()) + fn(StorageAttributes $attrs) => $attrs->isDir() && !StationFilesystems::isDotFile($attrs->path()) )->sortByPath(); $directories = [ diff --git a/src/Flysystem/StationFilesystems.php b/src/Flysystem/StationFilesystems.php index 344bef4b4..26b013f7d 100644 --- a/src/Flysystem/StationFilesystems.php +++ b/src/Flysystem/StationFilesystems.php @@ -98,10 +98,11 @@ final class StationFilesystems return new LocalFilesystem(new LocalFilesystemAdapter($path)); } - public static function isProtectedDir(string $path): bool + public static function isDotFile(string $path): bool { - foreach (self::PROTECTED_DIRS as $protectedDir) { - if (str_starts_with($path, $protectedDir)) { + $pathParts = explode('/', $path); + foreach ($pathParts as $part) { + if (str_starts_with($part, '.')) { return true; } } diff --git a/src/Sync/Task/CheckMediaTask.php b/src/Sync/Task/CheckMediaTask.php index 03aa8058d..9d74b9ca8 100644 --- a/src/Sync/Task/CheckMediaTask.php +++ b/src/Sync/Task/CheckMediaTask.php @@ -92,7 +92,7 @@ final class CheckMediaTask extends AbstractTask try { $fsIterator = $fs->listContents('/', true)->filter( - fn(StorageAttributes $attrs) => $attrs->isFile() && !StationFilesystems::isProtectedDir($attrs->path()) + fn(StorageAttributes $attrs) => $attrs->isFile() && !StationFilesystems::isDotFile($attrs->path()) ); } catch (FilesystemException $e) { $this->logger->error(