diff options
author | Roeland Jago Douma <rullzer@owncloud.com> | 2016-03-20 14:12:36 +0100 |
---|---|---|
committer | Roeland Jago Douma <rullzer@owncloud.com> | 2016-03-20 14:12:36 +0100 |
commit | c6edbfecbee709e752400e0b085e930c51223dcc (patch) | |
tree | 7c9019bf0f80ef0ac191a308301cd8e068f95c9d /lib/private/Share20/Share.php | |
parent | a6c921267e00d0fb5021e8bdbd4d202931d7a58a (diff) | |
download | nextcloud-server-c6edbfecbee709e752400e0b085e930c51223dcc.tar.gz nextcloud-server-c6edbfecbee709e752400e0b085e930c51223dcc.zip |
Move (new) sharing over to composer autoloader
Diffstat (limited to 'lib/private/Share20/Share.php')
-rw-r--r-- | lib/private/Share20/Share.php | 389 |
1 files changed, 389 insertions, 0 deletions
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php new file mode 100644 index 00000000000..6edd0e6886a --- /dev/null +++ b/lib/private/Share20/Share.php @@ -0,0 +1,389 @@ +<?php +/** + * @author Roeland Jago Douma <rullzer@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OC\Share20; + +use OCP\Files\File; +use OCP\Files\IRootFolder; +use OCP\Files\Node; +use OCP\Files\NotFoundException; +use OCP\IUser; +use OCP\IGroup; + +class Share implements \OCP\Share\IShare { + + /** @var string */ + private $id; + /** @var string */ + private $providerId; + /** @var Node */ + private $node; + /** @var int */ + private $fileId; + /** @var string */ + private $nodeType; + /** @var int */ + private $shareType; + /** @var string */ + private $sharedWith; + /** @var string */ + private $sharedBy; + /** @var string */ + private $shareOwner; + /** @var int */ + private $permissions; + /** @var \DateTime */ + private $expireDate; + /** @var string */ + private $password; + /** @var string */ + private $token; + /** @var int */ + private $parent; + /** @var string */ + private $target; + /** @var \DateTime */ + private $shareTime; + /** @var bool */ + private $mailSend; + + /** @var IRootFolder */ + private $rootFolder; + + public function __construct(IRootFolder $rootFolder) { + $this->rootFolder = $rootFolder; + } + + /** + * @inheritdoc + */ + public function setId($id) { + $this->id = $id; + return $this; + } + + /** + * @inheritdoc + */ + public function getId() { + return $this->id; + } + + /** + * @inheritdoc + */ + public function getFullId() { + if ($this->providerId === null || $this->id === null) { + throw new \UnexpectedValueException; + } + return $this->providerId . ':' . $this->id; + } + + /** + * @inheritdoc + */ + public function setProviderId($id) { + $this->providerId = $id; + return $this; + } + + /** + * @inheritdoc + */ + public function setNode(Node $node) { + $this->fileId = null; + $this->nodeType = null; + $this->node = $node; + return $this; + } + + /** + * @inheritdoc + */ + public function getNode() { + if ($this->node === null) { + + if ($this->shareOwner === null || $this->fileId === null) { + throw new NotFoundException(); + } + + $userFolder = $this->rootFolder->getUserFolder($this->shareOwner); + + $nodes = $userFolder->getById($this->fileId); + if (empty($nodes)) { + throw new NotFoundException(); + } + + $this->node = $nodes[0]; + } + + return $this->node; + } + + /** + * @inheritdoc + */ + public function setNodeId($fileId) { + $this->node = null; + $this->fileId = $fileId; + return $this; + } + + /** + * @inheritdoc + */ + public function getNodeId() { + if ($this->fileId === null) { + $this->fileId = $this->getNode()->getId(); + } + + return $this->fileId; + } + + /** + * @inheritdoc + */ + public function setNodeType($type) { + if ($type !== 'file' && $type !== 'folder') { + throw new \InvalidArgumentException(); + } + + $this->nodeType = $type; + return $this; + } + + /** + * @inheritdoc + */ + public function getNodeType() { + if ($this->nodeType === null) { + $node = $this->getNode(); + $this->nodeType = $node instanceof File ? 'file' : 'folder'; + } + + return $this->nodeType; + } + + /** + * @inheritdoc + */ + public function setShareType($shareType) { + $this->shareType = $shareType; + return $this; + } + + /** + * @inheritdoc + */ + public function getShareType() { + return $this->shareType; + } + + /** + * @inheritdoc + */ + public function setSharedWith($sharedWith) { + if (!is_string($sharedWith)) { + throw new \InvalidArgumentException(); + } + $this->sharedWith = $sharedWith; + return $this; + } + + /** + * @inheritdoc + */ + public function getSharedWith() { + return $this->sharedWith; + } + + /** + * @inheritdoc + */ + public function setPermissions($permissions) { + //TODO checkes + + $this->permissions = $permissions; + return $this; + } + + /** + * @inheritdoc + */ + public function getPermissions() { + return $this->permissions; + } + + /** + * @inheritdoc + */ + public function setExpirationDate($expireDate) { + //TODO checks + + $this->expireDate = $expireDate; + return $this; + } + + /** + * @inheritdoc + */ + public function getExpirationDate() { + return $this->expireDate; + } + + /** + * @inheritdoc + */ + public function setSharedBy($sharedBy) { + if (!is_string($sharedBy)) { + throw new \InvalidArgumentException(); + } + //TODO checks + $this->sharedBy = $sharedBy; + + return $this; + } + + /** + * @inheritdoc + */ + public function getSharedBy() { + //TODO check if set + return $this->sharedBy; + } + + /** + * @inheritdoc + */ + public function setShareOwner($shareOwner) { + if (!is_string($shareOwner)) { + throw new \InvalidArgumentException(); + } + //TODO checks + + $this->shareOwner = $shareOwner; + return $this; + } + + /** + * @inheritdoc + */ + public function getShareOwner() { + //TODO check if set + return $this->shareOwner; + } + + /** + * @inheritdoc + */ + public function setPassword($password) { + $this->password = $password; + return $this; + } + + /** + * @inheritdoc + */ + public function getPassword() { + return $this->password; + } + + /** + * @inheritdoc + */ + public function setToken($token) { + $this->token = $token; + return $this; + } + + /** + * @inheritdoc + */ + public function getToken() { + return $this->token; + } + + /** + * Set the parent of this share + * + * @param int parent + * @return \OCP\Share\IShare + * @deprecated The new shares do not have parents. This is just here for legacy reasons. + */ + public function setParent($parent) { + $this->parent = $parent; + return $this; + } + + /** + * Get the parent of this share. + * + * @return int + * @deprecated The new shares do not have parents. This is just here for legacy reasons. + */ + public function getParent() { + return $this->parent; + } + + /** + * @inheritdoc + */ + public function setTarget($target) { + $this->target = $target; + return $this; + } + + /** + * @inheritdoc + */ + public function getTarget() { + return $this->target; + } + + /** + * @inheritdoc + */ + public function setShareTime(\DateTime $shareTime) { + $this->shareTime = $shareTime; + return $this; + } + + /** + * @inheritdoc + */ + public function getShareTime() { + return $this->shareTime; + } + + /** + * @inheritdoc + */ + public function setMailSend($mailSend) { + $this->mailSend = $mailSend; + return $this; + } + + /** + * @inheritdoc + */ + public function getMailSend() { + return $this->mailSend; + } +} |