From 42a17065a386ed2d0c6691b9de06688f595fe03d Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Wed, 21 Jul 2021 16:36:12 +0200 Subject: [PATCH] Migrate app bootstrapping Signed-off-by: Daniel Kesselberg --- appinfo/app.php | 27 --------------------------- lib/AppInfo/Application.php | 37 +++++++++++++++++++++---------------- lib/Dav/PatchPlugin.php | 8 ++++---- 3 files changed, 25 insertions(+), 47 deletions(-) delete mode 100644 appinfo/app.php diff --git a/appinfo/app.php b/appinfo/app.php deleted file mode 100644 index f9e8863b..00000000 --- a/appinfo/app.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * @author John Molakvoæ - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -use OCA\Contacts\AppInfo\Application; - -$app = \OC::$server->query(Application::class); -$app->register(); 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());