aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/Group/Backend
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-10-16 19:57:31 +0200
committerCôme Chilliet <come.chilliet@nextcloud.com>2023-04-27 12:00:01 +0200
commita4c599c1c91dcd6e041cbf65198e1f1200513be8 (patch)
tree9a2a0f0b0ecb4c6775f7382402a147ae8ca110d2 /lib/public/Group/Backend
parent35dc2235001bf61f07c78b50e74ca029bb9fc05d (diff)
downloadnextcloud-server-a4c599c1c91dcd6e041cbf65198e1f1200513be8.tar.gz
nextcloud-server-a4c599c1c91dcd6e041cbf65198e1f1200513be8.zip
Split new method in a new group backend interface
Better for backward compatibility, also move new interfaces to nc 26 Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'lib/public/Group/Backend')
-rw-r--r--lib/public/Group/Backend/ABackend.php6
-rw-r--r--lib/public/Group/Backend/ISearchableGroupBackend.php52
2 files changed, 54 insertions, 4 deletions
diff --git a/lib/public/Group/Backend/ABackend.php b/lib/public/Group/Backend/ABackend.php
index e76285dfda9..ee1b62c887b 100644
--- a/lib/public/Group/Backend/ABackend.php
+++ b/lib/public/Group/Backend/ABackend.php
@@ -29,12 +29,11 @@ use OCP\GroupInterface;
use OCP\IUserManager;
use OCP\Server;
use OC\User\LazyUser;
-use OC\User\DisplayNameCache;
/**
* @since 14.0.0
*/
-abstract class ABackend implements GroupInterface {
+abstract class ABackend implements GroupInterface, ISearchableGroupBackend {
/**
* @deprecated 14.0.0
* @since 14.0.0
@@ -72,11 +71,10 @@ abstract class ABackend implements GroupInterface {
public function searchInGroup(string $gid, string $search = '', int $limit = -1, int $offset = 0): array {
// Default implementation for compatibility reasons
- $displayNameCache = Server::get(DisplayNameCache::class);
$userManager = Server::get(IUserManager::class);
$users = [];
foreach ($this->usersInGroup($gid, $search, $limit, $offset) as $userId) {
- $users[$userId] = new LazyUser($userId, $displayNameCache, $userManager);
+ $users[$userId] = new LazyUser($userId, $userManager);
}
return $users;
}
diff --git a/lib/public/Group/Backend/ISearchableGroupBackend.php b/lib/public/Group/Backend/ISearchableGroupBackend.php
new file mode 100644
index 00000000000..4e03680f75a
--- /dev/null
+++ b/lib/public/Group/Backend/ISearchableGroupBackend.php
@@ -0,0 +1,52 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2022 Carl Schwan <carl@carlschwan.eu>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Group\Backend;
+
+use OCP\IUser;
+
+/**
+ * @since 26.0.0
+ */
+interface ISearchableGroupBackend {
+
+ /**
+ * @brief Get a list of users matching the given search parameters.
+ *
+ * Implementations of this method should return lazy evaluated user objects and
+ * preload if possible the display name.
+ *
+ * <code>
+ * $users = $groupBackend->searchInGroup('admin', 'John', 10, 0);
+ * </code>
+ *
+ * @param string $gid The group id of the user we want to search
+ * @param string $search The part of the display name or user id of the users we
+ * want to search. This can be empty to get all the users.
+ * @param int $limit The limit of results
+ * @param int $offset The offset of the results
+ * @return IUser[]
+ * @since 26.0.0
+ */
+ public function searchInGroup(string $gid, string $search = '', int $limit = -1, int $offset = 0): array;
+}