summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgvmura <gvmura@uniss.it>2017-04-21 09:53:52 +0200
committerGitHub <noreply@github.com>2017-04-21 09:53:52 +0200
commit888dfdffaf4f8829466e4c09ede356071cc17970 (patch)
tree172fd86c828832cbdcfb10b1bc1e489a446d383c
parentc4bd01456b7fc8e531af1e8cc37dbff4f1ca8578 (diff)
downloadnextcloud-server-888dfdffaf4f8829466e4c09ede356071cc17970.tar.gz
nextcloud-server-888dfdffaf4f8829466e4c09ede356071cc17970.zip
avoid duplicate files in google with the same name
When it renames the temporary file, it tests if the file is already present. If so, it moves to trash the previous version to avoid duplicate files with the same name (message log: "Ignoring duplicate file name: ... on Google Drive for Google user: ..."). It doesn't handle duplicate files in Google Drive, it tries to avoid them. You'll watch #4279 issue.
-rw-r--r--apps/files_external/lib/Lib/Storage/Google.php13
1 files changed, 13 insertions, 0 deletions
diff --git a/apps/files_external/lib/Lib/Storage/Google.php b/apps/files_external/lib/Lib/Storage/Google.php
index 2211686055e..0a88ccc8d42 100644
--- a/apps/files_external/lib/Lib/Storage/Google.php
+++ b/apps/files_external/lib/Lib/Storage/Google.php
@@ -386,6 +386,19 @@ class Google extends \OC\Files\Storage\Common {
}
public function rename($path1, $path2) {
+ // Avoid duplicate files with the same name
+ $testRegex = '/^.+\.ocTransferId\d+\.part$/';
+ if (preg_match($testRegex, $path1)) {
+ if ($this->is_file($path2)) {
+ $testFile2 = $this->getDriveFile($path2);
+ if ($testFile2) {
+ $this->service->files->trash($testFile2->getId());
+ \OCP\Util::writeLog('files_external', 'trash file '.$path2.
+ ' for renaming '.$path1.' on Google Drive.', \OCP\Util::DEBUG);
+ }
+ }
+ }
+
$file = $this->getDriveFile($path1);
if ($file) {
$newFile = $this->getDriveFile($path2);