diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index fad494f1c6fe6..5aa979e007acc 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -7,14 +7,14 @@ class ComposerStaticInitDAV { public static $prefixLengthsPsr4 = array ( - 'O' => + 'O' => array ( 'OCA\\DAV\\' => 8, ), ); public static $prefixDirsPsr4 = array ( - 'OCA\\DAV\\' => + 'OCA\\DAV\\' => array ( 0 => __DIR__ . '/..' . '/../lib', ), diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index beafb4700c69d..45bb5ce0e007a 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -1023,9 +1023,11 @@ 'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php', + 'OCP\\Teams\\ITeamFolderProvider' => $baseDir . '/lib/public/Teams/ITeamFolderProvider.php', 'OCP\\Teams\\ITeamManager' => $baseDir . '/lib/public/Teams/ITeamManager.php', 'OCP\\Teams\\ITeamResourceProvider' => $baseDir . '/lib/public/Teams/ITeamResourceProvider.php', 'OCP\\Teams\\Team' => $baseDir . '/lib/public/Teams/Team.php', + 'OCP\\Teams\\TeamFolder' => $baseDir . '/lib/public/Teams/TeamFolder.php', 'OCP\\Teams\\TeamResource' => $baseDir . '/lib/public/Teams/TeamResource.php', 'OCP\\Template' => $baseDir . '/lib/public/Template.php', 'OCP\\Template\\ITemplate' => $baseDir . '/lib/public/Template/ITemplate.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index e024c1fb44b9f..c3d8ee4f403a1 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -1064,9 +1064,11 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php', + 'OCP\\Teams\\ITeamFolderProvider' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamFolderProvider.php', 'OCP\\Teams\\ITeamManager' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamManager.php', 'OCP\\Teams\\ITeamResourceProvider' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamResourceProvider.php', 'OCP\\Teams\\Team' => __DIR__ . '/../../..' . '/lib/public/Teams/Team.php', + 'OCP\\Teams\\TeamFolder' => __DIR__ . '/../../..' . '/lib/public/Teams/TeamFolder.php', 'OCP\\Teams\\TeamResource' => __DIR__ . '/../../..' . '/lib/public/Teams/TeamResource.php', 'OCP\\Template' => __DIR__ . '/../../..' . '/lib/public/Template.php', 'OCP\\Template\\ITemplate' => __DIR__ . '/../../..' . '/lib/public/Template/ITemplate.php', diff --git a/lib/private/Teams/TeamManager.php b/lib/private/Teams/TeamManager.php index c466b1d20c088..d17aefe36223b 100644 --- a/lib/private/Teams/TeamManager.php +++ b/lib/private/Teams/TeamManager.php @@ -15,6 +15,7 @@ use OCA\Circles\Model\Probes\CircleProbe; use OCP\IURLGenerator; use OCP\Server; +use OCP\Teams\ITeamFolderProvider; use OCP\Teams\ITeamManager; use OCP\Teams\ITeamResourceProvider; use OCP\Teams\Team; @@ -70,6 +71,17 @@ public function getProvider(string $providerId): ITeamResourceProvider { throw new \RuntimeException('No provider found for id ' . $providerId); } + #[\Override] + public function getTeamFolderProvider(): ?ITeamFolderProvider { + foreach ($this->getProviders() as $provider) { + if ($provider instanceof ITeamFolderProvider) { + return $provider; + } + } + + return null; + } + #[\Override] public function getSharedWith(string $teamId, string $userId): array { if (!$this->hasTeamSupport()) { diff --git a/lib/public/Teams/ITeamFolderProvider.php b/lib/public/Teams/ITeamFolderProvider.php new file mode 100644 index 0000000000000..58b1b6f19ca41 --- /dev/null +++ b/lib/public/Teams/ITeamFolderProvider.php @@ -0,0 +1,56 @@ +id; + } + + /** + * @since 35.0.0 + */ + public function getMountPoint(): string { + return $this->mountPoint; + } + + /** + * @return array{id: int, mountPoint: string} + * @since 35.0.0 + */ + #[\Override] + public function jsonSerialize(): array { + return [ + 'id' => $this->id, + 'mountPoint' => $this->mountPoint, + ]; + } +} diff --git a/tests/lib/Teams/TeamFolderTest.php b/tests/lib/Teams/TeamFolderTest.php new file mode 100644 index 0000000000000..0b5397dbf224e --- /dev/null +++ b/tests/lib/Teams/TeamFolderTest.php @@ -0,0 +1,23 @@ +assertSame(42, $folder->getId()); + $this->assertSame('Engineering', $folder->getMountPoint()); + $this->assertSame(['id' => 42, 'mountPoint' => 'Engineering'], $folder->jsonSerialize()); + } +} diff --git a/tests/lib/Teams/TeamManagerTest.php b/tests/lib/Teams/TeamManagerTest.php new file mode 100644 index 0000000000000..b5b1a42aca124 --- /dev/null +++ b/tests/lib/Teams/TeamManagerTest.php @@ -0,0 +1,70 @@ +createTeamManager(); + + $this->assertNull($teamManager->getTeamFolderProvider()); + } + + public function testGetTeamFolderProviderReturnsNullWithoutFolderProvider(): void { + $teamManager = $this->createTeamManager(true); + $this->setProviders($teamManager, [ + 'other' => $this->createMock(ITeamResourceProvider::class), + ]); + + $this->assertNull($teamManager->getTeamFolderProvider()); + } + + public function testGetTeamFolderProviderReturnsRegisteredFolderProvider(): void { + $teamManager = $this->createTeamManager(true); + $folderProvider = $this->createMock(ITeamFolderProvider::class); + $this->setProviders($teamManager, [ + 'other' => $this->createMock(ITeamResourceProvider::class), + 'folder' => $folderProvider, + ]); + + $this->assertSame($folderProvider, $teamManager->getTeamFolderProvider()); + } + + private function createTeamManager(bool $hasTeamSupport = false): TeamManager { + return new class($this->createMock(Coordinator::class), $this->createMock(IURLGenerator::class), null, $hasTeamSupport, ) extends TeamManager { + public function __construct( + Coordinator $bootContext, + IURLGenerator $urlGenerator, + null $circlesManager, + private bool $hasTeamSupport, + ) { + parent::__construct($bootContext, $urlGenerator, $circlesManager); + } + + #[\Override] + public function hasTeamSupport(): bool { + return $this->hasTeamSupport; + } + }; + } + + /** + * @param array $providers + */ + private function setProviders(TeamManager $teamManager, array $providers): void { + (new \ReflectionProperty(TeamManager::class, 'providers'))->setValue($teamManager, $providers); + } +}