diff options
Diffstat (limited to 'apps/dav/lib/CalDAV/Schedule/Plugin.php')
-rw-r--r-- | apps/dav/lib/CalDAV/Schedule/Plugin.php | 37 |
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, ]); } |