[Pkg-owncloud-commits] [owncloud] 01/34: fix files_external storage id migration
David Prévot
taffit at moszumanska.debian.org
Fri Nov 7 11:44:09 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository owncloud.
commit b5ab3d7fc0253446ec26551e9dda6816dbce2bc2
Author: Jörn Friedrich Dreyer <jfd at butonic.de>
Date: Thu Oct 16 14:50:39 2014 +0200
fix files_external storage id migration
---
apps/files_external/lib/amazons3.php | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php
index bbb1b14..d3a37a7 100644
--- a/apps/files_external/lib/amazons3.php
+++ b/apps/files_external/lib/amazons3.php
@@ -148,11 +148,28 @@ class AmazonS3 extends \OC\Files\Storage\Common {
* @param array $params
*/
public function updateLegacyId (array $params) {
+ $oldId = 'amazon::' . $params['key'] . md5($params['secret']);
+
+ // find by old id or bucket
$stmt = \OC::$server->getDatabaseConnection()->prepare(
- 'UPDATE `*PREFIX*storages` SET `id` = ? WHERE `id` = ?'
+ 'SELECT `numeric_id`, `id` FROM `*PREFIX*storages` WHERE `id` IN (?, ?)'
);
- $oldId = 'amazon::' . $params['key'] . md5($params['secret']);
- $stmt->execute(array($this->id, $oldId));
+ $stmt->execute(array($oldId, $this->id));
+ while ($row = $stmt->fetch()) {
+ $storages[$row['id']] = $row['numeric_id'];
+ }
+
+ if (isset($storages[$this->id]) && isset($storages[$oldId])) {
+ // if both ids exist, delete the old storage and corresponding filecache entries
+ \OC\Files\Cache\Storage::remove($oldId);
+ } else if (isset($storages[$oldId])) {
+ // if only the old id exists do an update
+ $stmt = \OC::$server->getDatabaseConnection()->prepare(
+ 'UPDATE `*PREFIX*storages` SET `id` = ? WHERE `id` = ?'
+ );
+ $stmt->execute(array($this->id, $oldId));
+ }
+ // only the bucket based id may exist, do nothing
}
/**
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git
More information about the Pkg-owncloud-commits
mailing list