|
|
|
@ -31,6 +31,11 @@ use OCP\Calendar\ICalendar;
|
|
|
|
|
use OCP\Calendar\ICalendarProvider;
|
|
|
|
|
use OCP\Calendar\ICalendarQuery;
|
|
|
|
|
use OCP\Calendar\IManager;
|
|
|
|
|
use Psr\Container\ContainerInterface;
|
|
|
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
|
use Throwable;
|
|
|
|
|
use function array_map;
|
|
|
|
|
use function array_merge;
|
|
|
|
|
|
|
|
|
|
class Manager implements IManager {
|
|
|
|
|
|
|
|
|
@ -47,8 +52,18 @@ class Manager implements IManager {
|
|
|
|
|
/** @var Coordinator */
|
|
|
|
|
private $coordinator;
|
|
|
|
|
|
|
|
|
|
public function __construct(Coordinator $coordinator) {
|
|
|
|
|
/** @var ContainerInterface */
|
|
|
|
|
private $container;
|
|
|
|
|
|
|
|
|
|
/** @var LoggerInterface */
|
|
|
|
|
private $logger;
|
|
|
|
|
|
|
|
|
|
public function __construct(Coordinator $coordinator,
|
|
|
|
|
ContainerInterface $container,
|
|
|
|
|
LoggerInterface $logger) {
|
|
|
|
|
$this->coordinator = $coordinator;
|
|
|
|
|
$this->container = $container;
|
|
|
|
|
$this->logger = $logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -159,9 +174,21 @@ class Manager implements IManager {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** @var CalendarQuery $query */
|
|
|
|
|
$calendars = array_merge(...array_map(static function (ICalendarProvider $p) use ($query) {
|
|
|
|
|
return $p->getCalendars($query->getPrincipalUri(), $query->getCalendarUris());
|
|
|
|
|
}, $context->getCalendarProviders()));
|
|
|
|
|
$calendars = array_merge(
|
|
|
|
|
...array_map(function ($registration) use ($query) {
|
|
|
|
|
try {
|
|
|
|
|
/** @var ICalendarProvider $provider */
|
|
|
|
|
$provider = $this->container->get($registration->getService());
|
|
|
|
|
} catch (Throwable $e) {
|
|
|
|
|
$this->logger->error('Could not load calendar provider ' . $registration->getService() . ': ' . $e->getMessage(), [
|
|
|
|
|
'exception' => $e,
|
|
|
|
|
]);
|
|
|
|
|
return [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $provider->getCalendars($query->getPrincipalUri(), $query->getCalendarUris());
|
|
|
|
|
}, $context->getCalendarProviders())
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$results = [];
|
|
|
|
|
/** @var ICalendar $calendar */
|
|
|
|
|