summaryrefslogtreecommitdiffstats
path: root/apps/files_external/lib/streamwrapper.php
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2013-11-29 12:58:57 +0100
committerVincent Petry <pvince81@owncloud.com>2013-11-29 13:01:01 +0100
commitd69243ee5144afeed57f513b0b50f9f2dbcdd36a (patch)
treedd96718d8dae5b51423fdc05c8e59b09fdd5dde2 /apps/files_external/lib/streamwrapper.php
parent41a1a32e5ad19c041e22b20873e769ecfa6aa8c8 (diff)
downloadnextcloud-server-d69243ee5144afeed57f513b0b50f9f2dbcdd36a.tar.gz
nextcloud-server-d69243ee5144afeed57f513b0b50f9f2dbcdd36a.zip
Fixed FTP and SMB to use rmdir() when deleting folders
Some storages need to use different calls for deleting files or folders, usually unlink() and rmdir(). Fixes #4532 (SMB dir deletion) Fixes #5941 (FTP dir deletion) Note that the extra is_dir() should be fast because it's read from the stat cache.
Diffstat (limited to 'apps/files_external/lib/streamwrapper.php')
-rw-r--r--apps/files_external/lib/streamwrapper.php12
1 files changed, 8 insertions, 4 deletions
diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/streamwrapper.php
index 7a1991d4f04..e484325e2fb 100644
--- a/apps/files_external/lib/streamwrapper.php
+++ b/apps/files_external/lib/streamwrapper.php
@@ -25,8 +25,9 @@ abstract class StreamWrapper extends Common {
$this->unlink($path . '/' . $file);
}
}
- $success = rmdir($this->constructUrl($path));
- clearstatcache();
+ $url = $this->constructUrl($path);
+ $success = rmdir($url);
+ clearstatcache(false, $url);
return $success;
} else {
return false;
@@ -46,8 +47,11 @@ abstract class StreamWrapper extends Common {
}
public function unlink($path) {
- $success = unlink($this->constructUrl($path));
- clearstatcache();
+ $url = $this->constructUrl($path);
+ $success = unlink($url);
+ // normally unlink() is supposed to do this implicitly,
+ // but doing it anyway just to be sure
+ clearstatcache(false, $url);
return $success;
}