diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2015-03-25 09:13:51 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2015-03-25 09:13:51 +0100 |
commit | 9c19a5dbcc422b361618ca979271bc6218ff33b7 (patch) | |
tree | b115ed7c8664549a56c78edfae6bab62a7ab5436 /core/ajax | |
parent | fb618894902331fdd537e9319ed28959b14175c7 (diff) | |
download | nextcloud-server-9c19a5dbcc422b361618ca979271bc6218ff33b7.tar.gz nextcloud-server-9c19a5dbcc422b361618ca979271bc6218ff33b7.zip |
Make sure we do not return people that we already shared with
We should use the provided list of users and groups that we already
shared with to filter suggestions.
Diffstat (limited to 'core/ajax')
-rw-r--r-- | core/ajax/share.php | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/core/ajax/share.php b/core/ajax/share.php index d8aec9c6542..1a2b9c4e70c 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -241,6 +241,14 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $usergroups = OC_Group::getUserGroups(OC_User::getUser()); $groups = array_intersect($groups, $usergroups); } + + $sharedUsers = []; + $sharedGroups = []; + if (isset($_GET['itemShares'])) { + $sharedUsers = isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) ? $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER] : []; + $sharedGroups = isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP]) ? $_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP] : []; + } + $count = 0; $users = array(); $limit = 0; @@ -252,8 +260,13 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo } else { $users = OC_User::getDisplayNames((string)$_GET['search'], $limit, $offset); } + $offset += $limit; foreach ($users as $uid => $displayName) { + if (in_array($uid, $sharedUsers)) { + continue; + } + if ((!isset($_GET['itemShares']) || !is_array((string)$_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($uid, (string)$_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) @@ -274,6 +287,10 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $l = \OC::$server->getL10N('core'); foreach ($groups as $group) { + if (in_array($group, $sharedGroups)) { + continue; + } + if ($count < 15) { if (!isset($_GET['itemShares']) || !isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP]) |