aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_sharing/lib/api.php32
1 files changed, 32 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/api.php b/apps/files_sharing/lib/api.php
index 8ed9b4e2345..06da492ba15 100644
--- a/apps/files_sharing/lib/api.php
+++ b/apps/files_sharing/lib/api.php
@@ -35,6 +35,11 @@ class Api {
// if a file is specified, get the share for this file
if (isset($_GET['file'])) {
$params['itemSource'] = self::getFileId($_GET['file']);
+ $params['path'] = $_GET['file'];
+ if (isset($_GET['subfiles']) && $_GET['subfiles'] === 'yes') {
+ error_log("get shares from folder");
+ return self::getSharesFromFolder($params);
+ }
return self::getShare($params);
}
@@ -89,6 +94,33 @@ class Api {
}
/**
+ * @brief get share from all files in a given folder (non-recursive)
+ * @param array $params contains 'path' to the folder
+ * @return \OC_OCS_Result
+ */
+ private static function getSharesFromFolder($params) {
+ $path = $params['path'];
+ $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files');
+
+ if(!$view->is_dir($path)) {
+ return new \OC_OCS_Result(null, 404, "not a directory");
+ }
+
+ $content = $view->getDirectoryContent($path);
+
+ $result = array();
+ foreach ($content as $file) {
+ $share = \OCP\Share::getItemShared('file', $file['fileid']);
+ if ($share) {
+ $share['filename'] = $file['name'];
+ $result[] = $share;
+ }
+ }
+
+ return new \OC_OCS_Result($result);
+ }
+
+ /**
* @breif create a new share
* @param array $params
* @return \OC_OCS_Result