From 2ac024e3b475758c5995ad5f3ec8eaecfc431952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Linaza=20Arg=C3=BCeso?= <ilinaza@virtualwareco.com> Date: Fri, 31 May 2024 15:54:40 +0200 Subject: [PATCH 1/4] feat(groups): add setting display name to group backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Iñaki Linaza Argüeso <ilinaza@virtualwareco.com> --- lib/GroupBackend.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/GroupBackend.php b/lib/GroupBackend.php index 46d08ad98..9c2d38af2 100644 --- a/lib/GroupBackend.php +++ b/lib/GroupBackend.php @@ -15,10 +15,11 @@ use OCP\Group\Backend\IGetDisplayNameBackend; use OCP\Group\Backend\INamedBackend; use OCP\Group\Backend\IRemoveFromGroupBackend; +use OCP\Group\Backend\ISetDisplayNameBackend; use OCP\IDBConnection; use Psr\Log\LoggerInterface; -class GroupBackend extends ABackend implements IAddToGroupBackend, ICountUsersBackend, ICreateGroupBackend, IDeleteGroupBackend, IGetDisplayNameBackend, IRemoveFromGroupBackend, INamedBackend { +class GroupBackend extends ABackend implements IAddToGroupBackend, ICountUsersBackend, ICreateGroupBackend, IDeleteGroupBackend, IGetDisplayNameBackend, IRemoveFromGroupBackend, ISetDisplayNameBackend, INamedBackend { /** @var array */ private $groupCache = []; @@ -292,4 +293,25 @@ public function getDisplayName(string $gid): string { return $this->groupCache[$gid] ?? $gid; } + + public function setDisplayName(string $gid, string $displayName): bool { + if (!$this->groupExists($gid)) { + return false; + } + + $displayName = trim($displayName); + if ($displayName === '') { + $displayName = $gid; + } + + $query = $this->dbc->getQueryBuilder(); + $query->update(self::TABLE_GROUPS) + ->set('displayname', $query->createNamedParameter($displayName)) + ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); + $query->execute(); + + $this->groupCache[$gid] = $displayName; + + return true; + } } From 990837c35c506327978dea62b43229627bebcab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Linaza=20Arg=C3=BCeso?= <ilinaza@virtualwareco.com> Date: Fri, 31 May 2024 16:13:27 +0200 Subject: [PATCH 2/4] feat(groups): add setting display name to group backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Iñaki Linaza Argüeso <ilinaza@virtualwareco.com> --- lib/GroupBackend.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/GroupBackend.php b/lib/GroupBackend.php index 9c2d38af2..0f42d0767 100644 --- a/lib/GroupBackend.php +++ b/lib/GroupBackend.php @@ -309,8 +309,8 @@ public function setDisplayName(string $gid, string $displayName): bool { ->set('displayname', $query->createNamedParameter($displayName)) ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); $query->execute(); - - $this->groupCache[$gid] = $displayName; + + $this->groupCache[$gid] = $displayName; return true; } From 571032f444b2e9a1fbc23e65519b677eef5e39e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Linaza=20Arg=C3=BCeso?= <ilinaza@virtualwareco.com> Date: Fri, 31 May 2024 17:03:31 +0200 Subject: [PATCH 3/4] feat(groups): add displayname to groups search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Iñaki Linaza Argüeso <ilinaza@virtualwareco.com> --- lib/GroupBackend.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/GroupBackend.php b/lib/GroupBackend.php index 0f42d0767..d2e02293a 100644 --- a/lib/GroupBackend.php +++ b/lib/GroupBackend.php @@ -79,6 +79,9 @@ public function getGroups($search = '', $limit = null, $offset = null): array { $query->where($query->expr()->iLike('gid', $query->createNamedParameter( '%' . $this->dbc->escapeLikeParameter($search) . '%' ))); + $query->orWhere($query->expr()->iLike('displayname', $query->createNamedParameter( + '%' . $this->dbc->escapeLikeParameter($search) . '%' + ))); } if ((int)$limit > 0) { From fe0186b7d543f1d69e1c9aae7bf9b611cb88621c Mon Sep 17 00:00:00 2001 From: Arthur Schiwon <blizzz@arthur-schiwon.de> Date: Mon, 2 Dec 2024 11:36:40 +0100 Subject: [PATCH 4/4] fix: use executeStatement and take result into account Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de> --- lib/GroupBackend.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/GroupBackend.php b/lib/GroupBackend.php index d2e02293a..4718d16ff 100644 --- a/lib/GroupBackend.php +++ b/lib/GroupBackend.php @@ -81,7 +81,7 @@ public function getGroups($search = '', $limit = null, $offset = null): array { ))); $query->orWhere($query->expr()->iLike('displayname', $query->createNamedParameter( '%' . $this->dbc->escapeLikeParameter($search) . '%' - ))); + ))); } if ((int)$limit > 0) { @@ -305,16 +305,18 @@ public function setDisplayName(string $gid, string $displayName): bool { $displayName = trim($displayName); if ($displayName === '') { $displayName = $gid; - } + } $query = $this->dbc->getQueryBuilder(); - $query->update(self::TABLE_GROUPS) + $isUpdated = $query->update(self::TABLE_GROUPS) ->set('displayname', $query->createNamedParameter($displayName)) - ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); - $query->execute(); + ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))) + ->executeStatement() > 0; - $this->groupCache[$gid] = $displayName; + if ($isUpdated) { + $this->groupCache[$gid] = $displayName; + } - return true; + return $isUpdated; } }