From c3e7d324c5e61eb087fb2ea5102d332f9f08db3d Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Thu, 1 Oct 2015 15:41:24 +0200 Subject: [PATCH] Extend share info The data from the share_external is not to much. Thus we enrich this data with info from the filecache. This allows endpoints using this to actually show usefull information. The filecache might not be up to date but that is a sacrifice we need to make in terms of speed. Else the number of remote PROPFINDS grows lineary with the number of remote shares wich will make this endpoint practically unusable. --- apps/files_sharing/api/remote.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/files_sharing/api/remote.php b/apps/files_sharing/api/remote.php index ab87820611c..76f9babcd19 100644 --- a/apps/files_sharing/api/remote.php +++ b/apps/files_sharing/api/remote.php @@ -91,6 +91,23 @@ class Remote { return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist."); } + /** + * @param array $share Share with info from the share_external table + * @return enriched share info with data from the filecache + */ + private static function extendShareInfo($share) { + $view = new \OC\Files\View('/' . \OC_User::getUser() . '/files/'); + $info = $view->getFileInfo($shares['mountpoint']); + + $share['mimetype'] = $info->getMimetype(); + $share['mtime'] = $info->getMtime(); + $share['permissions'] = $info->getPermissions(); + $share['type'] = $info->getType(); + $share['file_id'] = $info->getId(); + + return $share; + } + /** * List accepted remote shares * @@ -106,8 +123,12 @@ class Remote { \OC::$server->getNotificationManager(), \OC_User::getUser() ); + + $shares = $externalManager->getAcceptedShares(); + + $shares = array_map('self::extendShareInfo', $shares); - return new \OC_OCS_Result($externalManager->getAcceptedShares()); + return new \OC_OCS_Result($shares); } /** @@ -131,6 +152,7 @@ class Remote { if ($shareInfo === false) { return new \OC_OCS_Result(null, 404, 'share does not exist'); } else { + $shareInfo = self::extendShareInfo($shareInfo); return new \OC_OCS_Result($shareInfo); } }