summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files_external/lib/ftp.php16
-rw-r--r--apps/files_external/lib/smb.php12
-rw-r--r--apps/files_external/lib/streamwrapper.php12
3 files changed, 33 insertions, 7 deletions
diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php
index 1f3ebd14b39..00bf7a189ce 100644
--- a/apps/files_external/lib/ftp.php
+++ b/apps/files_external/lib/ftp.php
@@ -61,6 +61,22 @@ class FTP extends \OC\Files\Storage\StreamWrapper{
$url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path;
return $url;
}
+
+ /**
+ * Unlinks file or directory
+ * @param string @path
+ */
+ public function unlink($path) {
+ if ($this->is_dir($path)) {
+ return $this->rmdir($path);
+ }
+ else {
+ $url = $this->constructUrl($path);
+ $result = unlink($url);
+ clearstatcache(true, $url);
+ return $result;
+ }
+ }
public function fopen($path,$mode) {
switch($mode) {
case 'r':
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index 5bff597fdca..c5fba92ee68 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -82,12 +82,18 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
}
/**
- * Unlinks file
+ * Unlinks file or directory
* @param string @path
*/
public function unlink($path) {
- unlink($this->constructUrl($path));
- clearstatcache();
+ if ($this->is_dir($path)) {
+ $this->rmdir($path);
+ }
+ else {
+ $url = $this->constructUrl($path);
+ unlink($url);
+ clearstatcache(false, $url);
+ }
// smb4php still returns false even on success so
// check here whether file was really deleted
return !file_exists($path);
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;
}