aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2021-11-04 07:33:49 +0100
committerGitHub <noreply@github.com>2021-11-04 07:33:49 +0100
commit18e6288c89e476e1dec232560caf1479eba9e144 (patch)
tree3a73eb273ba226c9db74c9f3a8863fb09cc0d9f0
parentb453fea4da230883619aba2df83da4ca9bb05b3a (diff)
parent3ef6a099a3d3a3a9baaa48188d316c8295067974 (diff)
downloadnextcloud-server-18e6288c89e476e1dec232560caf1479eba9e144.tar.gz
nextcloud-server-18e6288c89e476e1dec232560caf1479eba9e144.zip
Merge pull request #29533 from nextcloud/enhancement/get-calendars-for-principal-api
Add IManager::getCalendarsForPrincipal API
-rw-r--r--lib/private/Calendar/Manager.php17
-rw-r--r--lib/public/Calendar/ICalendarProvider.php4
-rw-r--r--lib/public/Calendar/IManager.php11
3 files changed, 24 insertions, 8 deletions
diff --git a/lib/private/Calendar/Manager.php b/lib/private/Calendar/Manager.php
index 3fa4b55d1ea..16e142264aa 100644
--- a/lib/private/Calendar/Manager.php
+++ b/lib/private/Calendar/Manager.php
@@ -167,15 +167,14 @@ class Manager implements IManager {
$this->calendarLoaders = [];
}
- public function searchForPrincipal(ICalendarQuery $query): array {
+ public function getCalendarsForPrincipal(string $principalUri, array $calendarUris = []): array {
$context = $this->coordinator->getRegistrationContext();
if ($context === null) {
return [];
}
- /** @var CalendarQuery $query */
- $calendars = array_merge(
- ...array_map(function ($registration) use ($query) {
+ return array_merge(
+ ...array_map(function ($registration) use ($principalUri, $calendarUris) {
try {
/** @var ICalendarProvider $provider */
$provider = $this->container->get($registration->getService());
@@ -186,9 +185,17 @@ class Manager implements IManager {
return [];
}
- return $provider->getCalendars($query->getPrincipalUri(), $query->getCalendarUris());
+ return $provider->getCalendars($principalUri, $calendarUris);
}, $context->getCalendarProviders())
);
+ }
+
+ public function searchForPrincipal(ICalendarQuery $query): array {
+ /** @var CalendarQuery $query */
+ $calendars = $this->getCalendarsForPrincipal(
+ $query->getPrincipalUri(),
+ $query->getCalendarUris(),
+ );
$results = [];
/** @var ICalendar $calendar */
diff --git a/lib/public/Calendar/ICalendarProvider.php b/lib/public/Calendar/ICalendarProvider.php
index d135910b08c..14ef644e580 100644
--- a/lib/public/Calendar/ICalendarProvider.php
+++ b/lib/public/Calendar/ICalendarProvider.php
@@ -36,8 +36,8 @@ namespace OCP\Calendar;
interface ICalendarProvider {
/**
- * @param string $principalUri
- * @param string[] $calendarUris
+ * @param string $principalUri URI of the principal
+ * @param string[] $calendarUris optionally specify which calendars to load, or all if this array is empty
* @return ICalendar[]
* @since 23.0.0
*/
diff --git a/lib/public/Calendar/IManager.php b/lib/public/Calendar/IManager.php
index eb4113bba99..7f0eec80910 100644
--- a/lib/public/Calendar/IManager.php
+++ b/lib/public/Calendar/IManager.php
@@ -118,7 +118,7 @@ interface IManager {
/**
* @return ICalendar[]
* @since 13.0.0
- * @deprecated 23.0.0
+ * @deprecated 23.0.0 use \OCP\Calendar\IManager::getCalendarsForPrincipal
*/
public function getCalendars();
@@ -132,6 +132,15 @@ interface IManager {
public function clear();
/**
+ * @param string $principalUri URI of the principal
+ * @param string[] $calendarUris optionally specify which calendars to load, or all if this array is empty
+ *
+ * @return ICalendar[]
+ * @since 23.0.0
+ */
+ public function getCalendarsForPrincipal(string $principalUri, array $calendarUris = []): array;
+
+ /**
* Query a principals calendar(s)
*
* @param ICalendarQuery $query