diff --git a/lib/GroupBackend.php b/lib/GroupBackend.php index 46d08ad98..a80667721 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, INamedBackend, ISetDisplayNameBackend { /** @var array */ private $groupCache = []; @@ -292,4 +293,22 @@ 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; + } + + $qb = $this->dbc->getQueryBuilder(); + $result = $qb->update(self::TABLE_GROUPS) + ->set('displayname', $qb->createNamedParameter($displayName)) + ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) + ->executeStatement(); + + return $result > 0; + } }