summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@owncloud.com>2016-02-04 14:28:09 +0100
committerRoeland Jago Douma <rullzer@owncloud.com>2016-02-04 14:28:09 +0100
commit0f22a8db1d29b6be8ec13dcb92ba5f344f2a34f0 (patch)
tree59296b820cbf061e5d13abfa1a733bda95d536cc /lib
parent2c0cb5a00eb15bfb233bb29de1156e7e35d84743 (diff)
downloadnextcloud-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.php1
-rw-r--r--lib/private/share20/manager.php6
-rw-r--r--lib/private/share20/share.php37
-rw-r--r--lib/public/share/ishare.php26
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