From: Roeland Jago Douma Date: Wed, 25 Mar 2015 08:13:51 +0000 (+0100) Subject: Make sure we do not return people that we already shared with X-Git-Tag: v8.1.0alpha1~42^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9c19a5dbcc422b361618ca979271bc6218ff33b7;p=nextcloud-server.git 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. --- 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])