From 42a17065a386ed2d0c6691b9de06688f595fe03d Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Wed, 21 Jul 2021 16:36:12 +0200 Subject: Migrate app bootstrapping Signed-off-by: Daniel Kesselberg --- lib/AppInfo/Application.php | 37 +++++++++++++++++++++---------------- lib/Dav/PatchPlugin.php | 8 ++++---- 2 files changed, 25 insertions(+), 20 deletions(-) (limited to 'lib') diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index e949cb69..e58cab05 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -26,12 +26,15 @@ use OCA\Contacts\Dav\PatchPlugin; use OCA\Contacts\Listener\LoadContactsFilesActions; use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCP\AppFramework\App; +use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; +use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\EventDispatcher\IEventDispatcher; use OCP\SabrePluginEvent; -class Application extends App { +class Application extends App implements IBootstrap { public const APP_ID = 'contacts'; - + public const AVAIL_SETTINGS = [ 'allowSocialSync' => 'yes', ]; @@ -40,23 +43,25 @@ class Application extends App { parent::__construct(self::APP_ID); } - public function register() { - $server = $this->getContainer()->getServer(); + public function register(IRegistrationContext $context): void { + $context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadContactsFilesActions::class); + } + + public function boot(IBootContext $context): void { + $appContainer = $context->getAppContainer(); + $serverContainer = $context->getServerContainer(); /** @var IEventDispatcher $eventDispatcher */ - $eventDispatcher = $server->query(IEventDispatcher::class); - $eventDispatcher->addListener('OCA\DAV\Connector\Sabre::addPlugin', function (SabrePluginEvent $event) { - $server = $event->getServer(); - - if ($server !== null) { - // We have to register the PatchPlugin here and not info.xml, - // because info.xml plugins are loaded, after the - // beforeMethod:* hook has already been emitted. - $server->addPlugin($this->getContainer()->query(PatchPlugin::class)); + $eventDispatcher = $serverContainer->get(IEventDispatcher::class); + $eventDispatcher->addListener('OCA\DAV\Connector\Sabre::addPlugin', static function (SabrePluginEvent $event) use ($appContainer) { + if ($event->getServer() === null) { + return; } - }); - // Register files action - $eventDispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadContactsFilesActions::class); + // We have to register the PatchPlugin here and not info.xml, + // because info.xml plugins are loaded, after the + // beforeMethod:* hook has already been emitted. + $event->getServer()->addPlugin($appContainer->get(PatchPlugin::class)); + }); } } diff --git a/lib/Dav/PatchPlugin.php b/lib/Dav/PatchPlugin.php index 16c25246..9f4f9d1f 100644 --- a/lib/Dav/PatchPlugin.php +++ b/lib/Dav/PatchPlugin.php @@ -87,9 +87,9 @@ class PatchPlugin extends ServerPlugin { * * @param PropPatch $propPatch * @param INode $node - * @return void + * @return bool */ - public function httpPatch(RequestInterface $request, ResponseInterface $response) { + public function httpPatch(RequestInterface $request, ResponseInterface $response): bool { $path = $request->getPath(); $node = $this->server->tree->getNodeForPath($path); @@ -127,7 +127,7 @@ class PatchPlugin extends ServerPlugin { if (count($properties) > 1) { throw new DAV\Exception\BadRequest('The specified property appear more than once'); } - + // Init if not in the vcard if (count($properties) === 0) { $vCard->add($propertyName, $propertyData); @@ -144,7 +144,7 @@ class PatchPlugin extends ServerPlugin { $oldData = $properties[0]->getValue(); $properties[0]->setRawMimeDirValue($oldData.$propertyData); } - + // Validate & write $vCard->validate(); $node->put($vCard->serialize()); -- cgit v1.2.3