Skip to content

Commit 1593322

Browse files
committed
Load apps dav plugins on the old webdav route
Signed-off-by: Julius Härtl <jus@bitgrid.net>
1 parent 17eece7 commit 1593322

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

apps/dav/appinfo/v1/publicwebdav.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
\OC::$server->getMountManager(),
5353
\OC::$server->getTagManager(),
5454
\OC::$server->getRequest(),
55-
\OC::$server->getPreviewManager()
55+
\OC::$server->getPreviewManager(),
56+
\OC::$server->getEventDispatcher()
5657
);
5758

5859
$requestUri = \OC::$server->getRequest()->getRequestUri();

apps/dav/appinfo/v1/webdav.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
\OC::$server->getMountManager(),
4545
\OC::$server->getTagManager(),
4646
\OC::$server->getRequest(),
47-
\OC::$server->getPreviewManager()
47+
\OC::$server->getPreviewManager(),
48+
\OC::$server->getEventDispatcher()
4849
);
4950

5051
// Backends

apps/dav/lib/Connector/Sabre/ServerFactory.php

+21-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
namespace OCA\DAV\Connector\Sabre;
3131

3232
use OC\Files\Node\Folder;
33+
use OCA\DAV\AppInfo\PluginManager;
3334
use OCA\DAV\Files\BrowserErrorPagePlugin;
3435
use OCP\Files\Mount\IMountManager;
3536
use OCP\IConfig;
@@ -39,7 +40,9 @@
3940
use OCP\IRequest;
4041
use OCP\ITagManager;
4142
use OCP\IUserSession;
43+
use OCP\SabrePluginEvent;
4244
use Sabre\DAV\Auth\Plugin;
45+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
4346

4447
class ServerFactory {
4548
/** @var IConfig */
@@ -58,6 +61,8 @@ class ServerFactory {
5861
private $request;
5962
/** @var IPreview */
6063
private $previewManager;
64+
/** @var EventDispatcherInterface */
65+
private $eventDispatcher;
6166

6267
/**
6368
* @param IConfig $config
@@ -77,7 +82,8 @@ public function __construct(
7782
IMountManager $mountManager,
7883
ITagManager $tagManager,
7984
IRequest $request,
80-
IPreview $previewManager
85+
IPreview $previewManager,
86+
EventDispatcherInterface $eventDispatcher
8187
) {
8288
$this->config = $config;
8389
$this->logger = $logger;
@@ -87,6 +93,7 @@ public function __construct(
8793
$this->tagManager = $tagManager;
8894
$this->request = $request;
8995
$this->previewManager = $previewManager;
96+
$this->eventDispatcher = $eventDispatcher;
9097
}
9198

9299
/**
@@ -134,7 +141,7 @@ public function createServer($baseUri,
134141
$server->on('beforeMethod', function () use ($server, $objectTree, $viewCallBack) {
135142
// ensure the skeleton is copied
136143
$userFolder = \OC::$server->getUserFolder();
137-
144+
138145
/** @var \OC\Files\View $view */
139146
$view = $viewCallBack($server);
140147
if ($userFolder instanceof Folder && $userFolder->getPath() === $view->getRoot()) {
@@ -195,6 +202,18 @@ public function createServer($baseUri,
195202
);
196203
}
197204
$server->addPlugin(new \OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin());
205+
206+
// Load dav plugins from apps
207+
$event = new SabrePluginEvent($server);
208+
$this->eventDispatcher->dispatch($event);
209+
$pluginManager = new PluginManager(
210+
\OC::$server,
211+
\OC::$server->getAppManager()
212+
);
213+
foreach ($pluginManager->getAppPlugins() as $appPlugin) {
214+
$server->addPlugin($appPlugin);
215+
}
216+
198217
}, 30); // priority 30: after auth (10) and acl(20), before lock(50) and handling the request
199218
return $server;
200219
}

apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ protected function setUp(): void {
6767
$this->getMockBuilder(IRequest::class)
6868
->disableOriginalConstructor()
6969
->getMock(),
70-
\OC::$server->getPreviewManager()
70+
\OC::$server->getPreviewManager(),
71+
\OC::$server->getEventDispatcher()
7172
);
7273
}
7374

0 commit comments

Comments
 (0)