From 866856035289196eb017446dec70ea45c234f0b1 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 2 May 2016 14:10:53 +0200 Subject: [PATCH 1/3] Keep the composer instance so we can add psr4 paths later --- lib/base.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/base.php b/lib/base.php index fb58177a43..badbe3cd1f 100644 --- a/lib/base.php +++ b/lib/base.php @@ -103,6 +103,9 @@ class OC { */ public static $loader = null; + /** @var \Composer\Autoload\ClassLoader $composerAutoloader */ + public static $composerAutoloader = null; + /** * @var \OC\Server */ @@ -493,7 +496,7 @@ class OC { self::$CLI = (php_sapi_name() == 'cli'); // Add default composer PSR-4 autoloader - require_once OC::$SERVERROOT . '/lib/composer/autoload.php'; + self::$composerAutoloader = require_once OC::$SERVERROOT . '/lib/composer/autoload.php'; try { self::initPaths(); From ee3457aec08173bdaddde803ba3bfbf0e898b899 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 2 May 2016 14:11:34 +0200 Subject: [PATCH 2/3] Register the PSR-4 path on loadApp --- lib/private/legacy/app.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index 246bf97ee9..5688747c88 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -107,7 +107,7 @@ class OC_App { foreach($apps as $app) { $path = self::getAppPath($app); if($path !== false) { - \OC::$loader->addValidRoot($path); + self::registerAutoloading($app, $path); } } @@ -136,7 +136,10 @@ class OC_App { if($appPath === false) { return; } - \OC::$loader->addValidRoot($appPath); // in case someone calls loadApp() directly + + // in case someone calls loadApp() directly + self::registerAutoloading($app, $appPath); + if (is_file($appPath . '/appinfo/app.php')) { \OC::$server->getEventLogger()->start('load_app_' . $app, 'Load app: ' . $app); if ($checkUpgrade and self::shouldUpgrade($app)) { @@ -154,6 +157,22 @@ class OC_App { } } + /** + * @param string $app + * @param string $path + */ + protected static function registerAutoloading($app, $path) { + // Register on PSR-4 composer autoloader + $appNamespace = \OC\AppFramework\App::buildAppNamespace($app); + \OC::$composerAutoloader->addPsr4($appNamespace . '\\', $path . '/src/', true); + if (defined('PHPUNIT_RUN')) { + \OC::$composerAutoloader->addPsr4($appNamespace . '\\Tests\\', $path . '/tests/', true); + } + + // Register on legacy autoloader + \OC::$loader->addValidRoot($path); + } + /** * Load app.php from the given app * From d879354ccb19278a45fc28ac9fcf12ec4c0876ea Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 2 May 2016 15:45:52 +0200 Subject: [PATCH 3/3] Use lib/ instead of src/ because that is what people are used to --- lib/private/legacy/app.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index 5688747c88..09e6f88969 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -164,7 +164,7 @@ class OC_App { protected static function registerAutoloading($app, $path) { // Register on PSR-4 composer autoloader $appNamespace = \OC\AppFramework\App::buildAppNamespace($app); - \OC::$composerAutoloader->addPsr4($appNamespace . '\\', $path . '/src/', true); + \OC::$composerAutoloader->addPsr4($appNamespace . '\\', $path . '/lib/', true); if (defined('PHPUNIT_RUN')) { \OC::$composerAutoloader->addPsr4($appNamespace . '\\Tests\\', $path . '/tests/', true); }