diff options
author | Robin Appelman <robin@icewind.nl> | 2018-10-12 17:42:08 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2018-11-01 00:21:48 +0100 |
commit | 4403d771ad72b3de62e6ba5ea8822110253c578e (patch) | |
tree | 169d10594adf85c5ca7881a983c8568d9bf53762 /apps/files_versions/lib/Sabre/VersionHome.php | |
parent | 4a642fc0048c03a24aa199ccc9df23d547f69aa2 (diff) | |
download | nextcloud-server-4403d771ad72b3de62e6ba5ea8822110253c578e.tar.gz nextcloud-server-4403d771ad72b3de62e6ba5ea8822110253c578e.zip |
modular versions api
Allows apps to register version backends for storage types
The existing versions backend is wrapped in a "legacy" backend.
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_versions/lib/Sabre/VersionHome.php')
-rw-r--r-- | apps/files_versions/lib/Sabre/VersionHome.php | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/apps/files_versions/lib/Sabre/VersionHome.php b/apps/files_versions/lib/Sabre/VersionHome.php index 7a99d2376d4..7be5974bbbe 100644 --- a/apps/files_versions/lib/Sabre/VersionHome.php +++ b/apps/files_versions/lib/Sabre/VersionHome.php @@ -20,9 +20,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ + namespace OCA\Files_Versions\Sabre; +use OC\User\NoUserException; +use OCA\Files_Versions\Versions\IVersionManager; use OCP\Files\IRootFolder; +use OCP\IUserManager; use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\ICollection; @@ -34,9 +38,25 @@ class VersionHome implements ICollection { /** @var IRootFolder */ private $rootFolder; - public function __construct(array $principalInfo, IRootFolder $rootFolder) { + /** @var IUserManager */ + private $userManager; + + /** @var IVersionManager */ + private $versionManager; + + public function __construct(array $principalInfo, IRootFolder $rootFolder, IUserManager $userManager, IVersionManager $versionManager) { $this->principalInfo = $principalInfo; $this->rootFolder = $rootFolder; + $this->userManager = $userManager; + $this->versionManager = $versionManager; + } + + private function getUser() { + list(, $name) = \Sabre\Uri\split($this->principalInfo['uri']); + $user = $this->userManager->get($name); + if (!$user) { + throw new NoUserException(); + } } public function delete() { @@ -44,8 +64,7 @@ class VersionHome implements ICollection { } public function getName(): string { - list(,$name) = \Sabre\Uri\split($this->principalInfo['uri']); - return $name; + return $this->getUser()->getUID(); } public function setName($name) { @@ -61,22 +80,22 @@ class VersionHome implements ICollection { } public function getChild($name) { - list(,$userId) = \Sabre\Uri\split($this->principalInfo['uri']); + $user = $this->getUser(); if ($name === 'versions') { - return new VersionRoot($userId, $this->rootFolder); + return new VersionRoot($user, $this->rootFolder, $this->versionManager); } if ($name === 'restore') { - return new RestoreFolder($userId); + return new RestoreFolder(); } } public function getChildren() { - list(,$userId) = \Sabre\Uri\split($this->principalInfo['uri']); + $user = $this->getUser(); return [ - new VersionRoot($userId, $this->rootFolder), - new RestoreFolder($userId), + new VersionRoot($user, $this->rootFolder, $this->versionManager), + new RestoreFolder(), ]; } |