From 86a5631431088da16447a228bb5e0dfd60f53378 Mon Sep 17 00:00:00 2001 From: printempw Date: Thu, 28 Jun 2018 23:32:27 +0800 Subject: [PATCH] Add composer support for plugins --- app/Providers/PluginServiceProvider.php | 5 +++++ app/Services/PluginManager.php | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/app/Providers/PluginServiceProvider.php b/app/Providers/PluginServiceProvider.php index 4ecd5a5c..e4e96709 100644 --- a/app/Providers/PluginServiceProvider.php +++ b/app/Providers/PluginServiceProvider.php @@ -38,6 +38,11 @@ class PluginServiceProvider extends ServiceProvider $this->registerPluginCallbackListener(); $this->registerClassAutoloader($src_paths); + // Register plugin's own composer autoloader + foreach ($plugins->getEnabledComposerAutoloaders() as $autoloader) { + require $autoloader; + } + $bootstrappers = $plugins->getEnabledBootstrappers(); foreach ($bootstrappers as $file) { diff --git a/app/Services/PluginManager.php b/app/Services/PluginManager.php index 47846652..426c6fc1 100644 --- a/app/Services/PluginManager.php +++ b/app/Services/PluginManager.php @@ -219,6 +219,24 @@ class PluginManager return $bootstrappers; } + /** + * Loads composer autoloader for the enabled plugins if exists. + * + * @return Collection + */ + public function getEnabledComposerAutoloaders() + { + $autoloaders = new Collection; + + foreach ($this->getEnabledPlugins() as $plugin) { + if ($this->filesystem->exists($file = $plugin->getPath().'/vendor/autoload.php')) { + $autoloaders->push($file); + } + } + + return $autoloaders; + } + /** * The id's of the enabled plugins. *