mirror of
https://github.com/nextcloud/server.git
synced 2026-02-23 09:53:17 -05:00
67 lines
1.6 KiB
PHP
67 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
namespace OCA\DAV\CalDAV\Federation;
|
|
|
|
use OCA\DAV\CalDAV\Calendar;
|
|
use OCP\IConfig;
|
|
use OCP\IL10N;
|
|
use Psr\Log\LoggerInterface;
|
|
use Sabre\CalDAV\Backend;
|
|
use Sabre\CalDAV\CalendarHome;
|
|
use Sabre\DAV\Exception\NotFound;
|
|
|
|
class RemoteUserCalendarHome extends CalendarHome {
|
|
public function __construct(
|
|
Backend\BackendInterface $caldavBackend,
|
|
$principalInfo,
|
|
private readonly IL10N $l10n,
|
|
private readonly IConfig $config,
|
|
private readonly LoggerInterface $logger,
|
|
) {
|
|
parent::__construct($caldavBackend, $principalInfo);
|
|
}
|
|
|
|
public function getChild($name) {
|
|
// Remote users can only have incoming shared calendars so we can skip the rest of a regular
|
|
// calendar home
|
|
foreach ($this->caldavBackend->getCalendarsForUser($this->principalInfo['uri']) as $calendar) {
|
|
if ($calendar['uri'] === $name) {
|
|
return new Calendar(
|
|
$this->caldavBackend,
|
|
$calendar,
|
|
$this->l10n,
|
|
$this->config,
|
|
$this->logger,
|
|
);
|
|
}
|
|
}
|
|
|
|
throw new NotFound("Node with name $name could not be found");
|
|
}
|
|
|
|
public function getChildren(): array {
|
|
$objects = [];
|
|
|
|
// Remote users can only have incoming shared calendars so we can skip the rest of a regular
|
|
// calendar home
|
|
$calendars = $this->caldavBackend->getCalendarsForUser($this->principalInfo['uri']);
|
|
foreach ($calendars as $calendar) {
|
|
$objects[] = new Calendar(
|
|
$this->caldavBackend,
|
|
$calendar,
|
|
$this->l10n,
|
|
$this->config,
|
|
$this->logger,
|
|
);
|
|
}
|
|
|
|
return $objects;
|
|
}
|
|
}
|