]> source.dussan.org Git - nextcloud-server.git/commitdiff
Make sure we do not return people that we already shared with
authorRoeland Jago Douma <roeland@famdouma.nl>
Wed, 25 Mar 2015 08:13:51 +0000 (09:13 +0100)
committerRoeland Jago Douma <roeland@famdouma.nl>
Wed, 25 Mar 2015 08:13:51 +0000 (09:13 +0100)
We should use the provided list of users and groups that we already
shared with to filter suggestions.

core/ajax/share.php

index d8aec9c654293994d3f327d5e6127408b8ff379c..1a2b9c4e70c2e3c08225528ae7a607bcc1f60c6e 100644 (file)
@@ -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])