]> source.dussan.org Git - nextcloud-server.git/commitdiff
Load the app.php before running apps' boot method 21456/head
authorChristoph Wurst <christoph@winzerhof-wurst.at>
Wed, 17 Jun 2020 12:44:02 +0000 (14:44 +0200)
committerChristoph Wurst <christoph@winzerhof-wurst.at>
Wed, 17 Jun 2020 12:44:02 +0000 (14:44 +0200)
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 <christoph@winzerhof-wurst.at>
lib/private/legacy/OC_App.php
lib/public/AppFramework/Bootstrap/IBootstrap.php

index a3c429c9ce4803ae2b9d824cedb71db838b70d1d..85fd8c99f05342312f87e183c75e8964b22e251a 100644 (file)
@@ -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) {
index 581c7d6636ad63c821eef4e15096a860b19e7b3e..770c830e7354fca22daef3e17042e7fb1a8e026a 100644 (file)
@@ -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