From 2316cb1f8b9704621b47e6eb1c2cbf30c06c552d Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Fri, 29 Jan 2016 10:27:39 +0100 Subject: [Share 2.0] Allow moving of shares * Only recipient can move a share * Unit tests --- lib/public/share/imanager.php | 20 +++++++++++++++++--- lib/public/share/ishareprovider.php | 13 +++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) (limited to 'lib/public') diff --git a/lib/public/share/imanager.php b/lib/public/share/imanager.php index 6919fea00de..15b9f34764e 100644 --- a/lib/public/share/imanager.php +++ b/lib/public/share/imanager.php @@ -37,13 +37,15 @@ interface IManager { * Create a Share * * @param IShare $share - * @return Share The share object + * @return IShare The share object * @since 9.0.0 */ public function createShare(IShare $share); /** - * Update a share + * Update a share. + * The target of the share can't be changed this way: use moveShare + * The share can't be removed this way (permission 0): use deleteShare * * @param IShare $share * @return IShare The share object @@ -72,6 +74,18 @@ interface IManager { */ public function deleteFromSelf(IShare $share, IUser $recipient); + /** + * Move the share as a recipient of the share. + * This is updating the share target. So where the recipient has the share mounted. + * + * @param IShare $share + * @param IUser $recipient + * @return IShare + * @throws \InvalidArgumentException If $share is a link share or the $recipient does not match + * @since 9.0.0 + */ + public function moveShare(IShare $share, IUser $recipient); + /** * Get shares shared by (initiated) by the provided user. * @@ -118,7 +132,7 @@ interface IManager { * Get the share by token possible with password * * @param string $token - * @return Share + * @return IShare * @throws ShareNotFound * @since 9.0.0 */ diff --git a/lib/public/share/ishareprovider.php b/lib/public/share/ishareprovider.php index 9dc56dc37ad..42a2881718e 100644 --- a/lib/public/share/ishareprovider.php +++ b/lib/public/share/ishareprovider.php @@ -79,6 +79,19 @@ interface IShareProvider { */ public function deleteFromSelf(\OCP\Share\IShare $share, IUser $recipient); + /** + * Move a share as a recipient. + * This is updating the share target. Thus the mount point of the recipient. + * This may require special handling. If a user moves a group share + * the target should only be changed for them. + * + * @param \OCP\Share\IShare $share + * @param IUser $recipient + * @return \OCP\Share\IShare + * @since 9.0.0 + */ + public function move(\OCP\Share\IShare $share, IUser $recipient); + /** * Get all shares by the given user * -- cgit v1.2.3