summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2018-04-23 09:50:13 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2018-05-27 20:51:32 +0200
commitc5d5c7dc1249f75922f85b99fe1f1d3f799b2793 (patch)
tree1dc61a02df578d7dbed40a381eaca181bdc7d669 /apps
parent9e00b51c879094a79371b0ed68065efed97a7ed5 (diff)
downloadnextcloud-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.php44
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;
+ }
}