From 14be3b3dbb37d6bbd95c6086af79c7c65a8d39dd Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 30 Jun 2013 17:44:49 +0200 Subject: [PATCH] make rmdir recursive for mappellocal storage backend Backported from d051d6f9252de915a13e1b053c54f69bcd83f5ee --- lib/files/storage/mappedlocal.php | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/files/storage/mappedlocal.php b/lib/files/storage/mappedlocal.php index 0cdba326642..ba5ac4191c5 100644 --- a/lib/files/storage/mappedlocal.php +++ b/lib/files/storage/mappedlocal.php @@ -34,10 +34,30 @@ class MappedLocal extends \OC\Files\Storage\Common{ return @mkdir($this->buildPath($path)); } public function rmdir($path) { - if ($result = @rmdir($this->buildPath($path))) { - $this->cleanMapper($path); + try { + $it = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($this->buildPath($path)), + \RecursiveIteratorIterator::CHILD_FIRST + ); + foreach ($it as $file) { + /** + * @var \SplFileInfo $file + */ + if (in_array($file->getBasename(), array('.', '..'))) { + continue; + } elseif ($file->isDir()) { + rmdir($file->getPathname()); + } elseif ($file->isFile() || $file->isLink()) { + unlink($file->getPathname()); + } + } + if ($result = @rmdir($this->buildPath($path))) { + $this->cleanMapper($path); + } + return $result; + } catch (\UnexpectedValueException $e) { + return false; } - return $result; } public function opendir($path) { $files = array('.', '..'); -- 2.39.5