diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_external/lib/google.php | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index c414e34fad4..bd9bdce2a67 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -370,10 +370,22 @@ class Google extends \OC\Files\Storage\Common { return false; } } + // We need to get the object for the existing file with the same + // name (if there is one) before we do the patch. If oldfile + // exists and is a directory we have to delete it before we + // do the rename too. + $oldfile = $this->getDriveFile($path2); + if ($oldfile && $this->is_dir($path2)) { + $this->rmdir($path2); + $oldfile = false; + } $result = $this->service->files->patch($file->getId(), $file); if ($result) { $this->setDriveFile($path1, false); $this->setDriveFile($path2, $result); + if ($oldfile) { + $this->service->files->delete($oldfile->getId()); + } } return (bool)$result; } else { |