]> source.dussan.org Git - nextcloud-server.git/commitdiff
re-use the share node while formating if we already have it
authorRobin Appelman <robin@icewind.nl>
Tue, 20 Sep 2016 15:59:04 +0000 (17:59 +0200)
committerRobin Appelman <robin@icewind.nl>
Wed, 12 Oct 2016 14:12:35 +0000 (16:12 +0200)
Signed-off-by: Robin Appelman <robin@icewind.nl>
apps/files_sharing/lib/API/Share20OCS.php

index 5adfa640c00f389c68bbbac04a5340c413e10018..4ec4a006be2b67d9c3d3e2c66f49d052dd14cbce 100644 (file)
@@ -29,6 +29,7 @@ use OCP\AppFramework\OCS\OCSException;
 use OCP\AppFramework\OCS\OCSForbiddenException;
 use OCP\AppFramework\OCS\OCSNotFoundException;
 use OCP\AppFramework\OCSController;
+use OCP\Files\Node;
 use OCP\Files\NotFoundException;
 use OCP\IGroupManager;
 use OCP\IL10N;
@@ -110,10 +111,11 @@ class Share20OCS extends OCSController {
         * Convert an IShare to an array for OCS output
         *
         * @param \OCP\Share\IShare $share
+        * @param Node|null $recipientNode
         * @return array
         * @throws NotFoundException In case the node can't be resolved.
         */
-       protected function formatShare(\OCP\Share\IShare $share) {
+       protected function formatShare(\OCP\Share\IShare $share, Node $recipientNode = null) {
                $sharedBy = $this->userManager->get($share->getSharedBy());
                $shareOwner = $this->userManager->get($share->getShareOwner());
 
@@ -132,13 +134,17 @@ class Share20OCS extends OCSController {
                ];
 
                $userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
-               $nodes = $userFolder->getById($share->getNodeId());
+               if ($recipientNode) {
+                       $node = $recipientNode;
+               } else {
+                       $nodes = $userFolder->getById($share->getNodeId());
 
-               if (empty($nodes)) {
-                       throw new NotFoundException();
-               }
+                       if (empty($nodes)) {
+                               throw new NotFoundException();
+                       }
 
-               $node = $nodes[0];
+                       $node = $nodes[0];
+               }
 
                $result['path'] = $userFolder->getRelativePath($node->getPath());
                if ($node instanceOf \OCP\Files\Folder) {
@@ -543,7 +549,7 @@ class Share20OCS extends OCSController {
                $formatted = [];
                foreach ($shares as $share) {
                        try {
-                               $formatted[] = $this->formatShare($share);
+                               $formatted[] = $this->formatShare($share, $path);
                        } catch (NotFoundException $e) {
                                //Ignore share
                        }