diff options
author | Roeland Jago Douma <rullzer@owncloud.com> | 2016-02-04 14:28:09 +0100 |
---|---|---|
committer | Roeland Jago Douma <rullzer@owncloud.com> | 2016-02-04 14:28:09 +0100 |
commit | 0f22a8db1d29b6be8ec13dcb92ba5f344f2a34f0 (patch) | |
tree | 59296b820cbf061e5d13abfa1a733bda95d536cc /lib | |
parent | 2c0cb5a00eb15bfb233bb29de1156e7e35d84743 (diff) | |
download | nextcloud-server-0f22a8db1d29b6be8ec13dcb92ba5f344f2a34f0.tar.gz nextcloud-server-0f22a8db1d29b6be8ec13dcb92ba5f344f2a34f0.zip |
Also add type (file/folder) to IShare object
We need this for the hooks :(
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/share20/defaultshareprovider.php | 1 | ||||
-rw-r--r-- | lib/private/share20/manager.php | 6 | ||||
-rw-r--r-- | lib/private/share20/share.php | 37 | ||||
-rw-r--r-- | lib/public/share/ishare.php | 26 |
4 files changed, 67 insertions, 3 deletions
diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php index 48164a5d419..0ab0dc81fa7 100644 --- a/lib/private/share20/defaultshareprovider.php +++ b/lib/private/share20/defaultshareprovider.php @@ -745,6 +745,7 @@ class DefaultShareProvider implements IShareProvider { } $share->setNodeId((int)$data['file_source']); + $share->setNodeType($data['item_type']); if ($data['expiration'] !== null) { $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']); diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php index 3db76d92ac7..6ea638b84e6 100644 --- a/lib/private/share20/manager.php +++ b/lib/private/share20/manager.php @@ -663,13 +663,13 @@ class Manager implements IManager { $hookParams = [ 'id' => $share->getId(), - 'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder', - 'itemSource' => $share->getNode()->getId(), + 'itemType' => $share->getNodeType(), + 'itemSource' => $share->getNodeId(), 'shareType' => $shareType, 'shareWith' => $sharedWith, 'itemparent' => $share->getParent(), 'uidOwner' => $share->getSharedBy(), - 'fileSource' => $share->getNode()->getId(), + 'fileSource' => $share->getNodeId(), 'fileTarget' => $share->getTarget() ]; return $hookParams; diff --git a/lib/private/share20/share.php b/lib/private/share20/share.php index 5b7945b1da8..448b05d20a3 100644 --- a/lib/private/share20/share.php +++ b/lib/private/share20/share.php @@ -20,6 +20,7 @@ */ namespace OC\Share20; +use OCP\Files\File; use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\Files\NotFoundException; @@ -36,6 +37,8 @@ class Share implements \OCP\Share\IShare { private $node; /** @var int */ private $fileId; + /** @var string */ + private $nodeType; /** @var int */ private $shareType; /** @var string */ @@ -141,6 +144,40 @@ class Share implements \OCP\Share\IShare { /** * @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; + } + + /** + * @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; diff --git a/lib/public/share/ishare.php b/lib/public/share/ishare.php index 074f4117584..5054a886af5 100644 --- a/lib/public/share/ishare.php +++ b/lib/public/share/ishare.php @@ -78,6 +78,32 @@ interface IShare { public function setNodeId($fileId); /** + * Get the fileid of the node of this share + * @return int + * @since 9.0.0 + * @throws NotFoundException + */ + public function getNodeId(); + + /** + * Set the type of node (file/folder) + * + * @param string $type + * @return \OCP\Share\IShare The modified object + * @since 9.0.0 + */ + public function setNodeType($type); + + /** + * Get the type of node (file/folder) + * + * @return string + * @since 9.0.0 + * @throws NotFoundException + */ + public function getNodeType(); + + /** * Set the shareType * * @param int $shareType |