diff options
author | gvmura <gvmura@uniss.it> | 2017-04-21 09:53:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-21 09:53:52 +0200 |
commit | 888dfdffaf4f8829466e4c09ede356071cc17970 (patch) | |
tree | 172fd86c828832cbdcfb10b1bc1e489a446d383c | |
parent | c4bd01456b7fc8e531af1e8cc37dbff4f1ca8578 (diff) | |
download | nextcloud-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.php | 13 |
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); |