diff --git a/lib/Folder/FolderManager.php b/lib/Folder/FolderManager.php index 0f1c04efc..6bbd9488d 100644 --- a/lib/Folder/FolderManager.php +++ b/lib/Folder/FolderManager.php @@ -634,9 +634,15 @@ public function getFoldersFromCircleMemberships(IUser $user, int $rootStorageId 'group_folders_groups', 'a', $query->expr()->eq('f.folder_id', 'a.folder_id') - ); + ) + ->where($query->expr()->neq('a.circle_id', $query->createNamedParameter(''))); - $queryHelper->limitToInheritedMembers('a', 'circle_id', $federatedUser); + /** @psalm-suppress RedundantCondition */ + if (method_exists($queryHelper, 'limitToMemberships')) { + $queryHelper->limitToMemberships('a', 'circle_id', $federatedUser); + } else { + $queryHelper->limitToInheritedMembers('a', 'circle_id', $federatedUser); + } $this->joinQueryWithFileCache($query, $rootStorageId); return array_map(fn (array $folder): array => [ diff --git a/lib/Migration/Version2000000Date20250128110101.php b/lib/Migration/Version2000000Date20250128110101.php new file mode 100644 index 000000000..3d46ca898 --- /dev/null +++ b/lib/Migration/Version2000000Date20250128110101.php @@ -0,0 +1,31 @@ +getTable('group_folders_groups'); + if (!$table->hasIndex('groups_folder_circle')) { + $table->addIndex(['circle_id'], 'groups_folder_circle'); + } + + return $schema; + } +} diff --git a/tests/stubs/oca_circles_circlesqueryhelper.php b/tests/stubs/oca_circles_circlesqueryhelper.php index b4b97da22..79e1ae15a 100644 --- a/tests/stubs/oca_circles_circlesqueryhelper.php +++ b/tests/stubs/oca_circles_circlesqueryhelper.php @@ -74,6 +74,10 @@ public function limitToInheritedMembers(string $alias, string $field, IFederated { } + public function limitToMemberships(string $alias, string $field, IFederatedUser $federatedUser): void + { + } + /** * @param string $field