summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/CalDAV/Schedule/Plugin.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/lib/CalDAV/Schedule/Plugin.php')
-rw-r--r--apps/dav/lib/CalDAV/Schedule/Plugin.php37
1 files changed, 27 insertions, 10 deletions
diff --git a/apps/dav/lib/CalDAV/Schedule/Plugin.php b/apps/dav/lib/CalDAV/Schedule/Plugin.php
index 3b2f0374b46..9c5968a333c 100644
--- a/apps/dav/lib/CalDAV/Schedule/Plugin.php
+++ b/apps/dav/lib/CalDAV/Schedule/Plugin.php
@@ -29,6 +29,7 @@ namespace OCA\DAV\CalDAV\Schedule;
use DateTimeZone;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\CalendarHome;
+use OCP\IConfig;
use Sabre\CalDAV\ICalendar;
use Sabre\DAV\INode;
use Sabre\DAV\IProperties;
@@ -47,15 +48,31 @@ use Sabre\VObject\ITip;
use Sabre\VObject\Parameter;
use Sabre\VObject\Property;
use Sabre\VObject\Reader;
+use function \Sabre\Uri\split;
class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
+ /**
+ * @var IConfig
+ */
+ private $config;
+
/** @var ITip\Message[] */
private $schedulingResponses = [];
/** @var string|null */
private $pathOfCalendarObjectChange = null;
+ public const CALENDAR_USER_TYPE = '{' . self::NS_CALDAV . '}calendar-user-type';
+ public const SCHEDULE_DEFAULT_CALENDAR_URL = '{' . Plugin::NS_CALDAV . '}schedule-default-calendar-URL';
+
+ /**
+ * @param IConfig $config
+ */
+ public function __construct(IConfig $config) {
+ $this->config = $config;
+ }
+
/**
* Initializes the plugin
*
@@ -81,13 +98,12 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
public function propFind(PropFind $propFind, INode $node) {
if ($node instanceof IPrincipal) {
// overwrite Sabre/Dav's implementation
- $propFind->handle('{' . self::NS_CALDAV . '}calendar-user-type', function () use ($node) {
+ $propFind->handle(self::CALENDAR_USER_TYPE, function () use ($node) {
if ($node instanceof IProperties) {
- $calendarUserType = '{' . self::NS_CALDAV . '}calendar-user-type';
- $props = $node->getProperties([$calendarUserType]);
+ $props = $node->getProperties([self::CALENDAR_USER_TYPE]);
- if (isset($props[$calendarUserType])) {
- return $props[$calendarUserType];
+ if (isset($props[self::CALENDAR_USER_TYPE])) {
+ return $props[self::CALENDAR_USER_TYPE];
}
}
@@ -261,7 +277,7 @@ EOF;
*/
public function propFindDefaultCalendarUrl(PropFind $propFind, INode $node) {
if ($node instanceof IPrincipal) {
- $propFind->handle('{' . self::NS_CALDAV . '}schedule-default-calendar-URL', function () use ($node) {
+ $propFind->handle(self::SCHEDULE_DEFAULT_CALENDAR_URL, function () use ($node) {
/** @var \OCA\DAV\CalDAV\Plugin $caldavPlugin */
$caldavPlugin = $this->server->getPlugin('caldav');
$principalUrl = $node->getPrincipalUrl();
@@ -272,12 +288,13 @@ EOF;
}
if (strpos($principalUrl, 'principals/users') === 0) {
- $uri = CalDavBackend::PERSONAL_CALENDAR_URI;
- $displayname = CalDavBackend::PERSONAL_CALENDAR_NAME;
+ list(, $userId) = split($principalUrl);
+ $uri = $this->config->getUserValue($userId, 'dav', 'defaultCalendar', CalDavBackend::PERSONAL_CALENDAR_URI);
+ $displayName = CalDavBackend::PERSONAL_CALENDAR_NAME;
} elseif (strpos($principalUrl, 'principals/calendar-resources') === 0 ||
strpos($principalUrl, 'principals/calendar-rooms') === 0) {
$uri = CalDavBackend::RESOURCE_BOOKING_CALENDAR_URI;
- $displayname = CalDavBackend::RESOURCE_BOOKING_CALENDAR_NAME;
+ $displayName = CalDavBackend::RESOURCE_BOOKING_CALENDAR_NAME;
} else {
// How did we end up here?
// TODO - throw exception or just ignore?
@@ -288,7 +305,7 @@ EOF;
$calendarHome = $this->server->tree->getNodeForPath($calendarHomePath);
if (!$calendarHome->childExists($uri)) {
$calendarHome->getCalDAVBackend()->createCalendar($principalUrl, $uri, [
- '{DAV:}displayname' => $displayname,
+ '{DAV:}displayname' => $displayName,
]);
}