f7cloud_client/apps/circles/lib/Service/TeamResourceService.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

73 lines
2.1 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2025 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Circles\Service;
use OCA\Circles\FileSharingTeamResourceProvider;
use OCP\IURLGenerator;
use Psr\Log\LoggerInterface;
class TeamResourceService {
public function __construct(
private FileSharingTeamResourceProvider $resourceProvider,
private IURLGenerator $urlGenerator,
private LoggerInterface $logger,
) {
}
/**
* Get ALL resources for a team using real data with previews
*/
public function getAllTeamResources(string $teamId): array {
try {
// Get real shared resources for this team
$teamResources = $this->resourceProvider->getSharedWith($teamId);
$resources = [];
foreach ($teamResources as $resource) {
try {
$resourceId = $resource->getId();
$resourceLabel = $resource->getLabel();
$resourceUrl = $resource->getUrl();
// Use the URLs and icons that FileSharingTeamResourceProvider already provides
// This works correctly for all users with team access, including non-owners
$iconUrl = $resource->getIconURL();
$iconSvg = $resource->getIconSvg();
// Determine if it's a folder based on having iconSvg (folders have SVG, files have iconURL)
$isFolder = !empty($iconSvg) && empty($iconUrl);
// Use the appropriate icon
$previewUrl = $iconUrl ?: $this->urlGenerator->imagePath('core', 'filetypes/folder.svg');
$fallbackIcon = $iconUrl ?: $this->urlGenerator->imagePath('core', 'filetypes/folder.svg');
$resources[] = [
'id' => $resourceId,
'name' => $resourceLabel,
'type' => $isFolder ? 'folder' : 'file',
'iconUrl' => $previewUrl,
'fallbackIcon' => $fallbackIcon,
'url' => $resourceUrl,
];
} catch (\Exception $e) {
$this->logger->warning('Failed to process team resource: ' . $e->getMessage());
continue;
}
}
return $resources;
} catch (\Exception $e) {
$this->logger->error('Failed to fetch team resources: ' . $e->getMessage());
return [];
}
}
}