diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-04-23 09:50:13 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-05-27 20:51:32 +0200 |
commit | c5d5c7dc1249f75922f85b99fe1f1d3f799b2793 (patch) | |
tree | 1dc61a02df578d7dbed40a381eaca181bdc7d669 /apps | |
parent | 9e00b51c879094a79371b0ed68065efed97a7ed5 (diff) | |
download | nextcloud-server-c5d5c7dc1249f75922f85b99fe1f1d3f799b2793.tar.gz nextcloud-server-c5d5c7dc1249f75922f85b99fe1f1d3f799b2793.zip |
Do not load calendar/addressbook plugins if not needed
Fixes #6711
Based on https://github.com/owncloud/core/pull/30149/commits/f0fb21cf3563088284c56be4eac48c7d9725cb21
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/Server.php | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 7fbd7671e8d..ae8e2927fe2 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -78,7 +78,6 @@ class Server { $this->baseUri = $baseUri; $logger = \OC::$server->getLogger(); $dispatcher = \OC::$server->getEventDispatcher(); - $sendInvitations = \OC::$server->getConfig()->getAppValue('dav', 'sendInvitations', 'yes') === 'yes'; $root = new RootCollection(); $this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root)); @@ -137,24 +136,28 @@ class Server { $this->server->addPlugin($acl); // calendar plugins - $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin()); - $this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); - $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin()); - if ($sendInvitations) { - $this->server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class)); + if ($this->requestIsForSubtree('calendars')) { + $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); + $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin()); + if (\OC::$server->getConfig()->getAppValue('dav', 'sendInvitations', 'yes') === 'yes') { + $this->server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class)); + } + $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin()); + $this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest())); + $this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin( + \OC::$server->getConfig(), + \OC::$server->getURLGenerator() + )); } - $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin()); - $this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin()); - $this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest())); - $this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin( - \OC::$server->getConfig(), - \OC::$server->getURLGenerator() - )); // addressbook plugins - $this->server->addPlugin(new \OCA\DAV\CardDAV\Plugin()); - $this->server->addPlugin(new VCFExportPlugin()); - $this->server->addPlugin(new ImageExportPlugin(new PhotoCache(\OC::$server->getAppDataDir('dav-photocache')))); + if ($this->requestIsForSubtree('addressbooks')) { + $this->server->addPlugin(new \OCA\DAV\CardDAV\Plugin()); + $this->server->addPlugin(new VCFExportPlugin()); + $this->server->addPlugin(new ImageExportPlugin(new PhotoCache(\OC::$server->getAppDataDir('dav-photocache')))); + } // system tags plugins $this->server->addPlugin(new SystemTagPlugin( @@ -280,4 +283,13 @@ class Server { public function exec() { $this->server->exec(); } + + /** + * @param string $subTree + * @return bool + */ + private function requestIsForSubtree($subTree) { + $subTree = trim($subTree, " /"); + return strpos($this->server->getRequestUri(), "$subTree/") === 0; + } } |