From 862afd80b36b64262dcce03f15886d81b88080ae Mon Sep 17 00:00:00 2001
From: Robin McCorkell <rmccorkell@owncloud.com>
Date: Wed, 16 Sep 2015 10:47:46 +0100
Subject: [PATCH] Restore loadApp() autoload registration

Also changes the autoloader validRoots into a hashmap to try and reduce
duplicate entries
---
 lib/autoloader.php  | 9 ++++++---
 lib/private/app.php | 1 +
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/lib/autoloader.php b/lib/autoloader.php
index 41a040b3f5..8361f31b03 100644
--- a/lib/autoloader.php
+++ b/lib/autoloader.php
@@ -51,7 +51,9 @@ class Autoloader {
 	 * @param string[] $validRoots
 	 */
 	public function __construct(array $validRoots) {
-		$this->validRoots = $validRoots;
+		foreach ($validRoots as $root) {
+			$this->validRoots[$root] = true;
+		}
 	}
 
 	/**
@@ -60,7 +62,8 @@ class Autoloader {
 	 * @param string $root
 	 */
 	public function addValidRoot($root) {
-		$this->validRoots[] = stream_resolve_include_path($root);
+		$root = stream_resolve_include_path($root);
+		$this->validRoots[$root] = true;
 	}
 
 	/**
@@ -126,7 +129,7 @@ class Autoloader {
 	}
 
 	protected function isValidPath($fullPath) {
-		foreach ($this->validRoots as $root) {
+		foreach ($this->validRoots as $root => $true) {
 			if (substr($fullPath, 0, strlen($root) + 1) === $root . '/') {
 				return true;
 			}
diff --git a/lib/private/app.php b/lib/private/app.php
index e42fba525e..368b3220b4 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -131,6 +131,7 @@ class OC_App {
 	 */
 	public static function loadApp($app, $checkUpgrade = true) {
 		self::$loadedApps[] = $app;
+		\OC::$loader->addValidRoot(self::getAppPath($app)); // in case someone calls loadApp() directly
 		if (is_file(self::getAppPath($app) . '/appinfo/app.php')) {
 			\OC::$server->getEventLogger()->start('load_app_' . $app, 'Load app: ' . $app);
 			if ($checkUpgrade and self::shouldUpgrade($app)) {
-- 
GitLab