diff options
author | Robin Appelman <icewind@owncloud.com> | 2013-10-29 00:26:35 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2013-10-29 00:26:35 +0100 |
commit | e273c14540ed9bbf65d68e0847447466315268f8 (patch) | |
tree | 97b32780a84b820604314b3fc3cc283f1b9118a2 | |
parent | f1e6e80eb1be9a6ef4e96e1e6c4a3e838bbd69db (diff) | |
download | nextcloud-server-e273c14540ed9bbf65d68e0847447466315268f8.tar.gz nextcloud-server-e273c14540ed9bbf65d68e0847447466315268f8.zip |
use the new home storage backend when no existing local storage backend exists for the user's home
-rw-r--r-- | lib/private/files/cache/storage.php | 15 | ||||
-rw-r--r-- | lib/private/files/filesystem.php | 8 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/private/files/cache/storage.php b/lib/private/files/cache/storage.php index 8a9e47ca36d..5657cf06e12 100644 --- a/lib/private/files/cache/storage.php +++ b/lib/private/files/cache/storage.php @@ -48,7 +48,7 @@ class Storage { } public static function getStorageId($numericId) { - + $sql = 'SELECT `id` FROM `*PREFIX*storages` WHERE `numeric_id` = ?'; $result = \OC_DB::executeAudited($sql, array($numericId)); if ($row = $result->fetchRow()) { @@ -57,4 +57,17 @@ class Storage { return null; } } + + public static function exists($storageId) { + if (strlen($storageId) > 64) { + $storageId = md5($storageId); + } + $sql = 'SELECT `numeric_id` FROM `*PREFIX*storages` WHERE `id` = ?'; + $result = \OC_DB::executeAudited($sql, array($storageId)); + if ($row = $result->fetchRow()) { + return true; + } else { + return false; + } + } } diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php index 10ec5c41d11..beed3831081 100644 --- a/lib/private/files/filesystem.php +++ b/lib/private/files/filesystem.php @@ -305,7 +305,13 @@ class Filesystem { $parser = new \OC\ArrayParser(); $root = \OC_User::getHome($user); - self::mount('\OC\Files\Storage\Local', array('datadir' => $root), $user); + + if (\OC\Files\Cache\Storage::exists('local::' . $root . '/')) { + self::mount('\OC\Files\Storage\Local', array('datadir' => $root), $user); + } else { + $userObject = \OC_User::getManager()->get($user); + self::mount('\OC\Files\Storage\Home', array('user' => $userObject), $user); + } $datadir = \OC_Config::getValue("datadirectory", \OC::$SERVERROOT . "/data"); //move config file to it's new position |