From 5bc8510b3b72cf4bc96614784110d88de8feea87 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Wed, 17 Jun 2020 14:44:02 +0200 Subject: [PATCH] Load the app.php before running apps' boot method Some apps require the composer autoloader from app.php. If we run boot before including that file, classes and functions from dependencies won't be found. Signed-off-by: Christoph Wurst --- lib/private/legacy/OC_App.php | 7 ++++--- lib/public/AppFramework/Bootstrap/IBootstrap.php | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/private/legacy/OC_App.php b/lib/private/legacy/OC_App.php index a3c429c9ce..85fd8c99f0 100644 --- a/lib/private/legacy/OC_App.php +++ b/lib/private/legacy/OC_App.php @@ -149,9 +149,6 @@ class OC_App { // in case someone calls loadApp() directly self::registerAutoloading($app, $appPath); - /** @var \OC\AppFramework\Bootstrap\Coordinator $coordinator */ - $coordinator = \OC::$server->query(\OC\AppFramework\Bootstrap\Coordinator::class); - $coordinator->bootApp($app); if (is_file($appPath . '/appinfo/app.php')) { \OC::$server->getEventLogger()->start('load_app_' . $app, 'Load app: ' . $app); try { @@ -176,6 +173,10 @@ class OC_App { \OC::$server->getEventLogger()->end('load_app_' . $app); } + /** @var \OC\AppFramework\Bootstrap\Coordinator $coordinator */ + $coordinator = \OC::$server->query(\OC\AppFramework\Bootstrap\Coordinator::class); + $coordinator->bootApp($app); + $info = self::getAppInfo($app); if (!empty($info['activity']['filters'])) { foreach ($info['activity']['filters'] as $filter) { diff --git a/lib/public/AppFramework/Bootstrap/IBootstrap.php b/lib/public/AppFramework/Bootstrap/IBootstrap.php index 581c7d6636..770c830e73 100644 --- a/lib/public/AppFramework/Bootstrap/IBootstrap.php +++ b/lib/public/AppFramework/Bootstrap/IBootstrap.php @@ -38,6 +38,13 @@ interface IBootstrap { public function register(IRegistrationContext $context): void; /** + * Boot the application + * + * At this stage you can assume that all services are registered and the DI + * container(s) are ready to be queried. + * + * This is also the state where an optional `appinfo/app.php` was loaded. + * * @param IBootContext $context * * @since 20.0.0