From e03115198ff53b87e0d1fec1eb635ae0e88f6020 Mon Sep 17 00:00:00 2001 From: Mike Cochrane Date: Tue, 8 Mar 2016 13:12:07 +1300 Subject: [PATCH] Don't delete all assets when uploading a file in the root Catch "." dirnames in more places. truncateDirectory('.') will delete every asset. That's an undesirable thing. findVariants() wouldn't return any variants if the dirname in "." --- filesystem/flysystem/FlysystemAssetStore.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/filesystem/flysystem/FlysystemAssetStore.php b/filesystem/flysystem/FlysystemAssetStore.php index a5989ea0e..1676dbd02 100644 --- a/filesystem/flysystem/FlysystemAssetStore.php +++ b/filesystem/flysystem/FlysystemAssetStore.php @@ -330,6 +330,7 @@ class FlysystemAssetStore implements AssetStore, AssetStoreRouter, Flushable { */ protected function truncateDirectory($dirname, Filesystem $filesystem) { if ($dirname + && ltrim(dirname($dirname), '.') && ! Config::inst()->get(get_class($this), 'keep_empty_dirs') && ! $filesystem->listContents($dirname) ) { @@ -346,7 +347,8 @@ class FlysystemAssetStore implements AssetStore, AssetStoreRouter, Flushable { * @return Generator */ protected function findVariants($fileID, Filesystem $filesystem) { - foreach($filesystem->listContents(dirname($fileID)) as $next) { + $dirname = ltrim(dirname($fileID), '.'); + foreach($filesystem->listContents($dirname) as $next) { if($next['type'] !== 'file') { continue; }