summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2020-07-14 17:06:06 +0200
committerGitHub <noreply@github.com>2020-07-14 17:06:06 +0200
commitfba64a972f3d0be164d185d2770e2223f1bb8a39 (patch)
tree49be39c9c1bdd117c3c8fc60ee628626460f8056 /lib
parentdca246946288e0167b700d82229626ccc18138ab (diff)
parentd9cc2f02136c454984ef9e5a8682a0bf369fa9b6 (diff)
downloadnextcloud-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.php8
-rw-r--r--lib/private/legacy/OC_App.php15
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);