From f1e6e80eb1be9a6ef4e96e1e6c4a3e838bbd69db Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 29 Oct 2013 00:14:23 +0100 Subject: [PATCH] add specialized storage backend for home folders --- lib/private/files/storage/home.php | 31 +++++++++++++ tests/lib/files/storage/home.php | 71 ++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 lib/private/files/storage/home.php create mode 100644 tests/lib/files/storage/home.php diff --git a/lib/private/files/storage/home.php b/lib/private/files/storage/home.php new file mode 100644 index 0000000000..47a76c1b84 --- /dev/null +++ b/lib/private/files/storage/home.php @@ -0,0 +1,31 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Storage; + +/** + * Specialized version of Local storage for home directory usage + */ +class Home extends Local { + /** + * @var \OC\User\User $user + */ + protected $user; + + public function __construct($arguments) { + $this->user = $arguments['user']; + $this->datadir = $this->user->getHome(); + if (substr($this->datadir, -1) !== '/') { + $this->datadir .= '/'; + } + } + + public function getId() { + return 'home::' . $this->user->getUID(); + } +} diff --git a/tests/lib/files/storage/home.php b/tests/lib/files/storage/home.php new file mode 100644 index 0000000000..b01e07f745 --- /dev/null +++ b/tests/lib/files/storage/home.php @@ -0,0 +1,71 @@ +. + * + */ + +namespace Test\Files\Storage; + +use OC\User\User; + +class DummyUser extends User { + private $home; + + private $uid; + + public function __construct($uid, $home) { + $this->uid = $uid; + $this->home = $home; + } + + public function getHome() { + return $this->home; + } + + public function getUID() { + return $this->uid; + } +} + +class Home extends Storage { + /** + * @var string tmpDir + */ + private $tmpDir; + + /** + * @var \OC\User\User $user + */ + private $user; + + public function setUp() { + $this->tmpDir = \OC_Helper::tmpFolder(); + $userId = uniqid('user_'); + $this->user = new DummyUser($userId, $this->tmpDir); + $this->instance = new \OC\Files\Storage\Home(array('user' => $this->user)); + } + + public function tearDown() { + \OC_Helper::rmdirr($this->tmpDir); + } + + public function testRoot() { + $this->assertEquals($this->tmpDir, $this->instance->getLocalFolder('')); + } +}