diff options
-rw-r--r-- | lib/private/app.php | 10 | ||||
-rw-r--r-- | lib/private/route/router.php | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/private/app.php b/lib/private/app.php index 74b21b2b107..e51fe73cb19 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -74,6 +74,16 @@ class OC_App { } /** + * Check if an app is loaded + * + * @param string $app + * @return bool + */ + public static function isAppLoaded($app) { + return in_array($app, self::$loadedApps, true); + } + + /** * loads all apps * * @param array $types diff --git a/lib/private/route/router.php b/lib/private/route/router.php index 48992366092..33669452f2d 100644 --- a/lib/private/route/router.php +++ b/lib/private/route/router.php @@ -150,6 +150,12 @@ class Router implements IRouter { \OC::$server->getEventLogger()->start('loadroutes' . $requestedApp, 'Loading Routes'); foreach ($routingFiles as $app => $file) { if (!isset($this->loadedApps[$app])) { + if (!\OC_App::isAppLoaded($app)) { + // app MUST be loaded before app routes + // try again next time loadRoutes() is called + $this->loaded = false; + continue; + } $this->loadedApps[$app] = true; $this->useCollection($app); $this->requireRouteFile($file, $app); |