diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-07-14 17:06:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-14 17:06:06 +0200 |
commit | fba64a972f3d0be164d185d2770e2223f1bb8a39 (patch) | |
tree | 49be39c9c1bdd117c3c8fc60ee628626460f8056 /lib | |
parent | dca246946288e0167b700d82229626ccc18138ab (diff) | |
parent | d9cc2f02136c454984ef9e5a8682a0bf369fa9b6 (diff) | |
download | nextcloud-server-fba64a972f3d0be164d185d2770e2223f1bb8a39.tar.gz nextcloud-server-fba64a972f3d0be164d185d2770e2223f1bb8a39.zip |
Merge pull request #21812 from nextcloud/feature/noid/app-bootstrap-without-app.php
Do not load app.php if Application implements IBootstrap
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/AppFramework/Bootstrap/Coordinator.php | 8 | ||||
-rw-r--r-- | lib/private/legacy/OC_App.php | 15 |
2 files changed, 18 insertions, 5 deletions
diff --git a/lib/private/AppFramework/Bootstrap/Coordinator.php b/lib/private/AppFramework/Bootstrap/Coordinator.php index fb01012a46f..3edc0f97472 100644 --- a/lib/private/AppFramework/Bootstrap/Coordinator.php +++ b/lib/private/AppFramework/Bootstrap/Coordinator.php @@ -152,7 +152,6 @@ class Coordinator { $this->logger->logException($e, [ 'message' => "Could not boot $appId" . $e->getMessage(), ]); - return; } catch (Throwable $e) { $this->logger->logException($e, [ 'message' => "Could not boot $appId" . $e->getMessage(), @@ -160,4 +159,11 @@ class Coordinator { ]); } } + + public function isBootable(string $appId) { + $appNameSpace = App::buildAppNamespace($appId); + $applicationClassName = $appNameSpace . '\\AppInfo\\Application'; + return class_exists($applicationClassName) && + in_array(IBootstrap::class, class_implements($applicationClassName), true); + } } diff --git a/lib/private/legacy/OC_App.php b/lib/private/legacy/OC_App.php index f4308dae2fd..4110bee114d 100644 --- a/lib/private/legacy/OC_App.php +++ b/lib/private/legacy/OC_App.php @@ -149,7 +149,17 @@ class OC_App { // in case someone calls loadApp() directly self::registerAutoloading($app, $appPath); - if (is_file($appPath . '/appinfo/app.php')) { + /** @var \OC\AppFramework\Bootstrap\Coordinator $coordinator */ + $coordinator = \OC::$server->query(\OC\AppFramework\Bootstrap\Coordinator::class); + $isBootable = $coordinator->isBootable($app); + + $hasAppPhpFile = is_file($appPath . '/appinfo/app.php'); + + if ($isBootable && $hasAppPhpFile) { + \OC::$server->getLogger()->error('/appinfo/app.php is not loaded when \OCP\AppFramework\Bootstrap\IBootstrap on the application class is used. Migrate everything from app.php to the Application class.', [ + 'app' => $app, + ]); + } elseif ($hasAppPhpFile) { \OC::$server->getLogger()->debug('/appinfo/app.php is deprecated, use \OCP\AppFramework\Bootstrap\IBootstrap on the application class instead.', [ 'app' => $app, ]); @@ -175,9 +185,6 @@ 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); |