diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2020-01-07 08:53:33 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2020-01-07 08:53:33 +0100 |
commit | fbed6a3416dd96e3698575f67dc57fc861c2ed46 (patch) | |
tree | f678afb92247f76597eeeb1fa1a5cac17a78acd0 /apps/files_sharing | |
parent | 4c841559e16f7e5714e42f41ecd339fd6c135d7a (diff) | |
download | nextcloud-server-fbed6a3416dd96e3698575f67dc57fc861c2ed46.tar.gz nextcloud-server-fbed6a3416dd96e3698575f67dc57fc861c2ed46.zip |
A pending shares overview
Now that we accept shares we should show an overview of shares that are
pending. This first part is the small API to get a list of the currently
pending shares.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/appinfo/routes.php | 5 | ||||
-rw-r--r-- | apps/files_sharing/lib/Controller/ShareAPIController.php | 30 |
2 files changed, 35 insertions, 0 deletions
diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php index ad3d11fc3a1..1346e0c6899 100644 --- a/apps/files_sharing/appinfo/routes.php +++ b/apps/files_sharing/appinfo/routes.php @@ -76,6 +76,11 @@ return [ 'verb' => 'POST', ], [ + 'name' => 'ShareAPI#pendingShares', + 'url' => '/api/v1/shares/pending', + 'verb' => 'GET', + ], + [ 'name' => 'ShareAPI#getShare', 'url' => '/api/v1/shares/{id}', 'verb' => 'GET', diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 906eb82221b..e7c9a414958 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -1081,6 +1081,36 @@ class ShareAPIController extends OCSController { /** * @NoAdminRequired + */ + public function pendingShares(): DataResponse { + $pendingShares = []; + + $shareTypes = [ + IShare::TYPE_USER, + IShare::TYPE_GROUP + ]; + + foreach ($shareTypes as $shareType) { + $shares = $this->shareManager->getSharedWith($this->currentUser, $shareType, null, -1, 0); + + foreach ($shares as $share) { + if ($share->getStatus() === IShare::STATUS_PENDING || $share->getStatus() === IShare::STATUS_REJECTED) { + $pendingShares[] = $share; + } + } + } + + $result = array_map(function (IShare $share) { + return [ + 'id' => $share->getFullId(), + ]; + }, $pendingShares); + + return new DataResponse($result); + } + + /** + * @NoAdminRequired * * @param string $id * @return DataResponse |